]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://factorcode.org/git/factor
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Wed, 28 May 2008 22:05:16 +0000 (17:05 -0500)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Wed, 28 May 2008 22:05:16 +0000 (17:05 -0500)
1  2 
extra/farkup/farkup-tests.factor
extra/farkup/farkup.factor

index 4abd655d6207f7e54646a775bd8f7e2ef5e5bee7,91cc5ec360250759f8f49a4e620d06d9c71b1513..17d286252e426df83608c5f7df722278123cbf00
@@@ -62,12 -62,23 +62,23 @@@ IN: farkup.test
  [ "<p>=</p><h2>foo</h2>" ] [ "===foo==" convert-farkup ] unit-test
  [ "<h1>foo</h1><p>=</p>" ] [ "=foo==" convert-farkup ] unit-test
  
 -[ "<div style='white-space: pre; font-family: monospace; '><span class='KEYWORD3'>int</span> <span class='FUNCTION'>main</span><span class='OPERATOR'>(</span><span class='OPERATOR'>)</span><br/></div>" ]
 +[ "<pre><span class='KEYWORD3'>int</span> <span class='FUNCTION'>main</span><span class='OPERATOR'>(</span><span class='OPERATOR'>)</span>\n</pre>" ]
  [ "[c{int main()}]" convert-farkup ] unit-test
  
  [ "<p><img src=\"lol.jpg\"/></p>" ] [ "[[image:lol.jpg]]" convert-farkup ] unit-test
  [ "<p><img src=\"lol.jpg\" alt=\"teh lol\"/></p>" ] [ "[[image:lol.jpg|teh lol]]" convert-farkup ] unit-test
 -[ "<p><a href=\"lol.com\"></a></p>" ] [ "[[lol.com]]" convert-farkup ] unit-test
 +[ "<p><a href=\"lol.com\">lol.com</a></p>" ] [ "[[lol.com]]" convert-farkup ] unit-test
  [ "<p><a href=\"lol.com\">haha</a></p>" ] [ "[[lol.com|haha]]" convert-farkup ] unit-test
  
  [ ] [ "[{}]" convert-farkup drop ] unit-test
+ [
+     "<p>Feature comparison:\n<table><tr><td>a</td><td>Factor</td><td>Java</td><td>Lisp</td></tr><tr><td>Coolness</td><td>Yes</td><td>No</td><td>No</td></tr><tr><td>Badass</td><td>Yes</td><td>No</td><td>No</td></tr><tr><td>Enterprise</td><td>Yes</td><td>Yes</td><td>No</td></tr><tr><td>Kosher</td><td>Yes</td><td>No</td><td>Yes</td></tr></table></p>"
+ ] [ "Feature comparison:\n|a|Factor|Java|Lisp|\n|Coolness|Yes|No|No|\n|Badass|Yes|No|No|\n|Enterprise|Yes|Yes|No|\n|Kosher|Yes|No|Yes|\n" convert-farkup ] unit-test
+ [
+     "<p>Feature comparison:\n\n<table><tr><td>a</td><td>Factor</td><td>Java</td><td>Lisp</td></tr><tr><td>Coolness</td><td>Yes</td><td>No</td><td>No</td></tr><tr><td>Badass</td><td>Yes</td><td>No</td><td>No</td></tr><tr><td>Enterprise</td><td>Yes</td><td>Yes</td><td>No</td></tr><tr><td>Kosher</td><td>Yes</td><td>No</td><td>Yes</td></tr></table></p>"
+ ] [ "Feature comparison:\n\n|a|Factor|Java|Lisp|\n|Coolness|Yes|No|No|\n|Badass|Yes|No|No|\n|Enterprise|Yes|Yes|No|\n|Kosher|Yes|No|Yes|\n" convert-farkup ] unit-test
+ [ "<p>a-b</p>" ] [ "a-b" convert-farkup ] unit-test
+ [ "<ul><li>a-b</li></ul>" ] [ "-a-b" convert-farkup ] unit-test
index d58b54af3752e38a39a778e39b0ad47605579356,47fe36b8ec0db06588ae86543df0ed3b574b8b4a..1b51bb57524efb283a311751537aaf493454f924
@@@ -2,13 -2,10 +2,13 @@@
  ! See http://factorcode.org/license.txt for BSD license.
  USING: arrays io io.styles kernel memoize namespaces peg
  sequences strings html.elements xml.entities xmode.code2html
 -splitting io.streams.string html peg.parsers html.elements
 +splitting io.streams.string peg.parsers
  sequences.deep unicode.categories ;
  IN: farkup
  
 +SYMBOL: relative-link-prefix
 +SYMBOL: link-no-follow?
 +
  <PRIVATE
  
  : delimiters ( -- string )
@@@ -62,30 -59,25 +62,30 @@@ MEMO: eq ( -- parser 
  : render-code ( string mode -- string' )
      >r string-lines r>
      [
 -        [
 -            H{ { wrap-margin f } } [
 -                htmlize-lines
 -            ] with-nesting
 -        ] with-html-stream
 +        <pre>
 +            htmlize-lines
 +        </pre>
      ] with-string-writer ;
  
  : check-url ( href -- href' )
      CHAR: : over member? [
          dup { "http://" "https://" "ftp://" } [ head? ] with contains?
          [ drop "/" ] unless
 -    ] when ;
 +    ] [
 +        relative-link-prefix get prepend
 +    ] if ;
  
  : escape-link ( href text -- href-esc text-esc )
      >r check-url escape-quoted-string r> escape-string ;
  
  : make-link ( href text -- seq )
      escape-link
 -    [ "<a href=\"" , >r , r> "\">" , [ , ] when* "</a>" , ] { } make ;
 +    [
 +        "<a" ,
 +        " href=\"" , >r , r>
 +        link-no-follow? get [ " nofollow=\"true\"" , ] when
 +        "\">" , , "</a>" ,
 +    ] { } make ;
  
  : make-image-link ( href alt -- seq )
      escape-link
@@@ -110,7 -102,7 +110,7 @@@ MEMO: simple-link ( -- parser 
          "[[" token hide ,
          [ "|]" member? not ] satisfy repeat1 ,
          "]]" token hide ,
 -    ] seq* [ first f make-link ] action ;
 +    ] seq* [ first dup make-link ] action ;
  
  MEMO: labelled-link ( -- parser )
      [
          "]]" token hide ,
      ] seq* [ first2 make-link ] action ;
  
- MEMO: link ( -- parser ) [ image-link , simple-link , labelled-link , ] choice* ;
+ MEMO: link ( -- parser )
+     [ image-link , simple-link , labelled-link , ] choice* ;
  
  DEFER: line
  MEMO: list-item ( -- parser )
      [
-         "-" token hide , line ,
+         "-" token hide , ! text ,
+         [ "\r\n" member? not ] satisfy repeat1 [ >string escape-string ] action ,
      ] seq* [ "li" surround-with-foo ] action ;
  
  MEMO: list ( -- parser )
@@@ -157,6 -151,8 +159,8 @@@ MEMO: code ( -- parser 
  
  MEMO: line ( -- parser )
      [
+         nl table 2seq ,
+         nl list 2seq ,
          text , strong , emphasis , link ,
          superscript , subscript , inline-code ,
          escaped-char , delimiter , eq ,