make farkup pass the empty string
better handling of \n and special characters add escaped charsdb4
parent
a5807774e0
commit
59c0c66857
|
@ -6,7 +6,7 @@ IN: temporary
|
||||||
[ "<ul><li>foo</li><li>bar</li></ul>" ] [ "-foo\n-bar" parse-farkup ] unit-test
|
[ "<ul><li>foo</li><li>bar</li></ul>" ] [ "-foo\n-bar" parse-farkup ] unit-test
|
||||||
[ "<ul><li>foo</li><li>bar</li></ul>\n" ] [ "-foo\n-bar\n" parse-farkup ] unit-test
|
[ "<ul><li>foo</li><li>bar</li></ul>\n" ] [ "-foo\n-bar\n" parse-farkup ] unit-test
|
||||||
|
|
||||||
[ "<ul><li>foo</li></ul><p>\nbar\n</p>" ] [ "-foo\nbar\n" parse-farkup ] unit-test
|
[ "<ul><li>foo</li></ul>\n<p>bar\n</p>" ] [ "-foo\nbar\n" parse-farkup ] unit-test
|
||||||
[ "<p>*foo\nbar\n</p>" ] [ "*foo\nbar\n" parse-farkup ] unit-test
|
[ "<p>*foo\nbar\n</p>" ] [ "*foo\nbar\n" parse-farkup ] unit-test
|
||||||
[ "<p><strong>Wow!</strong></p>" ] [ "*Wow!*" parse-farkup ] unit-test
|
[ "<p><strong>Wow!</strong></p>" ] [ "*Wow!*" parse-farkup ] unit-test
|
||||||
[ "<p><em>Wow.</em></p>" ] [ "_Wow._" parse-farkup ] unit-test
|
[ "<p><em>Wow.</em></p>" ] [ "_Wow._" parse-farkup ] unit-test
|
||||||
|
@ -14,3 +14,13 @@ IN: temporary
|
||||||
[ "<p>*</p>" ] [ "*" parse-farkup ] unit-test
|
[ "<p>*</p>" ] [ "*" parse-farkup ] unit-test
|
||||||
[ "<p>*</p>" ] [ "\\*" parse-farkup ] unit-test
|
[ "<p>*</p>" ] [ "\\*" parse-farkup ] unit-test
|
||||||
[ "<p>**</p>" ] [ "\\**" parse-farkup ] unit-test
|
[ "<p>**</p>" ] [ "\\**" parse-farkup ] unit-test
|
||||||
|
|
||||||
|
[ "" ] [ "\n\n" parse-farkup ] unit-test
|
||||||
|
[ "\n" ] [ "\n\n\n" parse-farkup ] unit-test
|
||||||
|
[ "<p>foo</p><p>bar</p>" ] [ "foo\n\nbar" parse-farkup ] unit-test
|
||||||
|
|
||||||
|
[ "\n<p>bar\n</p>" ] [ "\nbar\n" parse-farkup ] unit-test
|
||||||
|
|
||||||
|
[ "<p>foo</p>\n<p>bar</p>" ] [ "foo\n\n\nbar" parse-farkup ] unit-test
|
||||||
|
|
||||||
|
[ "" ] [ "" parse-farkup ] unit-test
|
||||||
|
|
|
@ -40,6 +40,7 @@ MEMO: h1 ( -- parser ) "=" "h1" delimited ;
|
||||||
MEMO: h2 ( -- parser ) "==" "h2" delimited ;
|
MEMO: h2 ( -- parser ) "==" "h2" delimited ;
|
||||||
MEMO: h3 ( -- parser ) "===" "h3" delimited ;
|
MEMO: h3 ( -- parser ) "===" "h3" delimited ;
|
||||||
MEMO: h4 ( -- parser ) "====" "h4" delimited ;
|
MEMO: h4 ( -- parser ) "====" "h4" delimited ;
|
||||||
|
MEMO: nl ( -- parser ) "\n" token ;
|
||||||
MEMO: 2nl ( -- parser ) "\n\n" token hide ;
|
MEMO: 2nl ( -- parser ) "\n\n" token hide ;
|
||||||
|
|
||||||
: render-code ( string mode -- string' )
|
: render-code ( string mode -- string' )
|
||||||
|
@ -104,19 +105,25 @@ MEMO: line ( -- parser )
|
||||||
] choice* repeat1 ;
|
] choice* repeat1 ;
|
||||||
|
|
||||||
MEMO: paragraph ( -- parser )
|
MEMO: paragraph ( -- parser )
|
||||||
|
line
|
||||||
|
"\n" token over 2seq repeat0
|
||||||
|
"\n" token "\n" token ensure-not 2seq optional 3seq
|
||||||
[
|
[
|
||||||
line ,
|
|
||||||
"\n" token ,
|
|
||||||
] choice* repeat1 [
|
|
||||||
dup [ dup string? not swap [ blank? ] all? or ] deep-all?
|
dup [ dup string? not swap [ blank? ] all? or ] deep-all?
|
||||||
[ "<p>" swap "</p>" 3array ] unless
|
[ "<p>" swap "</p>" 3array ] unless
|
||||||
] action ;
|
] action ;
|
||||||
|
|
||||||
MEMO: farkup ( -- parser )
|
MEMO: farkup ( -- parser )
|
||||||
[
|
[
|
||||||
list , h1 , h2 , h3 , h4 , code , paragraph , 2nl ,
|
list , h1 , h2 , h3 , h4 , code , paragraph , 2nl , nl ,
|
||||||
] choice* repeat1 ;
|
] choice* repeat0 "\n" token optional 2seq ;
|
||||||
|
|
||||||
: parse-farkup ( string -- string' )
|
: parse-farkup ( string -- string' )
|
||||||
farkup parse parse-result-ast
|
farkup parse parse-result-ast
|
||||||
[ [ dup string? [ write ] [ drop ] if ] deep-each ] with-string-writer ;
|
[ [ dup string? [ write ] [ drop ] if ] deep-each ] with-string-writer ;
|
||||||
|
|
||||||
|
! paragraph
|
||||||
|
! [
|
||||||
|
! line ,
|
||||||
|
! "\n" token ,
|
||||||
|
! ] choice* repeat1
|
||||||
|
|
Loading…
Reference in New Issue