Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,40 +0,0 @@
|
|||
with Ada.Strings.Fixed;
|
||||
with Ada.Text_IO;
|
||||
with Templates_Parser;
|
||||
|
||||
procedure Csv2Html is
|
||||
use type Templates_Parser.Vector_Tag;
|
||||
|
||||
Chars : Templates_Parser.Vector_Tag;
|
||||
Speeches : Templates_Parser.Vector_Tag;
|
||||
|
||||
CSV_File : Ada.Text_IO.File_Type;
|
||||
begin
|
||||
-- read the csv data
|
||||
Ada.Text_IO.Open (File => CSV_File,
|
||||
Mode => Ada.Text_IO.In_File,
|
||||
Name => "data.csv");
|
||||
|
||||
-- fill the tags
|
||||
while not Ada.Text_IO.End_Of_File (CSV_File) loop
|
||||
declare
|
||||
Whole_Line : String := Ada.Text_IO.Get_Line (CSV_File);
|
||||
Comma_Pos : Natural := Ada.Strings.Fixed.Index (Whole_Line, ",");
|
||||
begin
|
||||
Chars := Chars & Whole_Line (Whole_Line'First .. Comma_Pos - 1);
|
||||
Speeches := Speeches & Whole_Line (Comma_Pos + 1 .. Whole_Line'Last);
|
||||
end;
|
||||
end loop;
|
||||
|
||||
Ada.Text_IO.Close (CSV_File);
|
||||
|
||||
-- build translation table and output html
|
||||
declare
|
||||
Translations : constant Templates_Parser.Translate_Table :=
|
||||
(1 => Templates_Parser.Assoc ("CHAR", Chars),
|
||||
2 => Templates_Parser.Assoc ("SPEECH", Speeches));
|
||||
begin
|
||||
Ada.Text_IO.Put_Line
|
||||
(Templates_Parser.Parse ("table.tmplt", Translations));
|
||||
end;
|
||||
end Csv2Html;
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<table>
|
||||
@@TABLE@@
|
||||
<tr>
|
||||
<td>@_WEB_ESCAPE:CHAR_@</td>
|
||||
<td>@_WEB_ESCAPE:SPEECH_@</td>
|
||||
</tr>
|
||||
@@END_TABLE@@
|
||||
</table>
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
<table>
|
||||
<tr>
|
||||
<td>Character</td>
|
||||
<td>Speech</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>The messiah! Show us the messiah!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Who are you?</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td>I'm his mother; that's who!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Behold his mother! Behold his mother!</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
Local $ascarray[4] = [34,38,60,62]
|
||||
$String = "Character,Speech" & @CRLF
|
||||
$String &= "The multitude,The messiah! Show us the messiah!" & @CRLF
|
||||
$String &= "Brians mother,<angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry>" & @CRLF
|
||||
$String &= "The multitude,Who are you?" & @CRLF
|
||||
$String &= "Brians mother,I'm his mother; that's who!" & @CRLF
|
||||
$String &= "The multitude,Behold his mother! Behold his mother!"
|
||||
For $i = 0 To UBound($ascarray) -1
|
||||
$String = Stringreplace($String, chr($ascarray[$i]), "&#"&$ascarray[$i]&";")
|
||||
Next
|
||||
$newstring = "<table>" & @CRLF
|
||||
$crlfsplit = StringSplit($String, @CRLF, 1)
|
||||
For $i = 1 To $crlfsplit[0]
|
||||
If $i = 1 Then $newstring &= "<thead>" & @CRLF
|
||||
$newstring &= "<tr>" & @CRLF
|
||||
$komsplit = StringSplit($crlfsplit[$i], ",")
|
||||
For $k = 1 To $komsplit[0]
|
||||
If $i = 1 Then
|
||||
$newstring &= "<th>" &$komsplit[$k] & "</th>" & @CRLF
|
||||
Else
|
||||
$newstring &= "<td>" &$komsplit[$k] & "</td>" & @CRLF
|
||||
EndIf
|
||||
Next
|
||||
$newstring &= "</tr>" & @CRLF
|
||||
If $i = 1 Then $newstring &= "</thead>" & @CRLF
|
||||
Next
|
||||
$newstring &= "</table>"
|
||||
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $newstring = ' & $newstring & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
|
||||
|
|
@ -7,10 +7,10 @@ std::string csvToHTML( const std::string & ) ;
|
|||
int main( ) {
|
||||
std::string text = "Character,Speech\n"
|
||||
"The multitude,The messiah! Show us the messiah!\n"
|
||||
"Brians mother,<angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry>\n"
|
||||
"The multitude,Who are you?\n"
|
||||
"Brians mother,I'm his mother; that's who!\n"
|
||||
"The multitude,Behold his mother! Behold his mother!\n" ;
|
||||
"Brians mother,<angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry>\n"
|
||||
"The multitude,Who are you?\n"
|
||||
"Brians mother,I'm his mother; that's who!\n"
|
||||
"The multitude,Behold his mother! Behold his mother!\n" ;
|
||||
std::cout << csvToHTML( text ) ;
|
||||
return 0 ;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,26 +1,26 @@
|
|||
<table>
|
||||
<tr>
|
||||
<th>Character</th>
|
||||
<th>Speech</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>The messiah! Show us the messiah!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Who are you?</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td>I'm his mother; that's who!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Behold his mother! Behold his mother!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Character</th>
|
||||
<th>Speech</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>The messiah! Show us the messiah!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Who are you?</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td>I'm his mother; that's who!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Behold his mother! Behold his mother!</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,29 +1,29 @@
|
|||
#include <stdio.h>
|
||||
|
||||
const char *input =
|
||||
"Character,Speech\n"
|
||||
"The multitude,The messiah! Show us the messiah!\n"
|
||||
"Brians mother,<angry>Now you listen here! He's not the messiah; "
|
||||
"he's a very naughty boy! Now go away!</angry>\n"
|
||||
"The multitude,Who are you?\n"
|
||||
"Brians mother,I'm his mother; that's who!\n"
|
||||
"The multitude,Behold his mother! Behold his mother!";
|
||||
"Character,Speech\n"
|
||||
"The multitude,The messiah! Show us the messiah!\n"
|
||||
"Brians mother,<angry>Now you listen here! He's not the messiah; "
|
||||
"he's a very naughty boy! Now go away!</angry>\n"
|
||||
"The multitude,Who are you?\n"
|
||||
"Brians mother,I'm his mother; that's who!\n"
|
||||
"The multitude,Behold his mother! Behold his mother!";
|
||||
|
||||
int main()
|
||||
{
|
||||
const char *s;
|
||||
printf("<table>\n<tr><td>");
|
||||
for (s = input; *s; s++) {
|
||||
switch(*s) {
|
||||
case '\n': printf("</td></tr>\n<tr><td>"); break;
|
||||
case ',': printf("</td><td>"); break;
|
||||
case '<': printf("<"); break;
|
||||
case '>': printf(">"); break;
|
||||
case '&': printf("&"); break;
|
||||
default: putchar(*s);
|
||||
}
|
||||
}
|
||||
puts("</td></tr>\n</table>");
|
||||
const char *s;
|
||||
printf("<table>\n<tr><td>");
|
||||
for (s = input; *s; s++) {
|
||||
switch(*s) {
|
||||
case '\n': printf("</td></tr>\n<tr><td>"); break;
|
||||
case ',': printf("</td><td>"); break;
|
||||
case '<': printf("<"); break;
|
||||
case '>': printf(">"); break;
|
||||
case '&': printf("&"); break;
|
||||
default: putchar(*s);
|
||||
}
|
||||
}
|
||||
puts("</td></tr>\n</table>");
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
String::__defineGetter__ 'escaped', () ->
|
||||
this.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"') // rosettacode doesn't like "
|
||||
this.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"') // rosettacode doesn't like "
|
||||
|
||||
text = '''
|
||||
Character,Speech
|
||||
|
|
@ -19,21 +19,21 @@ header = lines.shift()
|
|||
|
||||
console.log """
|
||||
<table cellspacing="0">
|
||||
<thead>
|
||||
<th scope="col">#{header[0]}</th>
|
||||
<th scope="col">#{header[1]}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<thead>
|
||||
<th scope="col">#{header[0]}</th>
|
||||
<th scope="col">#{header[1]}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
"""
|
||||
|
||||
for line in lines
|
||||
[character, speech] = line
|
||||
console.log """
|
||||
<th scope="row">#{character}</th>
|
||||
<td>#{speech.escaped}</td>
|
||||
"""
|
||||
[character, speech] = line
|
||||
console.log """
|
||||
<th scope="row">#{character}</th>
|
||||
<td>#{speech.escaped}</td>
|
||||
"""
|
||||
|
||||
console.log """
|
||||
</tbody>
|
||||
</tbody>
|
||||
</table>
|
||||
"""
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ The multitude,Behold his mother! Behold his mother!")
|
|||
(defun split-string (string delim-char)
|
||||
(let ((result '()))
|
||||
(do* ((start 0 (1+ end))
|
||||
(end (position delim-char string)
|
||||
(position delim-char string :start start)))
|
||||
((not end) (reverse (cons (subseq string start) result)))
|
||||
(end (position delim-char string)
|
||||
(position delim-char string :start start)))
|
||||
((not end) (reverse (cons (subseq string start) result)))
|
||||
(push (subseq string start end) result))))
|
||||
|
||||
;;; HTML escape code modified from:
|
||||
|
|
@ -27,27 +27,27 @@ The multitude,Behold his mother! Behold his mother!")
|
|||
(let ((to-escape "<>&"))
|
||||
(flet ((needs-escape-p (char) (find char to-escape)))
|
||||
(with-output-to-string (out)
|
||||
(loop for start = 0 then (1+ pos)
|
||||
for pos = (position-if #'needs-escape-p in :start start)
|
||||
do (write-sequence in out :start start :end pos)
|
||||
when pos do (write-sequence (escape-char (char in pos)) out)
|
||||
while pos)))))
|
||||
(loop for start = 0 then (1+ pos)
|
||||
for pos = (position-if #'needs-escape-p in :start start)
|
||||
do (write-sequence in out :start start :end pos)
|
||||
when pos do (write-sequence (escape-char (char in pos)) out)
|
||||
while pos)))))
|
||||
|
||||
(defun html-row (values headerp)
|
||||
(let ((tag (if headerp "th" "td")))
|
||||
(with-output-to-string (out)
|
||||
(write-string "<tr>" out)
|
||||
(dolist (val values)
|
||||
(format out "<~A>~A</~A>" tag (escape val) tag))
|
||||
(format out "<~A>~A</~A>" tag (escape val) tag))
|
||||
(write-string "</tr>" out))))
|
||||
|
||||
(defun csv->html (csv)
|
||||
(let* ((lines (split-string csv #\Newline))
|
||||
(cols (split-string (first lines) #\,))
|
||||
(rows (mapcar (lambda (row) (split-string row #\,)) (rest lines))))
|
||||
(cols (split-string (first lines) #\,))
|
||||
(rows (mapcar (lambda (row) (split-string row #\,)) (rest lines))))
|
||||
(with-output-to-string (html)
|
||||
(format html "<table>~C" #\Newline)
|
||||
(format html "~C~A~C" #\Tab (html-row cols t) #\Newline)
|
||||
(dolist (row rows)
|
||||
(format html "~C~A~C" #\Tab (html-row row nil) #\Newline))
|
||||
(format html "~C~A~C" #\Tab (html-row row nil) #\Newline))
|
||||
(write-string "</table>" html))))
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
<table>
|
||||
<tr><th>Character</th><th>Speech</th></tr>
|
||||
<tr><td>The multitude</td><td>The messiah! Show us the messiah!</td></tr>
|
||||
<tr><td>Brians mother</td><td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td></tr>
|
||||
<tr><td>The multitude</td><td>Who are you?</td></tr>
|
||||
<tr><td>Brians mother</td><td>I'm his mother; that's who!</td></tr>
|
||||
<tr><td>The multitude</td><td>Behold his mother! Behold his mother!</td></tr>
|
||||
<tr><th>Character</th><th>Speech</th></tr>
|
||||
<tr><td>The multitude</td><td>The messiah! Show us the messiah!</td></tr>
|
||||
<tr><td>Brians mother</td><td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td></tr>
|
||||
<tr><td>The multitude</td><td>Who are you?</td></tr>
|
||||
<tr><td>Brians mother</td><td>I'm his mother; that's who!</td></tr>
|
||||
<tr><td>The multitude</td><td>Behold his mother! Behold his mother!</td></tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -5,25 +5,25 @@
|
|||
;; LISTS->HTML
|
||||
(define html 'html)
|
||||
(define (emit-tag tag html-proc content )
|
||||
(if (style tag)
|
||||
(push html (format "<%s style='%a'>" tag (style tag)))
|
||||
(push html (format "<%s>" tag )))
|
||||
(html-proc content)
|
||||
(push html (format "</%s> " tag )))
|
||||
|
||||
(if (style tag)
|
||||
(push html (format "<%s style='%a'>" tag (style tag)))
|
||||
(push html (format "<%s>" tag )))
|
||||
(html-proc content)
|
||||
(push html (format "</%s> " tag )))
|
||||
|
||||
;; html procs : 1 tag, 1 proc
|
||||
(define (h-raw content)
|
||||
(push html (format "%s" content)))
|
||||
(push html (format "%s" content)))
|
||||
(define (h-header headers)
|
||||
(for ((h headers)) (emit-tag 'th h-raw h)))
|
||||
(for ((h headers)) (emit-tag 'th h-raw h)))
|
||||
(define (h-row row)
|
||||
(for ((item row)) (emit-tag 'td h-raw item)))
|
||||
(for ((item row)) (emit-tag 'td h-raw item)))
|
||||
(define (h-table table )
|
||||
(emit-tag 'tr h-header (first table))
|
||||
(for ((row (rest table))) (emit-tag 'tr h-row row)))
|
||||
|
||||
(emit-tag 'tr h-header (first table))
|
||||
(for ((row (rest table))) (emit-tag 'tr h-row row)))
|
||||
|
||||
(define (html-dump) (string-join (stack->list html) " "))
|
||||
|
||||
|
||||
;; STYLES
|
||||
(style 'td "text-align:left")
|
||||
(style 'table "border-spacing: 10px;border:28px ridge orange") ;; special biblical border
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@
|
|||
>>#)
|
||||
|
||||
(define (task speech)
|
||||
(define table (csv->table speech))
|
||||
(stack html)
|
||||
(emit-tag 'table h-table table)
|
||||
(html-dump))
|
||||
|
||||
(define table (csv->table speech))
|
||||
(stack html)
|
||||
(emit-tag 'table h-table table)
|
||||
(html-dump))
|
||||
|
||||
(task MontyPython)
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
-export( [table_translation/1, task/0] ).
|
||||
|
||||
table_translation( CSV ) ->
|
||||
[Headers | Contents] = [string:tokens(X, ",") || X <- string:tokens( CSV, "\n")],
|
||||
Table = create_html_table:html_table( [{border, "1"}, {cellpadding, "10"}], Headers, Contents ),
|
||||
create_html_table:external_format( Table ).
|
||||
[Headers | Contents] = [string:tokens(X, ",") || X <- string:tokens( CSV, "\n")],
|
||||
Table = create_html_table:html_table( [{border, "1"}, {cellpadding, "10"}], Headers, Contents ),
|
||||
create_html_table:external_format( Table ).
|
||||
|
||||
task() -> table_translation( csv() ).
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
constant input = "Character,Speech\n" &
|
||||
"The multitude,The messiah! Show us the messiah!\n" &
|
||||
"Brians mother,<angry>Now you listen here! He's not the messiah; " &
|
||||
"he's a very naughty boy! Now go away!</angry>\n" &
|
||||
"The multitude,Who are you?\n" &
|
||||
"Brians mother,I'm his mother; that's who!\n" &
|
||||
"The multitude,Behold his mother! Behold his mother!"
|
||||
|
||||
puts(1,"<table>\n<tr><td>")
|
||||
for i = 1 to length(input) do
|
||||
switch input[i] do
|
||||
case '\n' then puts(1,"</td></tr>\n<tr><td>")
|
||||
case ',' then puts(1,"</td><td>")
|
||||
case '<' then puts(1,"<")
|
||||
case '>' then puts(1,">")
|
||||
case '&' then puts(1,"&")
|
||||
case else puts(1,input[i])
|
||||
end switch
|
||||
end for
|
||||
puts(1,"</td></tr>\n</table>")
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
<table>
|
||||
<tr><td>Character</td><td>Speech</td></tr>
|
||||
<tr><td>The multitude</td><td>The messiah! Show us the messiah!</td></tr>
|
||||
<tr><td>Brians mother</td><td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td></tr>
|
||||
<tr><td>The multitude</td><td>Who are you?</td></tr>
|
||||
<tr><td>Brians mother</td><td>I'm his mother; that's who!</td></tr>
|
||||
<tr><td>The multitude</td><td>Behold his mother! Behold his mother!</td></tr>
|
||||
</table>
|
||||
|
|
@ -5,18 +5,18 @@
|
|||
: END-ROW END-COLUMN ." </tr>" CR ;
|
||||
|
||||
: CSV2HTML
|
||||
." <table>" CR BEGIN-ROW
|
||||
BEGIN KEY DUP #EOF <> WHILE
|
||||
CASE
|
||||
10 OF END-ROW BEGIN-ROW ENDOF
|
||||
[CHAR] , OF END-COLUMN BEGIN-COLUMN ENDOF
|
||||
[CHAR] < OF ." <" ENDOF
|
||||
[CHAR] > OF ." >" ENDOF
|
||||
[CHAR] & OF ." &" ENDOF
|
||||
DUP EMIT
|
||||
ENDCASE
|
||||
REPEAT
|
||||
END-ROW ." </table>" CR
|
||||
." <table>" CR BEGIN-ROW
|
||||
BEGIN KEY DUP #EOF <> WHILE
|
||||
CASE
|
||||
10 OF END-ROW BEGIN-ROW ENDOF
|
||||
[CHAR] , OF END-COLUMN BEGIN-COLUMN ENDOF
|
||||
[CHAR] < OF ." <" ENDOF
|
||||
[CHAR] > OF ." >" ENDOF
|
||||
[CHAR] & OF ." &" ENDOF
|
||||
DUP EMIT
|
||||
ENDCASE
|
||||
REPEAT
|
||||
END-ROW ." </table>" CR
|
||||
;
|
||||
|
||||
CSV2HTML BYE
|
||||
|
|
|
|||
|
|
@ -1,71 +1,71 @@
|
|||
SUBROUTINE CSVTEXT2HTML(FNAME,HEADED) !Does not recognise quoted strings.
|
||||
SUBROUTINE CSVTEXT2HTML(FNAME,HEADED) !Does not recognise quoted strings.
|
||||
Converts without checking field counts, or noting special characters.
|
||||
CHARACTER*(*) FNAME !Names the input file.
|
||||
LOGICAL HEADED !Perhaps its first line is to be a heading.
|
||||
INTEGER MANY !How long is a piece of string?
|
||||
PARAMETER (MANY=666) !This should suffice.
|
||||
CHARACTER*(MANY) ALINE !A scratchpad for the input.
|
||||
INTEGER MARK(0:MANY + 1) !Fingers the commas on a line.
|
||||
INTEGER I,L,N !Assistants.
|
||||
CHARACTER*2 WOT(2) !I don't see why a "table datum" could not be for either.
|
||||
PARAMETER (WOT = (/"th","td"/)) !A table heding or a table datum
|
||||
INTEGER IT !But, one must select appropriately.
|
||||
INTEGER KBD,MSG,IN !A selection.
|
||||
COMMON /IOUNITS/ KBD,MSG,IN !The caller thus avoids collisions.
|
||||
OPEN(IN,FILE=FNAME,STATUS="OLD",ACTION="READ",ERR=661) !Go for the file.
|
||||
WRITE (MSG,1) !Start the blather.
|
||||
1 FORMAT ("<Table border=1>") !By stating that a table follows.
|
||||
MARK(0) = 0 !Syncopation for the comma fingers.
|
||||
N = 0 !No records read.
|
||||
CHARACTER*(*) FNAME !Names the input file.
|
||||
LOGICAL HEADED !Perhaps its first line is to be a heading.
|
||||
INTEGER MANY !How long is a piece of string?
|
||||
PARAMETER (MANY=666) !This should suffice.
|
||||
CHARACTER*(MANY) ALINE !A scratchpad for the input.
|
||||
INTEGER MARK(0:MANY + 1) !Fingers the commas on a line.
|
||||
INTEGER I,L,N !Assistants.
|
||||
CHARACTER*2 WOT(2) !I don't see why a "table datum" could not be for either.
|
||||
PARAMETER (WOT = (/"th","td"/)) !A table heding or a table datum
|
||||
INTEGER IT !But, one must select appropriately.
|
||||
INTEGER KBD,MSG,IN !A selection.
|
||||
COMMON /IOUNITS/ KBD,MSG,IN !The caller thus avoids collisions.
|
||||
OPEN(IN,FILE=FNAME,STATUS="OLD",ACTION="READ",ERR=661) !Go for the file.
|
||||
WRITE (MSG,1) !Start the blather.
|
||||
1 FORMAT ("<Table border=1>") !By stating that a table follows.
|
||||
MARK(0) = 0 !Syncopation for the comma fingers.
|
||||
N = 0 !No records read.
|
||||
|
||||
10 READ (IN,11,END = 20) L,ALINE(1:MIN(L,MANY)) !Carefully acquire some text.
|
||||
11 FORMAT (Q,A) !Q = number of characters yet to read, A = characters.
|
||||
N = N + 1 !So, a record has been read.
|
||||
IF (L.GT.MANY) THEN !Perhaps it is rather long?
|
||||
WRITE (MSG,12) N,L,MANY !Alas!
|
||||
12 FORMAT ("Line ",I0," has length ",I0,"! My limit is ",I0) !Squawk/
|
||||
L = MANY !The limit actually read.
|
||||
END IF !So much for paranoia.
|
||||
IF (N.EQ.1 .AND. HEADED) THEN !Is the first line to be treated specially?
|
||||
WRITE (MSG,*) "<tHead>" !Yep. Nominate a heading.
|
||||
IT = 1 !And select "th" rather than "td".
|
||||
ELSE !But mostly,
|
||||
IT = 2 !Just another row for the table.
|
||||
END IF !So much for the first line.
|
||||
NCOLS = 0 !No commas have been seen.
|
||||
DO I = 1,L !So scan the text for them.
|
||||
IF (ICHAR(ALINE(I:I)).EQ.ICHAR(",")) THEN !Here?
|
||||
NCOLS = NCOLS + 1 !Yes!
|
||||
MARK(NCOLS) = I !The texts are between commas.
|
||||
END IF !So much for that character.
|
||||
END DO !On to the next.
|
||||
NCOLS = NCOLS + 1 !This is why the + 1 for the size of MARK.
|
||||
MARK(NCOLS) = L + 1 !End-of-line is as if a comma was one further along.
|
||||
WRITE (MSG,13) !Now roll all the texts.
|
||||
1 (WOT(IT), !This starting a cell,
|
||||
2 ALINE(MARK(I - 1) + 1:MARK(I) - 1), !This being the text between the commas,
|
||||
3 WOT(IT), !And this ending each cell.
|
||||
4 I = 1,NCOLS), !For this number of columns.
|
||||
5 "/tr" !And this ends the row.
|
||||
13 FORMAT (" <tr>",666("<",A,">",A,"</",A,">")) !How long is a piece of string?
|
||||
IF (N.EQ.1 .AND. HEADED) WRITE (MSG,*) "</tHead>" !Finish the possible header.
|
||||
GO TO 10 !And try for another record.
|
||||
10 READ (IN,11,END = 20) L,ALINE(1:MIN(L,MANY)) !Carefully acquire some text.
|
||||
11 FORMAT (Q,A) !Q = number of characters yet to read, A = characters.
|
||||
N = N + 1 !So, a record has been read.
|
||||
IF (L.GT.MANY) THEN !Perhaps it is rather long?
|
||||
WRITE (MSG,12) N,L,MANY !Alas!
|
||||
12 FORMAT ("Line ",I0," has length ",I0,"! My limit is ",I0) !Squawk/
|
||||
L = MANY !The limit actually read.
|
||||
END IF !So much for paranoia.
|
||||
IF (N.EQ.1 .AND. HEADED) THEN !Is the first line to be treated specially?
|
||||
WRITE (MSG,*) "<tHead>" !Yep. Nominate a heading.
|
||||
IT = 1 !And select "th" rather than "td".
|
||||
ELSE !But mostly,
|
||||
IT = 2 !Just another row for the table.
|
||||
END IF !So much for the first line.
|
||||
NCOLS = 0 !No commas have been seen.
|
||||
DO I = 1,L !So scan the text for them.
|
||||
IF (ICHAR(ALINE(I:I)).EQ.ICHAR(",")) THEN !Here?
|
||||
NCOLS = NCOLS + 1 !Yes!
|
||||
MARK(NCOLS) = I !The texts are between commas.
|
||||
END IF !So much for that character.
|
||||
END DO !On to the next.
|
||||
NCOLS = NCOLS + 1 !This is why the + 1 for the size of MARK.
|
||||
MARK(NCOLS) = L + 1 !End-of-line is as if a comma was one further along.
|
||||
WRITE (MSG,13) !Now roll all the texts.
|
||||
1 (WOT(IT), !This starting a cell,
|
||||
2 ALINE(MARK(I - 1) + 1:MARK(I) - 1), !This being the text between the commas,
|
||||
3 WOT(IT), !And this ending each cell.
|
||||
4 I = 1,NCOLS), !For this number of columns.
|
||||
5 "/tr" !And this ends the row.
|
||||
13 FORMAT (" <tr>",666("<",A,">",A,"</",A,">")) !How long is a piece of string?
|
||||
IF (N.EQ.1 .AND. HEADED) WRITE (MSG,*) "</tHead>" !Finish the possible header.
|
||||
GO TO 10 !And try for another record.
|
||||
|
||||
20 CLOSE (IN) !Finished with input.
|
||||
WRITE (MSG,21) !And finished with output.
|
||||
21 FORMAT ("</Table>") !This writes starting at column one.
|
||||
RETURN !Done!
|
||||
20 CLOSE (IN) !Finished with input.
|
||||
WRITE (MSG,21) !And finished with output.
|
||||
21 FORMAT ("</Table>") !This writes starting at column one.
|
||||
RETURN !Done!
|
||||
Confusions.
|
||||
661 WRITE (MSG,*) "Can't open file ",FNAME !Alas.
|
||||
END !So much for the conversion.
|
||||
661 WRITE (MSG,*) "Can't open file ",FNAME !Alas.
|
||||
END !So much for the conversion.
|
||||
|
||||
INTEGER KBD,MSG,IN
|
||||
COMMON /IOUNITS/ KBD,MSG,IN
|
||||
KBD = 5 !Standard input.
|
||||
MSG = 6 !Standard output.
|
||||
IN = 10 !Some unspecial number.
|
||||
KBD = 5 !Standard input.
|
||||
MSG = 6 !Standard output.
|
||||
IN = 10 !Some unspecial number.
|
||||
|
||||
CALL CSVTEXT2HTML("Text.csv",.FALSE.) !The first line is not special.
|
||||
CALL CSVTEXT2HTML("Text.csv",.FALSE.) !The first line is not special.
|
||||
WRITE (MSG,*)
|
||||
CALL CSVTEXT2HTML("Text.csv",.TRUE.) !The first line is a heading.
|
||||
CALL CSVTEXT2HTML("Text.csv",.TRUE.) !The first line is a heading.
|
||||
END
|
||||
|
|
|
|||
|
|
@ -6,6 +6,6 @@ main = interact (\csv -> "<table>\n" ++
|
|||
(unlines $ map ((\cols -> "<tr>\n" ++
|
||||
(concatMap (\x -> " <td>" ++ concatMap (\c ->
|
||||
case c of {'<' -> "<"; '>' -> ">";
|
||||
'&' -> "&"; '"' -> """; _ -> [c]}) x
|
||||
'&' -> "&"; '"' -> """; _ -> [c]}) x
|
||||
++ "</td>\n") cols)
|
||||
++ "</tr>") . split (==',')) $ lines csv) ++ "</table>")
|
||||
|
|
|
|||
|
|
@ -4,83 +4,83 @@ import java.io.PrintStream;
|
|||
|
||||
class Csv2Html {
|
||||
|
||||
public static String escapeChars(String lineIn) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int lineLength = lineIn.length();
|
||||
for (int i = 0; i < lineLength; i++) {
|
||||
char c = lineIn.charAt(i);
|
||||
switch (c) {
|
||||
case '"':
|
||||
sb.append(""");
|
||||
break;
|
||||
case '&':
|
||||
sb.append("&");
|
||||
break;
|
||||
case '\'':
|
||||
sb.append("'");
|
||||
break;
|
||||
case '<':
|
||||
sb.append("<");
|
||||
break;
|
||||
case '>':
|
||||
sb.append(">");
|
||||
break;
|
||||
default: sb.append(c);
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
public static String escapeChars(String lineIn) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int lineLength = lineIn.length();
|
||||
for (int i = 0; i < lineLength; i++) {
|
||||
char c = lineIn.charAt(i);
|
||||
switch (c) {
|
||||
case '"':
|
||||
sb.append(""");
|
||||
break;
|
||||
case '&':
|
||||
sb.append("&");
|
||||
break;
|
||||
case '\'':
|
||||
sb.append("'");
|
||||
break;
|
||||
case '<':
|
||||
sb.append("<");
|
||||
break;
|
||||
case '>':
|
||||
sb.append(">");
|
||||
break;
|
||||
default: sb.append(c);
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static void tableHeader(PrintStream ps, String[] columns) {
|
||||
ps.print("<tr>");
|
||||
for (int i = 0; i < columns.length; i++) {
|
||||
ps.print("<th>");
|
||||
ps.print(columns[i]);
|
||||
ps.print("</th>");
|
||||
}
|
||||
ps.println("</tr>");
|
||||
}
|
||||
|
||||
public static void tableRow(PrintStream ps, String[] columns) {
|
||||
ps.print("<tr>");
|
||||
for (int i = 0; i < columns.length; i++) {
|
||||
ps.print("<td>");
|
||||
ps.print(columns[i]);
|
||||
ps.print("</td>");
|
||||
}
|
||||
ps.println("</tr>");
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
boolean withTableHeader = (args.length != 0);
|
||||
|
||||
InputStreamReader isr = new InputStreamReader(System.in);
|
||||
BufferedReader br = new BufferedReader(isr);
|
||||
PrintStream stdout = System.out;
|
||||
|
||||
stdout.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
|
||||
stdout.println("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
|
||||
stdout.println("<head><meta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\"/>");
|
||||
stdout.println("<title>Csv2Html</title>");
|
||||
stdout.println("<style type=\"text/css\">");
|
||||
stdout.println("body{background-color:#FFF;color:#000;font-family:OpenSans,sans-serif;font-size:10px;}");
|
||||
stdout.println("table{border:0.2em solid #2F6FAB;border-collapse:collapse;}");
|
||||
stdout.println("th{border:0.15em solid #2F6FAB;padding:0.5em;background-color:#E9E9E9;}");
|
||||
stdout.println("td{border:0.1em solid #2F6FAB;padding:0.5em;background-color:#F9F9F9;}</style>");
|
||||
stdout.println("</head><body><h1>Csv2Html</h1>");
|
||||
public static void tableHeader(PrintStream ps, String[] columns) {
|
||||
ps.print("<tr>");
|
||||
for (int i = 0; i < columns.length; i++) {
|
||||
ps.print("<th>");
|
||||
ps.print(columns[i]);
|
||||
ps.print("</th>");
|
||||
}
|
||||
ps.println("</tr>");
|
||||
}
|
||||
|
||||
stdout.println("<table>");
|
||||
String stdinLine;
|
||||
boolean firstLine = true;
|
||||
while ((stdinLine = br.readLine()) != null) {
|
||||
String[] columns = escapeChars(stdinLine).split(",");
|
||||
if (withTableHeader == true && firstLine == true) {
|
||||
tableHeader(stdout, columns);
|
||||
firstLine = false;
|
||||
} else {
|
||||
tableRow(stdout, columns);
|
||||
}
|
||||
}
|
||||
stdout.println("</table></body></html>");
|
||||
}
|
||||
public static void tableRow(PrintStream ps, String[] columns) {
|
||||
ps.print("<tr>");
|
||||
for (int i = 0; i < columns.length; i++) {
|
||||
ps.print("<td>");
|
||||
ps.print(columns[i]);
|
||||
ps.print("</td>");
|
||||
}
|
||||
ps.println("</tr>");
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
boolean withTableHeader = (args.length != 0);
|
||||
|
||||
InputStreamReader isr = new InputStreamReader(System.in);
|
||||
BufferedReader br = new BufferedReader(isr);
|
||||
PrintStream stdout = System.out;
|
||||
|
||||
stdout.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
|
||||
stdout.println("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
|
||||
stdout.println("<head><meta http-equiv=\"Content-type\" content=\"text/html;charset=UTF-8\"/>");
|
||||
stdout.println("<title>Csv2Html</title>");
|
||||
stdout.println("<style type=\"text/css\">");
|
||||
stdout.println("body{background-color:#FFF;color:#000;font-family:OpenSans,sans-serif;font-size:10px;}");
|
||||
stdout.println("table{border:0.2em solid #2F6FAB;border-collapse:collapse;}");
|
||||
stdout.println("th{border:0.15em solid #2F6FAB;padding:0.5em;background-color:#E9E9E9;}");
|
||||
stdout.println("td{border:0.1em solid #2F6FAB;padding:0.5em;background-color:#F9F9F9;}</style>");
|
||||
stdout.println("</head><body><h1>Csv2Html</h1>");
|
||||
|
||||
stdout.println("<table>");
|
||||
String stdinLine;
|
||||
boolean firstLine = true;
|
||||
while ((stdinLine = br.readLine()) != null) {
|
||||
String[] columns = escapeChars(stdinLine).split(",");
|
||||
if (withTableHeader == true && firstLine == true) {
|
||||
tableHeader(stdout, columns);
|
||||
firstLine = false;
|
||||
} else {
|
||||
tableRow(stdout, columns);
|
||||
}
|
||||
}
|
||||
stdout.println("</table></body></html>");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
var csv = "Character,Speech\n" +
|
||||
"The multitude,The messiah! Show us the messiah!\n" +
|
||||
"Brians mother,<angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry>\n" +
|
||||
"The multitude,Who are you?\n" +
|
||||
"Brians mother,I'm his mother; that's who!\n" +
|
||||
"The multitude,Behold his mother! Behold his mother!";
|
||||
"The multitude,The messiah! Show us the messiah!\n" +
|
||||
"Brians mother,<angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry>\n" +
|
||||
"The multitude,Who are you?\n" +
|
||||
"Brians mother,I'm his mother; that's who!\n" +
|
||||
"The multitude,Behold his mother! Behold his mother!";
|
||||
|
||||
var lines = csv.replace(/&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<table>
|
||||
<thead>
|
||||
<tr><td>Character</td><td>Speech</td></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>The multitude</td><td>The messiah! Show us the messiah!</td></tr>
|
||||
<tr><td>Brians mother</td><td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td></tr>
|
||||
<tr><td>The multitude</td><td>Who are you?</td></tr>
|
||||
<tr><td>Brians mother</td><td>I'm his mother; that's who!</td></tr>
|
||||
<tr><td>The multitude</td><td>Behold his mother! Behold his mother!</td></tr> </tbody>
|
||||
<thead>
|
||||
<tr><td>Character</td><td>Speech</td></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr><td>The multitude</td><td>The messiah! Show us the messiah!</td></tr>
|
||||
<tr><td>Brians mother</td><td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td></tr>
|
||||
<tr><td>The multitude</td><td>Who are you?</td></tr>
|
||||
<tr><td>Brians mother</td><td>I'm his mother; that's who!</td></tr>
|
||||
<tr><td>The multitude</td><td>Behold his mother! Behold his mother!</td></tr> </tbody>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,72 +1,72 @@
|
|||
module csv2html {
|
||||
nl$={
|
||||
}
|
||||
Repl$=lambda$ (a$) ->{
|
||||
a$=replace$("&", "&",a$)
|
||||
a$=replace$(">", ">",a$)
|
||||
a$=replace$("""", """,a$)
|
||||
// add any other replacement here
|
||||
=replace$("<", "<",a$)
|
||||
}
|
||||
Tag$=lambda$ nl$, repl$ (a$, b$, n=4)->{
|
||||
if n>0 then
|
||||
a$=rtrim$(replace$(nl$, nl$+string$(" ", n), nl$+a$))
|
||||
if right$(a$,2)<>nl$ then a$+=nl$
|
||||
else
|
||||
if right$(a$, 2)=nl$ then if left$(a$,2)<>nl$ then a$=nl$+a$
|
||||
end if
|
||||
prop=(,) : Read ? prop // forth parameter optional (we have to initalize first with an empty array)
|
||||
p=each(prop) : prop$="" // p is an iteration object.
|
||||
while p
|
||||
prop$+=" "+repl$(prop#val$(p^))+"="+quote$(repl$(prop#val$(p^+1)))
|
||||
p=each(prop,p^+2) // start new from p^+2 (p^ is the internal counter)
|
||||
end while
|
||||
="<"+b$+prop$+">"+a$+"</"+b$+">"+nl$
|
||||
}
|
||||
|
||||
// Prepare FILE csv
|
||||
tofile$={Character,Speech
|
||||
The multitude,The messiah! Show us the messiah!
|
||||
Brians mother,<angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry>
|
||||
The multitude,Who are you?
|
||||
Brians mother,I'm his mother; that's who!
|
||||
The multitude,Behold his mother! Behold his mother!
|
||||
}
|
||||
open "forHtml.csv" for wide output as #f
|
||||
Print #f, tofile$;
|
||||
close #f
|
||||
// prepare the input style for Input from file statement
|
||||
// "," - we use comma between fields
|
||||
// "." - for numbers we use dot for decimal separator
|
||||
// false - we didn't read json style strings to normal strings (so \n convert to code 13, \t to code 9)
|
||||
// true - we read strings unquote
|
||||
input with ",",".",false, true
|
||||
|
||||
// Read csv file
|
||||
i=1
|
||||
document export$=""
|
||||
Open "forHtml.csv" for wide input as #f
|
||||
while not eof(#f)
|
||||
input #f, a$, b$
|
||||
a$=repl$(a$)
|
||||
b$=repl$(b$)
|
||||
if i=1 then
|
||||
export$+=tag$(tag$(a$, "th", 0)+tag$(b$,"th", 0), "tr", 4)
|
||||
else
|
||||
export$+=tag$(tag$(a$, "td", 0)+tag$(b$,"td", 0), "tr", 4)
|
||||
end if
|
||||
i++
|
||||
end while
|
||||
close #f
|
||||
style$=tag$({TD {background-color:#ddddff; }
|
||||
thead TD {background-color:#ddffdd; text-align:center; }
|
||||
},"style",4,("type", "text/css"))
|
||||
title$= tag$("CSV to HTML translation - Extra Credit","title",0)
|
||||
Head$= tag$(title$+ style$,"head")
|
||||
html$={<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">}+nl$+tag$(head$+tag$(tag$(export$, "table"), "body"), "html")
|
||||
clipboard html$
|
||||
Report html$
|
||||
Print "Press Esc to exit browser"
|
||||
browser "about: "+html$
|
||||
nl$={
|
||||
}
|
||||
Repl$=lambda$ (a$) ->{
|
||||
a$=replace$("&", "&",a$)
|
||||
a$=replace$(">", ">",a$)
|
||||
a$=replace$("""", """,a$)
|
||||
// add any other replacement here
|
||||
=replace$("<", "<",a$)
|
||||
}
|
||||
Tag$=lambda$ nl$, repl$ (a$, b$, n=4)->{
|
||||
if n>0 then
|
||||
a$=rtrim$(replace$(nl$, nl$+string$(" ", n), nl$+a$))
|
||||
if right$(a$,2)<>nl$ then a$+=nl$
|
||||
else
|
||||
if right$(a$, 2)=nl$ then if left$(a$,2)<>nl$ then a$=nl$+a$
|
||||
end if
|
||||
prop=(,) : Read ? prop // forth parameter optional (we have to initalize first with an empty array)
|
||||
p=each(prop) : prop$="" // p is an iteration object.
|
||||
while p
|
||||
prop$+=" "+repl$(prop#val$(p^))+"="+quote$(repl$(prop#val$(p^+1)))
|
||||
p=each(prop,p^+2) // start new from p^+2 (p^ is the internal counter)
|
||||
end while
|
||||
="<"+b$+prop$+">"+a$+"</"+b$+">"+nl$
|
||||
}
|
||||
|
||||
// Prepare FILE csv
|
||||
tofile$={Character,Speech
|
||||
The multitude,The messiah! Show us the messiah!
|
||||
Brians mother,<angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry>
|
||||
The multitude,Who are you?
|
||||
Brians mother,I'm his mother; that's who!
|
||||
The multitude,Behold his mother! Behold his mother!
|
||||
}
|
||||
open "forHtml.csv" for wide output as #f
|
||||
Print #f, tofile$;
|
||||
close #f
|
||||
// prepare the input style for Input from file statement
|
||||
// "," - we use comma between fields
|
||||
// "." - for numbers we use dot for decimal separator
|
||||
// false - we didn't read json style strings to normal strings (so \n convert to code 13, \t to code 9)
|
||||
// true - we read strings unquote
|
||||
input with ",",".",false, true
|
||||
|
||||
// Read csv file
|
||||
i=1
|
||||
document export$=""
|
||||
Open "forHtml.csv" for wide input as #f
|
||||
while not eof(#f)
|
||||
input #f, a$, b$
|
||||
a$=repl$(a$)
|
||||
b$=repl$(b$)
|
||||
if i=1 then
|
||||
export$+=tag$(tag$(a$, "th", 0)+tag$(b$,"th", 0), "tr", 4)
|
||||
else
|
||||
export$+=tag$(tag$(a$, "td", 0)+tag$(b$,"td", 0), "tr", 4)
|
||||
end if
|
||||
i++
|
||||
end while
|
||||
close #f
|
||||
style$=tag$({TD {background-color:#ddddff; }
|
||||
thead TD {background-color:#ddffdd; text-align:center; }
|
||||
},"style",4,("type", "text/css"))
|
||||
title$= tag$("CSV to HTML translation - Extra Credit","title",0)
|
||||
Head$= tag$(title$+ style$,"head")
|
||||
html$={<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">}+nl$+tag$(head$+tag$(tag$(export$, "table"), "body"), "html")
|
||||
clipboard html$
|
||||
Report html$
|
||||
Print "Press Esc to exit browser"
|
||||
browser "about: "+html$
|
||||
}
|
||||
csv2html
|
||||
|
|
|
|||
|
|
@ -1,25 +1,25 @@
|
|||
<table>
|
||||
<tr>
|
||||
<th>Character</th>
|
||||
<th>Speech</th>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>The messiah! Show us the messiah!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Who are you?</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td>I'm his mother; that's who!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Behold his mother! Behold his mother!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>Character</th>
|
||||
<th>Speech</th>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>The messiah! Show us the messiah!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Who are you?</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td>I'm his mother; that's who!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Behold his mother! Behold his mother!</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
#A translation of the C code posted
|
||||
html_table := proc(str)
|
||||
local char;
|
||||
local char;
|
||||
printf("<table>\n<tr><td>");
|
||||
for char in str do
|
||||
if char = "\n" then
|
||||
printf("</td></tr>\n<tr><td>")
|
||||
printf("</td></tr>\n<tr><td>")
|
||||
elif char = "," then
|
||||
printf("</td><td>")
|
||||
elif char = "<" then
|
||||
|
|
@ -12,7 +12,7 @@ html_table := proc(str)
|
|||
elif char = ">" then
|
||||
printf(">")
|
||||
elif char = "&" then
|
||||
printf("&")
|
||||
printf("&")
|
||||
else
|
||||
printf(char)
|
||||
end if;
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
// a method that converts a csv row into a html table row as a string
|
||||
def toHtmlRow(record, tag)
|
||||
htmlrow = "\t<tr>\n"
|
||||
htmlrow = "\t<tr>\n"
|
||||
|
||||
// loop through the values in the current csv row
|
||||
for i in range(1, len(record))
|
||||
htmlrow = htmlrow + "\t\t<" + tag + ">" + (record ~ i) + "</" + tag + ">\n"
|
||||
end for
|
||||
// loop through the values in the current csv row
|
||||
for i in range(1, len(record))
|
||||
htmlrow = htmlrow + "\t\t<" + tag + ">" + (record ~ i) + "</" + tag + ">\n"
|
||||
end for
|
||||
|
||||
return htmlrow + "\t</tr>\n"
|
||||
return htmlrow + "\t</tr>\n"
|
||||
end def
|
||||
|
||||
// get the name of the csv file then open it
|
||||
|
|
@ -23,7 +23,7 @@ htmltable = (htmltable + toHtmlRow(#0, "th"))
|
|||
|
||||
// add all other rows to the table
|
||||
for i in range(1, $dbsize)
|
||||
htmltable = (htmltable + toHtmlRow(#i, "td"))
|
||||
htmltable = (htmltable + toHtmlRow(#i, "td"))
|
||||
end for
|
||||
|
||||
// close the html table
|
||||
|
|
|
|||
|
|
@ -1,28 +1,28 @@
|
|||
<html>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Character</th>
|
||||
<th>Speech</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>The messiah! Show us the messiah!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Who are you?</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td>I'm his mother; that's who!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Behold his mother! Behold his mother!</td>
|
||||
</tr>
|
||||
</table>
|
||||
<table>
|
||||
<tr>
|
||||
<th>Character</th>
|
||||
<th>Speech</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>The messiah! Show us the messiah!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Who are you?</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Brians mother</td>
|
||||
<td>I'm his mother; that's who!</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>The multitude</td>
|
||||
<td>Behold his mother! Behold his mother!</td>
|
||||
</tr>
|
||||
</table>
|
||||
</html>
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
Import-Csv -Path .\csv_html_test.csv | ConvertTo-Html -Fragment | Out-File .\csv_html_test.html
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
<table>
|
||||
<colgroup>
|
||||
<col/>
|
||||
<col/>
|
||||
</colgroup>
|
||||
<tr><th>Character</th><th>Speech </th></tr>
|
||||
<tr><td>The multitude</td><td>The messiah! Show us the messiah! </td></tr>
|
||||
<tr><td>Brians mother</td><td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry> </td></tr>
|
||||
|
||||
<tr><td>The multitude</td><td>Who are you? </td></tr>
|
||||
<tr><td>Brians mother</td><td>I'm his mother; that's who! </td></tr>
|
||||
<tr><td>The multitude</td><td>Behold his mother! Behold his mother! </td></tr>
|
||||
</table>
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
$htmlformat = '<title>Csv to Html</title>'
|
||||
$htmlformat += '<style type="text/css">'
|
||||
$htmlformat += 'BODY{background-color:#663300;color:#FFCC00;font-family:Arial Narrow,sans-serif;font-size:17px;}'
|
||||
$htmlformat += 'TABLE{border-width: 3px;border-style: solid;border-color: black;border-collapse: collapse;}'
|
||||
$htmlformat += 'TH{border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color:#663333}'
|
||||
$htmlformat += 'TD{border-width: 1px;padding: 8px;border-style: solid;border-color: black;background-color:#660033}'
|
||||
$htmlformat += '</style>'
|
||||
Import-Csv -Path .\csv_html_test.csv | ConvertTo-Html -Head $htmlformat -Body '<h1>Csv to Html</h1>' | Out-File .\csv_html_test.html
|
||||
Invoke-Expression .\csv_html_test.html
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>Csv to Html</title><style type="text/css">BODY{background-color:#663300;color:#FFCC00;font-family:Arial Narrow,sans-serif;font-size:17px;}TABLE{border-width: 3px;border-style: solid;border-color: black;border-collapse: collapse;}TH{border-width: 1px;padding: 3px;border-style: solid;border-color: black;background-color:#663333}TD{border-width: 1px;padding: 8px;border-style: solid;border-color: black;background-color:#660033}</style>
|
||||
</head><body>
|
||||
<h1>Csv to Html</h1>
|
||||
<table>
|
||||
<colgroup>
|
||||
<col/>
|
||||
<col/>
|
||||
</colgroup>
|
||||
<tr><th>Character</th><th>Speech </th></tr>
|
||||
|
||||
<tr><td>The multitude</td><td>The messiah! Show us the messiah! </td></tr>
|
||||
<tr><td>Brians mother</td><td><angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry> </td></tr>
|
||||
<tr><td>The multitude</td><td>Who are you? </td></tr>
|
||||
<tr><td>Brians mother</td><td>I'm his mother; that's who! </td></tr>
|
||||
<tr><td>The multitude</td><td>Behold his mother! Behold his mother! </td></tr>
|
||||
|
||||
</table>
|
||||
</body></html>
|
||||
|
|
@ -1,52 +1,52 @@
|
|||
csv_html :-
|
||||
L = "Character,Speech
|
||||
L = "Character,Speech
|
||||
The multitude,The messiah! Show us the messiah!
|
||||
Brians mother,<angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry>
|
||||
The multitude,Who are you?
|
||||
Brians mother,I'm his mother; that's who!
|
||||
The multitude,Behold his mother! Behold his mother!",
|
||||
|
||||
csv_html(L, Out, []),
|
||||
string_to_list(Str, Out),
|
||||
writeln(Str).
|
||||
csv_html(L, Out, []),
|
||||
string_to_list(Str, Out),
|
||||
writeln(Str).
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% simple HTML
|
||||
%
|
||||
csv_html(L) -->
|
||||
"<TABLE>\n",
|
||||
csv_tr(L),
|
||||
"</TABLE>".
|
||||
"<TABLE>\n",
|
||||
csv_tr(L),
|
||||
"</TABLE>".
|
||||
|
||||
csv_tr([]) --> [].
|
||||
|
||||
csv_tr(L) -->
|
||||
"<TR>\n",
|
||||
csv_td(L, S),
|
||||
"\n</TR>\n",
|
||||
csv_tr(S).
|
||||
"<TR>\n",
|
||||
csv_td(L, S),
|
||||
"\n</TR>\n",
|
||||
csv_tr(S).
|
||||
|
||||
csv_td(L, S) -->
|
||||
"<TD>",
|
||||
csv_td_in(L, S),
|
||||
"</TD>".
|
||||
"<TD>",
|
||||
csv_td_in(L, S),
|
||||
"</TD>".
|
||||
|
||||
csv_td_in([], []) --> [].
|
||||
|
||||
csv_td_in([10|L], L) --> [].
|
||||
|
||||
csv_td_in([44|L], S) -->
|
||||
"</TD><TD>",
|
||||
csv_td_in(L,S).
|
||||
"</TD><TD>",
|
||||
csv_td_in(L,S).
|
||||
|
||||
csv_td_in([60|T], S) -->
|
||||
"<",
|
||||
csv_td_in(T, S).
|
||||
"<",
|
||||
csv_td_in(T, S).
|
||||
|
||||
csv_td_in([62|T], S) -->
|
||||
">",
|
||||
csv_td_in(T, S).
|
||||
">",
|
||||
csv_td_in(T, S).
|
||||
|
||||
csv_td_in([H|T], S) -->
|
||||
[H],
|
||||
csv_td_in(T, S).
|
||||
[H],
|
||||
csv_td_in(T, S).
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
csv_html_plus :-
|
||||
L =
|
||||
L =
|
||||
"Character,Speech
|
||||
The multitude,The messiah! Show us the messiah!
|
||||
Brians mother,<angry>Now you listen here! He's not the messiah; he's a very naughty boy! Now go away!</angry>
|
||||
|
|
@ -7,84 +7,84 @@ The multitude,Who are you?
|
|||
Brians mother,I'm his mother; that's who!
|
||||
The multitude,Behold his mother! Behold his mother!",
|
||||
|
||||
csv_html_plus(L, Out1, []),
|
||||
string_to_list(Str1, Out1),
|
||||
writeln(Str1).
|
||||
csv_html_plus(L, Out1, []),
|
||||
string_to_list(Str1, Out1),
|
||||
writeln(Str1).
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% HTML +
|
||||
%
|
||||
csv_html_plus(L) -->
|
||||
"<TABLE>\n",
|
||||
csv_head(L, R),
|
||||
csv_body(R),
|
||||
"</TABLE>".
|
||||
"<TABLE>\n",
|
||||
csv_head(L, R),
|
||||
csv_body(R),
|
||||
"</TABLE>".
|
||||
|
||||
|
||||
csv_head(L, R) -->
|
||||
"<THEAD>\n",
|
||||
csv_head_tr(L, R),
|
||||
"</THEAD>\n".
|
||||
"<THEAD>\n",
|
||||
csv_head_tr(L, R),
|
||||
"</THEAD>\n".
|
||||
|
||||
|
||||
csv_head_tr(L, R) -->
|
||||
"<TR>\n",
|
||||
csv_head_th(L, R),
|
||||
"\n</TR>\n".
|
||||
"<TR>\n",
|
||||
csv_head_th(L, R),
|
||||
"\n</TR>\n".
|
||||
|
||||
|
||||
csv_head_th(L, S) -->
|
||||
"<TH style='color:#000; background:#FF0;'>",
|
||||
csv_head_th_in(L, S),
|
||||
"</TH>".
|
||||
"<TH style='color:#000; background:#FF0;'>",
|
||||
csv_head_th_in(L, S),
|
||||
"</TH>".
|
||||
|
||||
csv_head_th_in([], []) --> [].
|
||||
|
||||
csv_head_th_in([10|L], L) --> [].
|
||||
|
||||
csv_head_th_in([44|L], S) -->
|
||||
"</TH><TH style='color:#000; background:#FF0;'>",
|
||||
csv_head_th_in(L,S).
|
||||
"</TH><TH style='color:#000; background:#FF0;'>",
|
||||
csv_head_th_in(L,S).
|
||||
|
||||
csv_head_th_in([H|T], S) -->
|
||||
[H],
|
||||
csv_head_th_in(T, S).
|
||||
[H],
|
||||
csv_head_th_in(T, S).
|
||||
|
||||
|
||||
csv_body(L) -->
|
||||
"<TBODY>\n",
|
||||
csv_body_tr(L),
|
||||
"</TBODY>\n".
|
||||
"<TBODY>\n",
|
||||
csv_body_tr(L),
|
||||
"</TBODY>\n".
|
||||
|
||||
csv_body_tr([]) --> [].
|
||||
|
||||
csv_body_tr(L) -->
|
||||
"<TR>\n",
|
||||
csv_body_td(L, S),
|
||||
"\n</TR>\n",
|
||||
csv_body_tr(S).
|
||||
"<TR>\n",
|
||||
csv_body_td(L, S),
|
||||
"\n</TR>\n",
|
||||
csv_body_tr(S).
|
||||
|
||||
csv_body_td(L, S) -->
|
||||
"<TD style='color:#000; background:#8FF; border:1px #000 solid; padding:0.6em;'>",
|
||||
csv_body_td_in(L, S),
|
||||
"</TD>".
|
||||
"<TD style='color:#000; background:#8FF; border:1px #000 solid; padding:0.6em;'>",
|
||||
csv_body_td_in(L, S),
|
||||
"</TD>".
|
||||
|
||||
csv_body_td_in([], []) --> [].
|
||||
|
||||
csv_body_td_in([10|L], L) --> [].
|
||||
|
||||
csv_body_td_in([44|L], S) -->
|
||||
"</TD><TD style='color:#000; background:#8FF; border:1px #000 solid; padding:0.6em;'>",
|
||||
csv_body_td_in(L,S).
|
||||
"</TD><TD style='color:#000; background:#8FF; border:1px #000 solid; padding:0.6em;'>",
|
||||
csv_body_td_in(L,S).
|
||||
|
||||
csv_body_td_in([60|T], S) -->
|
||||
"<",
|
||||
csv_body_td_in(T, S).
|
||||
"<",
|
||||
csv_body_td_in(T, S).
|
||||
|
||||
csv_body_td_in([62|T], S) -->
|
||||
">",
|
||||
csv_body_td_in(T, S).
|
||||
">",
|
||||
csv_body_td_in(T, S).
|
||||
|
||||
csv_body_td_in([H|T], S) -->
|
||||
[H],
|
||||
csv_body_td_in(T, S).
|
||||
[H],
|
||||
csv_body_td_in(T, S).
|
||||
|
|
|
|||
|
|
@ -25,4 +25,4 @@ printf
|
|||
# that / at the end is just an unspace, you can omit it, but then you have to delete
|
||||
# all whitespace and comments between split(…) and .map
|
||||
.map({tag 'td', $^cell}))})\ # map those cells as td
|
||||
.join("\n"); # append a newline for nicer output
|
||||
.join("\n"); # append a newline for nicer output
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ The multitude,Who are you?
|
|||
Brians mother,I'm his mother; that's who!
|
||||
The multitude,Behold his mother! Behold his mother!"
|
||||
|
||||
k = instr(csv$,",") ' 2 exra lines to get heading
|
||||
k = instr(csv$,",") ' 2 exra lines to get heading
|
||||
csv$ = left$(csv$,k - 1) + "</th><th> + mid$(csv$,k + 1)
|
||||
|
||||
csv$ = strRep$(csv$,",","</td><td>")
|
||||
|
|
@ -15,10 +15,10 @@ wait
|
|||
' string replace rep str with
|
||||
' --------------------------------
|
||||
FUNCTION strRep$(strRep$,rep$,with$)
|
||||
ln = len(rep$)
|
||||
k = instr(strRep$,rep$)
|
||||
ln = len(rep$)
|
||||
k = instr(strRep$,rep$)
|
||||
while k
|
||||
strRep$ = left$(strRep$,k - 1) + with$ + mid$(strRep$,k + ln)
|
||||
k = instr(strRep$,rep$)
|
||||
strRep$ = left$(strRep$,k - 1) + with$ + mid$(strRep$,k + ln)
|
||||
k = instr(strRep$,rep$)
|
||||
WEND
|
||||
END FUNCTION
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ html::init
|
|||
puts [subst {
|
||||
[html::openTag table {summary="csv2html program output"}]
|
||||
[html::while {[rows size]} {
|
||||
[html::row {*}[html::quoteFormValue [rows get]]]
|
||||
[html::row {*}[html::quoteFormValue [rows get]]]
|
||||
}]
|
||||
[html::closeTag]
|
||||
}]
|
||||
|
|
|
|||
|
|
@ -37,9 +37,9 @@ foreach line [split $csvData "\n"] {
|
|||
# Generate the output
|
||||
puts [subst {
|
||||
[table {
|
||||
[tr [html::quoteFormValue [rows get]] {bgcolor="yellow"}]
|
||||
[html::while {[rows size]} {
|
||||
[tr [html::quoteFormValue [rows get]]]
|
||||
}]
|
||||
[tr [html::quoteFormValue [rows get]] {bgcolor="yellow"}]
|
||||
[html::while {[rows size]} {
|
||||
[tr [html::quoteFormValue [rows get]]]
|
||||
}]
|
||||
}]
|
||||
}]
|
||||
|
|
|
|||
|
|
@ -1,33 +0,0 @@
|
|||
Set objfso = CreateObject("Scripting.FileSystemObject")
|
||||
|
||||
parent_folder = objfso.GetParentFolderName(WScript.ScriptFullName) & "\"
|
||||
|
||||
Set objcsv = objfso.OpenTextFile(parent_folder & "in.csv",1,False)
|
||||
Set objhtml = objfso.OpenTextFile(paren_folder & "out.html",2,True)
|
||||
|
||||
objhtml.Write(csv_to_html(objcsv.ReadAll))
|
||||
|
||||
objcsv.Close
|
||||
objhtml.Close
|
||||
Set objfso = Nothing
|
||||
|
||||
Function csv_to_html(s)
|
||||
row = Split(s,vbCrLf)
|
||||
'write the header
|
||||
tmp = "<html><head><head/><body><table border=1 cellpadding=10 cellspacing=0>"
|
||||
For i = 0 To UBound(row)
|
||||
field = Split(row(i),",")
|
||||
If i = 0 Then
|
||||
tmp = tmp & "<tr><th>" & replace_chars(field(0)) & "</th><th>" & replace_chars(field(1)) & "</th><tr>"
|
||||
Else
|
||||
tmp = tmp & "<tr><td>" & replace_chars(field(0)) & "</td><td>" & replace_chars(field(1)) & "</td><tr>"
|
||||
End If
|
||||
Next
|
||||
'write the footer
|
||||
tmp = tmp & "</table></body></html>"
|
||||
csv_to_html = tmp
|
||||
End Function
|
||||
|
||||
Function replace_chars(s)
|
||||
replace_chars = Replace(Replace(s,"<","<"),">",">")
|
||||
End Function
|
||||
Loading…
Add table
Add a link
Reference in a new issue