test/parser_test.rb in trac-wiki-0.1.9 vs test/parser_test.rb in trac-wiki-0.1.12
- old
+ new
@@ -1,11 +1,19 @@
require 'trac-wiki'
+require 'pp'
+
class Bacon::Context
def tc(html, wiki, options = {})
TracWiki.render(wiki, options).should.equal html
end
+ def h(hash, wiki, opts = {})
+ parser = TracWiki.parser(wiki, opts)
+ parser.to_html
+ #pp parser.headers
+ parser.headings.should == hash
+ end
end
describe TracWiki::Parser do
it 'should not parse linkd' do
tc "<p>[[ahoj]]</p>\n", "[[ahoj]]", :no_link => true
@@ -139,16 +147,18 @@
it 'should parse headings' do
# Only three differed sized levels of heading are required.
tc "<h1>Heading 1</h1>", "= Heading 1 ="
tc "<h2>Heading 2</h2>", "== Heading 2 =="
tc "<h3>Heading 3</h3>", "=== Heading 3 ==="
- tc "<a name=\"HE3\"/><h3>Heading 3</h3>", "=== Heading 3 === #HE3"
- tc "<a name=\"Heading-3\"/><h3>Heading 3</h3>", "=== Heading 3 === #Heading-3"
- tc "<a name=\"Heading/3\"/><h3>Heading 3</h3>", "=== Heading 3 === #Heading/3"
- tc "<a name=\"Heading/3\"/><h3>Heading 3</h3>", "=== Heading 3 === #Heading/3 "
- tc "<a name=\"Heading<3>\"/><h3>Heading 3</h3>", "=== Heading 3 === #Heading<3>"
- tc "<a name=\"Heading'"3"'\"/><h3>Heading 3</h3>", "=== Heading 3 === #Heading'\"3\"'"
+ tc "<h3 id=\"HE3\">Heading 3</h3>", "=== Heading 3 === #HE3"
+ tc "<h3 id=\"Heading-3\">Heading 3</h3>", "=== Heading 3 === #Heading-3"
+ tc "<h3 id=\"Heading/3\">Heading 3</h3>", "=== Heading 3 === #Heading/3"
+ tc "<h3 id=\"Heading/3\">Heading 3</h3>", "=== Heading 3 === #Heading/3 "
+ tc "<h3 id=\"Heading/3\">Heading 3</h3><h3 id=\"Heading/3.2\">Heading 3</h3>",
+ "=== Heading 3 === #Heading/3\n=== Heading 3 === #Heading/3\n "
+ tc "<h3 id=\"Heading<3>\">Heading 3</h3>", "=== Heading 3 === #Heading<3>"
+ tc "<h3 id=\"Heading'"3"'\">Heading 3</h3>", "=== Heading 3 === #Heading'\"3\"'"
# WARNING: Optional feature, not specified in
tc "<h4>Heading 4</h4>", "==== Heading 4 ===="
tc "<h5>Heading 5</h5>", "===== Heading 5 ====="
tc "<h6>Heading 6</h6>", "====== Heading 6 ======"
@@ -180,24 +190,27 @@
end
it 'should parse links' do
# Links
tc "<p><a href=\"link\">link</a></p>\n", "[[link]]"
+ tc "<p><a href=\"link#link\">link#link</a></p>\n", "[[link#link]]"
+ tc "<p><a href=\"#link\">#link</a></p>\n", "[[#link]]"
# Links can appear in paragraphs (i.e. inline item)
tc "<p>Hello, <a href=\"world\">world</a></p>\n", "Hello, [[world]]"
# Named links
tc "<p><a href=\"MyBigPage\">Go to my page</a></p>\n", "[[MyBigPage|Go to my page]]"
# URLs
tc "<p><a href=\"http://www.example.org/\">http://www.example.org/</a></p>\n", "[[http://www.example.org/]]"
+ tc "<p><a href=\"http://www.example.org/#anch\">http://www.example.org/#anch</a></p>\n", "[[http://www.example.org/#anch]]"
# Single punctuation characters at the end of URLs
# should not be considered a part of the URL.
[',','.','?','!',':',';','\'','"'].each do |punct|
- esc_punct = CGI::escapeHTML(punct)
+ esc_punct = TracWiki::Parser.escapeHTML(punct)
tc "<p><a href=\"http://www.example.org/\">http://www.example.org/</a>#{esc_punct}</p>\n", "http://www.example.org/#{punct}"
end
# Nameds URLs (by example)
tc("<p><a href=\"http://www.example.org/\">Visit the Example website</a></p>\n",
"[[http://www.example.org/|Visit the Example website]]")
@@ -800,8 +813,46 @@
tc "<p>bhoj</p>\n<div class='merge merge-your'>your</div>\n<p>ahoj</p>\n", "bhoj\n>>>>>>> your\nahoj", :merge => true
tc "<div class='merge merge-split'></div>\n<p>ahoj</p>\n", "=======\nahoj\n", :merge => true
tc "<div class='merge merge-split'>split</div>\n", "======= split", :merge => true
tc "<h6></h6><p>ahoj</p>\n", "=======\nahoj\n", :merge => false
+ end
+ it 'should compute headers' do
+ h( [ {:level=>0, :sline=>1, :eline=>2},
+ {:title=>"ahoj", :sline=>3, :eline=> 5, :aname=>nil, :level=>2},
+ ],
+ "\nahoj\n== ahoj ==\nbhoj\nchoj\n")
+ h( [ {:level=>0, :sline=>1, :eline=>2},
+ {:title=>"ahoj", :sline=>3, :eline => 5, :aname=>nil, :level=>2},
+ {:title=>"dhoj", :sline=>6, :eline => 7, :aname=>nil, :level=>3},
+ ],
+ "\nahoj\n== ahoj ==\nbhoj\nchoj\n===dhoj===\nkuk\n")
+ h( [ {:level=>0, :sline=>1, :eline=>2},
+ {:title=>"ahoj", :sline=>3, :eline => 7, :aname=>nil, :level=>2},
+ {:title=>"dhoj", :sline=>8, :eline => 9, :aname=>nil, :level=>3},
+ ],
+ "\nahoj\n== ahoj ==\nbhoj\nchoj\n\n\n===dhoj===\nkuk\n")
+ h( [ {:level=>0, :sline=>1, :eline=>2},
+ {:title=>"ah o ~'j", :sline=>3, :eline => 5, :aname=>nil, :level=>2},
+ {:title=>"*dhoj", :sline=>6, :eline => 7, :aname=>'ble', :level=>3},
+ ],
+ "\nahoj\n== ah o ~'j ==\nbhoj\nchoj\n===*dhoj ===#ble\nkuk\n")
+ h( [ {:level=>0, :sline=>1, :eline=>2},
+ {:title=>"ah o ~'j", :sline=>3, :eline => 8, :aname=>nil, :level=>2},
+ {:title=>"*dhoj", :sline=>9, :eline => 11, :aname=>'ble', :level=>3},
+ ], <<eos)
+
+ahoj
+== ah o ~'j ==
+{{{
+==a1.5hoj==
+}}}
+
+
+===*dhoj ===#ble
+kuk
+
+eos
+
end
end
# vim: tw=0