fix tables

a|b|c
d|e|f is now a table
db4
Doug Coleman 2008-02-26 17:20:34 -06:00
parent 635b02ca27
commit 2d716e1b6a
2 changed files with 43 additions and 9 deletions

View File

@ -24,3 +24,19 @@ IN: temporary
[ "<p>foo</p>\n<p>bar</p>" ] [ "foo\n\n\nbar" parse-farkup ] unit-test
[ "" ] [ "" parse-farkup ] unit-test
[ "<p>|a</p>" ]
[ "|a" parse-farkup ] unit-test
[ "<p>|a|</p>" ]
[ "|a|" parse-farkup ] unit-test
[ "<table><tr><td>a</td><td>b</td></tr></table>" ]
[ "a|b" parse-farkup ] unit-test
[ "<table><tr><td>a</td><td>b</td></tr></table>\n<table><tr><td>c</td><td>d</td></tr></table>" ]
[ "a|b\nc|d" parse-farkup ] unit-test
[ "<table><tr><td>a</td><td>b</td></tr></table>\n<table><tr><td>c</td><td>d</td></tr></table>\n" ]
[ "a|b\nc|d\n" parse-farkup ] unit-test

View File

@ -82,15 +82,16 @@ MEMO: list ( -- parser )
list-item "\n" token hide list-of
[ "ul" surround-with-foo ] action ;
MEMO: table-column ( -- parser ) [ "|" token text ] seq* ;
MEMO: table-column ( -- parser )
text [ "td" surround-with-foo ] action ;
MEMO: table-row ( -- parser )
[
"|"
] seq* ;
table-column "|" token hide list-of* ,
] seq* [ "tr" surround-with-foo ] action ;
MEMO: table ( -- parser )
[
"|"
] seq* ;
table-row repeat1 [ "table" surround-with-foo ] action ;
MEMO: code ( -- parser )
[
@ -122,9 +123,26 @@ MEMO: paragraph ( -- parser )
MEMO: farkup ( -- parser )
[
list , h1 , h2 , h3 , h4 , code , paragraph , 2nl , nl ,
list , table , h1 , h2 , h3 , h4 , code , paragraph , 2nl , nl ,
] choice* repeat0 "\n" token optional 2seq ;
: farkup. ( parse-result -- )
parse-result-ast
[ dup string? [ write ] [ drop ] if ] deep-each ;
: parse-farkup ( string -- string' )
farkup parse parse-result-ast
[ [ dup string? [ write ] [ drop ] if ] deep-each ] with-string-writer ;
farkup parse [ farkup. ] with-string-writer ;
! MEMO: table-column ( -- parser )
! text [ "td" surround-with-foo ] action ;
!
! MEMO: table-row ( -- parser )
! [
! "|" token hide ,
! table-column "|" token hide list-of ,
! "|" token "\n" token 2array choice hide ,
! ] seq* [ "tr" surround-with-foo ] action ;
!
! MEMO: table ( -- parser )
! table-row repeat1
! [ "table" surround-with-foo ] action ;