trac-wiki 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,8 +13,8 @@ require 'uri'
13
13
  # **Bold text**
14
14
  # ''Italic text''
15
15
  # [[Links]]
16
- # ||=Table||=Heading||
17
- # || Table|| Cells ||
16
+ # ||=Table=||=Heading=||
17
+ # || Table || Cells ||
18
18
  # [[Image(image.png)]]
19
19
  #
20
20
  # The simplest interface is TracWiki.render. The default handling of
@@ -111,6 +111,8 @@ module TracWiki
111
111
  tagi = @stacki.pop
112
112
  if tag == 'strongem'
113
113
  @out << '</em></strong>'
114
+ elsif tag == 'p'
115
+ @out << "</p>\n"
114
116
  else
115
117
  @out << "</#{tag}>"
116
118
  end
@@ -1,3 +1,3 @@
1
1
  module TracWiki
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
data/test/parser_test.rb CHANGED
@@ -13,8 +13,8 @@ end
13
13
  describe TracWiki::Parser do
14
14
  it 'should parse bold' do
15
15
  # Bold can be used inside paragraphs
16
- tc "<p>This <strong>is</strong> bold</p>", "This **is** bold"
17
- tc "<p>This <strong>is</strong> bold and <strong>bold</strong>ish</p>", "This **is** bold and **bold**ish"
16
+ tc "<p>This <strong>is</strong> bold</p>\n", "This **is** bold"
17
+ tc "<p>This <strong>is</strong> bold and <strong>bold</strong>ish</p>\n", "This **is** bold and **bold**ish"
18
18
 
19
19
  # Bold can be used inside list items
20
20
  tc "<ul><li>This is <strong>bold</strong></li></ul>", "* This is **bold**"
@@ -24,11 +24,11 @@ describe TracWiki::Parser do
24
24
  "||This is **bold**||")
25
25
 
26
26
  # Links can appear inside bold text:
27
- tc("<p>A bold link: <strong><a href=\"http://example.org/\">http://example.org/</a> nice! </strong></p>",
27
+ tc("<p>A bold link: <strong><a href=\"http://example.org/\">http://example.org/</a> nice! </strong></p>\n",
28
28
  "A bold link: **http://example.org/ nice! **")
29
29
 
30
30
  # Bold will end at the end of paragraph
31
- tc "<p>This <strong>is bold</strong></p>", "This **is bold"
31
+ tc "<p>This <strong>is bold</strong></p>\n", "This **is bold"
32
32
 
33
33
  # Bold will end at the end of list items
34
34
  tc("<ul><li>Item <strong>bold</strong></li><li>Item normal</li></ul>",
@@ -39,36 +39,36 @@ describe TracWiki::Parser do
39
39
  "||Item **bold||Another **bold||")
40
40
 
41
41
  # Bold should not cross paragraphs
42
- tc("<p>This <strong>is</strong></p><p>bold<strong> maybe</strong></p>",
42
+ tc("<p>This <strong>is</strong></p>\n<p>bold<strong> maybe</strong></p>\n",
43
43
  "This **is\n\nbold** maybe")
44
44
 
45
45
  # Bold should be able to cross lines
46
- tc "<p>This <strong>is bold</strong></p>", "This **is\nbold**"
46
+ tc "<p>This <strong>is bold</strong></p>\n", "This **is\nbold**"
47
47
  end
48
48
 
49
49
  it 'should parse bolditalic' do
50
- tc '<p>This is <strong><em>bolditallic</em></strong>.</p>', "This is '''''bolditallic'''''."
51
- tc '<p>This is <strong> <em>bolditallic</em> </strong>.</p>', "This is ''' ''bolditallic'' '''."
52
- tc '<p>This is <em> <strong>bolditallic</strong> </em>.</p>', "This is '' '''bolditallic''' ''."
53
- tc '<p>This is <strong>bold</strong>.</p>', "This is '''bold'''."
54
- #fuj tc '<p>This is <strong><em>bolditallic</em></strong>.</p>', "This is **''bolditallic**''."
50
+ tc "<p>This is <strong><em>bolditallic</em></strong>.</p>\n", "This is '''''bolditallic'''''."
51
+ tc "<p>This is <strong> <em>bolditallic</em> </strong>.</p>\n", "This is ''' ''bolditallic'' '''."
52
+ tc "<p>This is <em> <strong>bolditallic</strong> </em>.</p>\n", "This is '' '''bolditallic''' ''."
53
+ tc "<p>This is <strong>bold</strong>.</p>\n", "This is '''bold'''."
54
+ #fuj tc '<p>This is <strong><em>bolditallic</em></strong>.</p>\n', "This is **''bolditallic**''."
55
55
  end
56
56
  it 'should parse monospace' do
57
- tc "<p>This is <tt>monospace</tt>.</p>", "This is {{{monospace}}}."
58
- tc "<p>This is <tt>mon**o**space</tt>.</p>", "This is {{{mon**o**space}}}."
59
- tc "<p>This is <tt>mon&lt;o&gt;space</tt>.</p>", "This is {{{mon<o>space}}}."
60
- tc "<p>This is <tt>mon''o''space</tt>.</p>", "This is {{{mon''o''space}}}."
61
- tc "<p>This is <tt>mon''o''space</tt>.</p>", "This is `mon''o''space`."
62
- tc "<p>This is <tt>mon{{o}}space</tt>.</p>", "This is {{{mon{{o}}space}}}."
63
- tc "<p>This is <tt>mon``o''space</tt>.</p>", "This is {{{mon``o''space}}}."
64
- tc "<p>This is <tt>mon{{o}}space</tt>.</p>", "This is `mon{{o}}space`."
57
+ tc "<p>This is <tt>monospace</tt>.</p>\n", "This is {{{monospace}}}."
58
+ tc "<p>This is <tt>mon**o**space</tt>.</p>\n", "This is {{{mon**o**space}}}."
59
+ tc "<p>This is <tt>mon&lt;o&gt;space</tt>.</p>\n", "This is {{{mon<o>space}}}."
60
+ tc "<p>This is <tt>mon''o''space</tt>.</p>\n", "This is {{{mon''o''space}}}."
61
+ tc "<p>This is <tt>mon''o''space</tt>.</p>\n", "This is `mon''o''space`."
62
+ tc "<p>This is <tt>mon{{o}}space</tt>.</p>\n", "This is {{{mon{{o}}space}}}."
63
+ tc "<p>This is <tt>mon``o''space</tt>.</p>\n", "This is {{{mon``o''space}}}."
64
+ tc "<p>This is <tt>mon{{o}}space</tt>.</p>\n", "This is `mon{{o}}space`."
65
65
  end
66
66
 
67
67
  it 'should parse italic' do
68
68
  # Italic can be used inside paragraphs
69
- tc("<p>This <em>is</em> italic</p>",
69
+ tc("<p>This <em>is</em> italic</p>\n",
70
70
  "This ''is'' italic")
71
- tc("<p>This <em>is</em> italic and <em>italic</em>ish</p>",
71
+ tc("<p>This <em>is</em> italic and <em>italic</em>ish</p>\n",
72
72
  "This ''is'' italic and ''italic''ish")
73
73
 
74
74
  # Italic can be used inside list items
@@ -79,11 +79,11 @@ describe TracWiki::Parser do
79
79
  "||This is ''italic''||")
80
80
 
81
81
  # Links can appear inside italic text:
82
- tc("<p>A italic link: <em><a href=\"http://example.org/\">http://example.org/</a> nice! </em></p>",
82
+ tc("<p>A italic link: <em><a href=\"http://example.org/\">http://example.org/</a> nice! </em></p>\n",
83
83
  "A italic link: ''http://example.org/ nice! ''")
84
84
 
85
85
  # Italic will end at the end of paragraph
86
- tc "<p>This <em>is italic</em></p>", "This ''is italic"
86
+ tc "<p>This <em>is italic</em></p>\n", "This ''is italic"
87
87
 
88
88
  # Italic will end at the end of list items
89
89
  tc("<ul><li>Item <em>italic</em></li><li>Item normal</li></ul>",
@@ -94,22 +94,22 @@ describe TracWiki::Parser do
94
94
  "||Item ''italic||Another ''italic")
95
95
 
96
96
  # Italic should not cross paragraphs
97
- tc("<p>This <em>is</em></p><p>italic<em> maybe</em></p>",
97
+ tc("<p>This <em>is</em></p>\n<p>italic<em> maybe</em></p>\n",
98
98
  "This ''is\n\nitalic'' maybe")
99
99
 
100
100
  # Italic should be able to cross lines
101
- tc "<p>This <em>is italic</em></p>", "This ''is\nitalic''"
101
+ tc "<p>This <em>is italic</em></p>\n", "This ''is\nitalic''"
102
102
  end
103
103
 
104
104
  it 'should parse bold italics' do
105
105
  # By example
106
- tc "<p><strong><em>bold italics</em></strong></p>", "**''bold italics''**"
106
+ tc "<p><strong><em>bold italics</em></strong></p>\n", "**''bold italics''**"
107
107
 
108
108
  # By example
109
- tc "<p><em><strong>bold italics</strong></em></p>", "''**bold italics**''"
109
+ tc "<p><em><strong>bold italics</strong></em></p>\n", "''**bold italics**''"
110
110
 
111
111
  # By example
112
- tc "<p><em>This is <strong>also</strong> good.</em></p>", "''This is **also** good.''"
112
+ tc "<p><em>This is <strong>also</strong> good.</em></p>\n", "''This is **also** good.''"
113
113
  end
114
114
 
115
115
  it 'should parse headings' do
@@ -142,105 +142,105 @@ describe TracWiki::Parser do
142
142
 
143
143
  # WARNING: !! XXX doesn't specify if text after closing equal signs
144
144
  # !!becomes part of the heading or invalidates the entire heading.
145
- # tc "<p> == Heading 2 == foo</p>", " == Heading 2 == foo"
145
+ # tc "<p> == Heading 2 == foo</p>\n", " == Heading 2 == foo"
146
146
  tc "<h2>Heading 2 == foo</h2>", " == Heading 2 == foo"
147
147
 
148
148
  # Line must start with equal sign
149
- tc "<p>foo = Heading 1 =</p>", "foo = Heading 1 ="
149
+ tc "<p>foo = Heading 1 =</p>\n", "foo = Heading 1 ="
150
150
  end
151
151
 
152
152
  it 'should parse links' do
153
153
  # Links
154
- tc "<p><a href=\"link\">link</a></p>", "[[link]]"
154
+ tc "<p><a href=\"link\">link</a></p>\n", "[[link]]"
155
155
 
156
156
  # Links can appear in paragraphs (i.e. inline item)
157
- tc "<p>Hello, <a href=\"world\">world</a></p>", "Hello, [[world]]"
157
+ tc "<p>Hello, <a href=\"world\">world</a></p>\n", "Hello, [[world]]"
158
158
 
159
159
  # Named links
160
- tc "<p><a href=\"MyBigPage\">Go to my page</a></p>", "[[MyBigPage|Go to my page]]"
160
+ tc "<p><a href=\"MyBigPage\">Go to my page</a></p>\n", "[[MyBigPage|Go to my page]]"
161
161
 
162
162
  # URLs
163
- tc "<p><a href=\"http://www.example.org/\">http://www.example.org/</a></p>", "[[http://www.example.org/]]"
163
+ tc "<p><a href=\"http://www.example.org/\">http://www.example.org/</a></p>\n", "[[http://www.example.org/]]"
164
164
 
165
165
  # Single punctuation characters at the end of URLs
166
166
  # should not be considered a part of the URL.
167
167
  [',','.','?','!',':',';','\'','"'].each do |punct|
168
168
  esc_punct = CGI::escapeHTML(punct)
169
- tc "<p><a href=\"http://www.example.org/\">http://www.example.org/</a>#{esc_punct}</p>", "http://www.example.org/#{punct}"
169
+ tc "<p><a href=\"http://www.example.org/\">http://www.example.org/</a>#{esc_punct}</p>\n", "http://www.example.org/#{punct}"
170
170
  end
171
171
  # Nameds URLs (by example)
172
- tc("<p><a href=\"http://www.example.org/\">Visit the Example website</a></p>",
172
+ tc("<p><a href=\"http://www.example.org/\">Visit the Example website</a></p>\n",
173
173
  "[[http://www.example.org/|Visit the Example website]]")
174
174
 
175
175
  # WRNING: Parsing markup within a link is optional
176
- tc "<p><a href=\"Weird+Stuff\"><strong>Weird</strong> <em>Stuff</em></a></p>", "[[Weird Stuff|**Weird** ''Stuff'']]"
177
- #tc("<p><a href=\"http://example.org/\"><img src='image.jpg'/></a></p>", "[[http://example.org/|{{image.jpg}}]]")
176
+ tc "<p><a href=\"Weird+Stuff\"><strong>Weird</strong> <em>Stuff</em></a></p>\n", "[[Weird Stuff|**Weird** ''Stuff'']]"
177
+ #tc("<p><a href=\"http://example.org/\"><img src='image.jpg'/></a></p>\n", "[[http://example.org/|{{image.jpg}}]]")
178
178
 
179
179
  # Inside bold
180
- tc "<p><strong><a href=\"link\">link</a></strong></p>", "**[[link]]**"
180
+ tc "<p><strong><a href=\"link\">link</a></strong></p>\n", "**[[link]]**"
181
181
 
182
182
  # Whitespace inside [[ ]] should be ignored
183
- tc("<p><a href=\"link\">link</a></p>", "[[ link ]]")
184
- tc("<p><a href=\"link+me\">link me</a></p>", "[[ link me ]]")
185
- tc("<p><a href=\"http://dot.com/\">dot.com</a></p>", "[[ http://dot.com/ \t| \t dot.com ]]")
186
- tc("<p><a href=\"http://dot.com/\">dot.com</a></p>", "[[ http://dot.com/ | dot.com ]]")
183
+ tc("<p><a href=\"link\">link</a></p>\n", "[[ link ]]")
184
+ tc("<p><a href=\"link+me\">link me</a></p>\n", "[[ link me ]]")
185
+ tc("<p><a href=\"http://dot.com/\">dot.com</a></p>\n", "[[ http://dot.com/ \t| \t dot.com ]]")
186
+ tc("<p><a href=\"http://dot.com/\">dot.com</a></p>\n", "[[ http://dot.com/ | dot.com ]]")
187
187
  end
188
188
 
189
189
  it 'should parse freestanding urls' do
190
190
  # Free-standing URL's should be turned into links
191
- tc "<p><a href=\"http://www.example.org/\">http://www.example.org/</a></p>", "http://www.example.org/"
191
+ tc "<p><a href=\"http://www.example.org/\">http://www.example.org/</a></p>\n", "http://www.example.org/"
192
192
 
193
193
  # URL ending in .
194
- tc "<p>Text <a href=\"http://example.org\">http://example.org</a>. other text</p>", "Text http://example.org. other text"
194
+ tc "<p>Text <a href=\"http://example.org\">http://example.org</a>. other text</p>\n", "Text http://example.org. other text"
195
195
 
196
196
  # URL ending in ),
197
- tc "<p>Text (<a href=\"http://example.org\">http://example.org</a>), other text</p>", "Text (http://example.org), other text"
197
+ tc "<p>Text (<a href=\"http://example.org\">http://example.org</a>), other text</p>\n", "Text (http://example.org), other text"
198
198
 
199
199
  # URL ending in ).
200
- tc "<p>Text (<a href=\"http://example.org\">http://example.org</a>). other text</p>", "Text (http://example.org). other text"
200
+ tc "<p>Text (<a href=\"http://example.org\">http://example.org</a>). other text</p>\n", "Text (http://example.org). other text"
201
201
 
202
202
  # URL ending in ).
203
- tc "<p>Text (<a href=\"http://example.org\">http://example.org</a>).</p>", "Text (http://example.org)."
203
+ tc "<p>Text (<a href=\"http://example.org\">http://example.org</a>).</p>\n", "Text (http://example.org)."
204
204
 
205
205
  # URL ending in )
206
- tc "<p>Text (<a href=\"http://example.org\">http://example.org</a>)</p>", "Text (http://example.org)"
206
+ tc "<p>Text (<a href=\"http://example.org\">http://example.org</a>)</p>\n", "Text (http://example.org)"
207
207
  end
208
208
 
209
209
  it 'should parse paragraphs' do
210
210
  # One or more blank lines end paragraphs.
211
- tc "<p>This is my text.</p><p>This is more text.</p>", "This is\nmy text.\n\nThis is\nmore text."
212
- tc "<p>This is my text.</p><p>This is more text.</p>", "This is\nmy text.\n\n\nThis is\nmore text."
213
- tc "<p>This is my text.</p><p>This is more text.</p>", "This is\nmy text.\n\n\n\nThis is\nmore text."
211
+ tc "<p>This is my text.</p>\n<p>This is more text.</p>\n", "This is\nmy text.\n\nThis is\nmore text."
212
+ tc "<p>This is my text.</p>\n<p>This is more text.</p>\n", "This is\nmy text.\n\n\nThis is\nmore text."
213
+ tc "<p>This is my text.</p>\n<p>This is more text.</p>\n", "This is\nmy text.\n\n\n\nThis is\nmore text."
214
214
 
215
215
  # A list end paragraphs too.
216
- tc "<p>Hello</p><ul><li>Item</li></ul>", "Hello\n* Item\n"
216
+ tc "<p>Hello</p>\n<ul><li>Item</li></ul>", "Hello\n* Item\n"
217
217
 
218
218
  # A table end paragraphs too.
219
- tc "<p>Hello</p><table><tr><td>Cell</td></tr></table>", "Hello\n||Cell||"
219
+ tc "<p>Hello</p>\n<table><tr><td>Cell</td></tr></table>", "Hello\n||Cell||"
220
220
 
221
221
  # A nowiki end paragraphs too.
222
- tc "<p>Hello</p><pre>nowiki</pre>", "Hello\n{{{\nnowiki\n}}}\n"
222
+ tc "<p>Hello</p>\n<pre>nowiki</pre>", "Hello\n{{{\nnowiki\n}}}\n"
223
223
 
224
224
  # WARNING: A heading ends a paragraph (not specced)
225
- tc "<p>Hello</p><h1>Heading</h1>", "Hello\n= Heading =\n"
225
+ tc "<p>Hello</p>\n<h1>Heading</h1>", "Hello\n= Heading =\n"
226
226
  end
227
227
 
228
228
  it 'should parse linebreaks' do
229
229
  # \\ (wiki-style) for line breaks.
230
- tc "<p>This is the first line,<br/>and this is the second.</p>", "This is the first line,\\\\and this is the second."
231
- tc "<p>This is the first line,<br/>and this is the second.</p>", "This is the first line,[[br]]and this is the second."
232
- tc "<p>This is the first line,<br/>and this is the second.</p>", "This is the first line,[[Br]]and this is the second."
230
+ tc "<p>This is the first line,<br/>and this is the second.</p>\n", "This is the first line,\\\\and this is the second."
231
+ tc "<p>This is the first line,<br/>and this is the second.</p>\n", "This is the first line,[[br]]and this is the second."
232
+ tc "<p>This is the first line,<br/>and this is the second.</p>\n", "This is the first line,[[Br]]and this is the second."
233
233
  end
234
234
 
235
235
  it 'should parse blockquote' do
236
- tc "<p><blockquote>Monty Python</blockquote></p>", "> Monty Python\n"
237
- tc "<p><blockquote>Monty Python q2</blockquote></p>", "> Monty Python\n> q2\n"
238
- tc "<p><blockquote>Monty Python q2</blockquote></p>", "> Monty Python\n>q2\n"
239
- tc "<p><blockquote>Monty Python <strong>q2</strong></blockquote></p>", "> Monty Python\n>**q2**\n"
240
- tc "<p><blockquote>Monty Python<blockquote>q2</blockquote></blockquote></p>", "> Monty Python\n> > q2\n"
241
- tc "<p><blockquote>Monty Python<blockquote>q2 q3</blockquote></blockquote></p>", "> Monty Python\n> > q2\n>>q3\n"
242
- tc "<p><blockquote>Monty Python<blockquote><em>q2</em></blockquote>q1</blockquote></p>", ">Monty Python\n> > ''q2''\n>q1"
243
- tc "<p><blockquote>Monty Python rules</blockquote></p>", " Monty Python\n rules\n"
236
+ tc "<p><blockquote>Monty Python</blockquote></p>\n", "> Monty Python\n"
237
+ tc "<p><blockquote>Monty Python q2</blockquote></p>\n", "> Monty Python\n> q2\n"
238
+ tc "<p><blockquote>Monty Python q2</blockquote></p>\n", "> Monty Python\n>q2\n"
239
+ tc "<p><blockquote>Monty Python <strong>q2</strong></blockquote></p>\n", "> Monty Python\n>**q2**\n"
240
+ tc "<p><blockquote>Monty Python<blockquote>q2</blockquote></blockquote></p>\n", "> Monty Python\n> > q2\n"
241
+ tc "<p><blockquote>Monty Python<blockquote>q2 q3</blockquote></blockquote></p>\n", "> Monty Python\n> > q2\n>>q3\n"
242
+ tc "<p><blockquote>Monty Python<blockquote><em>q2</em></blockquote>q1</blockquote></p>\n", ">Monty Python\n> > ''q2''\n>q1"
243
+ tc "<p><blockquote>Monty Python rules</blockquote></p>\n", " Monty Python\n rules\n"
244
244
  end
245
245
  it 'should parse definition list' do
246
246
  # FIXME: trailing space
@@ -260,7 +260,7 @@ describe TracWiki::Parser do
260
260
  tc("<ul><li><strong>Item 1</strong></li></ul>", "* **Item 1")
261
261
 
262
262
  # An item ends at blank line
263
- tc("<ul><li>Item</li></ul><p>Par</p>", "* Item\n\nPar\n")
263
+ tc("<ul><li>Item</li></ul><p>Par</p>\n", "* Item\n\nPar\n")
264
264
 
265
265
  # An item ends at a heading
266
266
  tc("<ul><li>Item</li></ul><h1>Heading</h1>", "* Item\n= Heading =\n")
@@ -298,7 +298,7 @@ describe TracWiki::Parser do
298
298
  "1. Hello,\n World!\n * Not bold\n")
299
299
 
300
300
  # [...] otherwise it will be treated as the beginning of bold text.
301
- tc("<ul><li>Hello, World!</li></ul><p><strong>Not bold</strong></p>",
301
+ tc("<ul><li>Hello, World!</li></ul><p><strong>Not bold</strong></p>\n",
302
302
  "* Hello,\nWorld!\n\n**Not bold\n")
303
303
  end
304
304
 
@@ -316,7 +316,7 @@ describe TracWiki::Parser do
316
316
  tc("<ol><li><strong>Item 1</strong></li></ol>", "1. **Item 1")
317
317
 
318
318
  # An item ends at blank line
319
- tc("<ol><li>Item</li></ol><p>Par</p>", "1. Item\n\nPar\n")
319
+ tc("<ol><li>Item</li></ol><p>Par</p>\n", "1. Item\n\nPar\n")
320
320
 
321
321
  # An item ends at a heading
322
322
  tc("<ol><li>Item</li></ol><h1>Heading</h1>", "1. Item\n= Heading =\n")
@@ -381,38 +381,38 @@ describe TracWiki::Parser do
381
381
 
382
382
  it 'should parse ambiguious italics and url' do
383
383
  # Uncommon URL schemes should not be parsed as URLs
384
- tc("<p>This is what can go wrong:<em>this should be an italic text</em>.</p>",
384
+ tc("<p>This is what can go wrong:<em>this should be an italic text</em>.</p>\n",
385
385
  "This is what can go wrong:''this should be an italic text''.")
386
386
 
387
387
  # A link inside italic text
388
- tc("<p>How about <em>a link, like <a href=\"http://example.org\">http://example.org</a>, in italic</em> text?</p>",
388
+ tc("<p>How about <em>a link, like <a href=\"http://example.org\">http://example.org</a>, in italic</em> text?</p>\n",
389
389
  "How about ''a link, like http://example.org, in italic'' text?")
390
390
 
391
391
  # Another test
392
- tc("<p>Formatted fruits, for example:<em>apples</em>, oranges, <strong>pears</strong> ...</p>",
392
+ tc("<p>Formatted fruits, for example:<em>apples</em>, oranges, <strong>pears</strong> ...</p>\n",
393
393
  "Formatted fruits, for example:''apples'', oranges, **pears** ...")
394
394
  end
395
395
 
396
396
  it 'should parse ambiguious bold and lists' do
397
- tc "<p><strong> bold text </strong></p>", "** bold text **"
398
- tc "<p><blockquote><strong> bold text </strong></blockquote></p>", " ** bold text **"
397
+ tc "<p><strong> bold text </strong></p>\n", "** bold text **"
398
+ tc "<p><blockquote><strong> bold text </strong></blockquote></p>\n", " ** bold text **"
399
399
  end
400
400
 
401
401
  it 'should parse nowiki' do
402
402
  # ... works as block
403
403
  tc "<pre>Hello</pre>", "{{{\nHello\n}}}\n"
404
- tc "<p><tt>{{{-}}}</tt></p>", "`{{{-}}}`\n"
404
+ tc "<p><tt>{{{-}}}</tt></p>\n", "`{{{-}}}`\n"
405
405
 
406
406
  # ... works inline
407
- tc "<p>Hello <tt>world</tt>.</p>", "Hello {{{world}}}."
408
- tc "<p><tt>Hello</tt> <tt>world</tt>.</p>", "{{{Hello}}} {{{world}}}."
407
+ tc "<p>Hello <tt>world</tt>.</p>\n", "Hello {{{world}}}."
408
+ tc "<p><tt>Hello</tt> <tt>world</tt>.</p>\n", "{{{Hello}}} {{{world}}}."
409
409
 
410
410
  # No wiki markup is interpreted inbetween
411
411
  tc "<pre>**Hello**</pre>", "{{{\n**Hello**\n}}}\n"
412
412
 
413
413
  # Leading whitespaces are not permitted
414
- # tc("<p>{{{ Hello }}}</p>", " {{{\nHello\n}}}")
415
- tc("<p>{{{ Hello<blockquote>}}}</blockquote></p>", "{{{\nHello\n }}}")
414
+ # tc("<p>{{{ Hello }}}</p>\n", " {{{\nHello\n}}}")
415
+ tc("<p>{{{ Hello<blockquote>}}}</blockquote></p>\n", "{{{\nHello\n }}}")
416
416
 
417
417
  # Assumed: Should preserve whitespace
418
418
  tc("<pre> \t Hello, \t \n \t World \t </pre>",
@@ -422,38 +422,38 @@ describe TracWiki::Parser do
422
422
  tc("<pre>nowikiblock\n}}}</pre>", "{{{\nnowikiblock\n }}}\n}}}\n")
423
423
 
424
424
  # In inline nowiki, any trailing closing brace is included in the span
425
- tc("<p>this is <tt>nowiki}</tt></p>", "this is {{{nowiki}}}}")
426
- tc("<p>this is <tt>nowiki}}</tt></p>", "this is {{{nowiki}}}}}")
427
- tc("<p>this is <tt>nowiki}}}</tt></p>", "this is {{{nowiki}}}}}}")
428
- tc("<p>this is <tt>nowiki}}}}</tt></p>", "this is {{{nowiki}}}}}}}")
425
+ tc("<p>this is <tt>nowiki}</tt></p>\n", "this is {{{nowiki}}}}")
426
+ tc("<p>this is <tt>nowiki}}</tt></p>\n", "this is {{{nowiki}}}}}")
427
+ tc("<p>this is <tt>nowiki}}}</tt></p>\n", "this is {{{nowiki}}}}}}")
428
+ tc("<p>this is <tt>nowiki}}}}</tt></p>\n", "this is {{{nowiki}}}}}}}")
429
429
  end
430
430
 
431
431
  it 'should escape html' do
432
432
  # Special HTML chars should be escaped
433
- tc("<p>&lt;b&gt;not bold&lt;/b&gt;</p>", "<b>not bold</b>")
433
+ tc("<p>&lt;b&gt;not bold&lt;/b&gt;</p>\n", "<b>not bold</b>")
434
434
 
435
435
  # Image tags should be escape
436
- tc("<p><img src='image.jpg'/></p>", "[[Image(image.jpg)]]")
437
- tc("<p><img src='image.jpg' alt='&quot;tag&quot;'/></p>", "[[Image(image.jpg|\"tag\")]]")
436
+ tc("<p><img src='image.jpg'/></p>\n", "[[Image(image.jpg)]]")
437
+ tc("<p><img src='image.jpg' alt='&quot;tag&quot;'/></p>\n", "[[Image(image.jpg|\"tag\")]]")
438
438
 
439
439
  # Malicious links should not be converted.
440
- tc("<p><a href=\"javascript%3Aalert%28%22Boo%21%22%29\">Click</a></p>", "[[javascript:alert(\"Boo!\")|Click]]")
440
+ tc("<p><a href=\"javascript%3Aalert%28%22Boo%21%22%29\">Click</a></p>\n", "[[javascript:alert(\"Boo!\")|Click]]")
441
441
  end
442
442
 
443
443
  it 'should support character escape' do
444
- tc "<p>** Not Bold **</p>", "!** Not Bold !**"
445
- tc "<p>// Not Italic //</p>", "!// Not Italic !//"
446
- tc "<p>* Not Bullet</p>", "!* Not Bullet"
444
+ tc "<p>** Not Bold **</p>\n", "!** Not Bold !**"
445
+ tc "<p>// Not Italic //</p>\n", "!// Not Italic !//"
446
+ tc "<p>* Not Bullet</p>\n", "!* Not Bullet"
447
447
  # Following char is not a blank (space or line feed)
448
- tc "<p>Hello ~ world</p>", "Hello ~ world\n"
449
- tc "<p>Hello ! world</p>", "Hello ! world\n"
450
- tc "<p>Hello ! world</p>", "Hello ! world\n"
451
- tc "<p>Hello ! world</p>", "Hello !\nworld\n"
448
+ tc "<p>Hello ~ world</p>\n", "Hello ~ world\n"
449
+ tc "<p>Hello ! world</p>\n", "Hello ! world\n"
450
+ tc "<p>Hello ! world</p>\n", "Hello ! world\n"
451
+ tc "<p>Hello ! world</p>\n", "Hello !\nworld\n"
452
452
  # Not escaping inside URLs
453
- tc "<p><a href=\"http://example.org/~user/\">http://example.org/~user/</a></p>", "http://example.org/~user/"
453
+ tc "<p><a href=\"http://example.org/~user/\">http://example.org/~user/</a></p>\n", "http://example.org/~user/"
454
454
 
455
455
  # Escaping links
456
- tc "<p>http://www.example.org/</p>", "~http://www.example.org/"
456
+ tc "<p>http://www.example.org/</p>\n", "~http://www.example.org/"
457
457
  end
458
458
 
459
459
  it 'should parse horizontal rule' do
@@ -467,12 +467,12 @@ describe TracWiki::Parser do
467
467
  tc "<hr/>", " \t ---- \t "
468
468
 
469
469
  # Nothing else than hyphens and whitespace is "allowed"
470
- tc "<p>foo ----</p>", "foo ----\n"
471
- tc "<p>---- foo</p>", "---- foo\n"
470
+ tc "<p>foo ----</p>\n", "foo ----\n"
471
+ tc "<p>---- foo</p>\n", "---- foo\n"
472
472
 
473
473
  # [...] no whitespace is allowed between them
474
- tc "<p>-- -- </p>", "-- -- "
475
- tc "<p>-- -- </p>", "--\t-- "
474
+ tc "<p>-- -- </p>\n", "-- -- "
475
+ tc "<p>-- -- </p>\n", "--\t-- "
476
476
  end
477
477
 
478
478
  it 'should parse table' do
@@ -517,8 +517,8 @@ describe TracWiki::Parser do
517
517
  tc("<table><tr><td>table</td></tr></table><h1>heading</h1>", "||table||\n=heading=\n")
518
518
  tc("<table><tr><td>table</td></tr></table><h1>heading</h1>", "||table||\n\n=heading=\n")
519
519
  # table followed by paragraph
520
- tc("<table><tr><td>table</td></tr></table><p>par</p>", "||table||\npar\n")
521
- tc("<table><tr><td>table</td></tr></table><p>par</p>", "||table||\n\npar\n")
520
+ tc("<table><tr><td>table</td></tr></table><p>par</p>\n", "||table||\npar\n")
521
+ tc("<table><tr><td>table</td></tr></table><p>par</p>\n", "||table||\n\npar\n")
522
522
  # table followed by unordered list
523
523
  tc("<table><tr><td>table</td></tr></table><ul><li>item</li></ul>", "||table||\n* item\n")
524
524
  tc("<table><tr><td>table</td></tr></table><ul><li>item</li></ul>", "||table||\n\n* item\n")
@@ -541,8 +541,8 @@ describe TracWiki::Parser do
541
541
  tc("<h1>heading1</h1><h1>heading2</h1>", "=heading1=\n=heading2\n")
542
542
  tc("<h1>heading1</h1><h1>heading2</h1>", "=heading1=\n\n=heading2\n")
543
543
  # paragraph
544
- tc("<h1>heading</h1><p>par</p>", "=heading=\npar\n")
545
- tc("<h1>heading</h1><p>par</p>", "=heading=\n\npar\n")
544
+ tc("<h1>heading</h1><p>par</p>\n", "=heading=\npar\n")
545
+ tc("<h1>heading</h1><p>par</p>\n", "=heading=\n\npar\n")
546
546
  # unordered list
547
547
  tc("<h1>heading</h1><ul><li>item</li></ul>", "=heading=\n* item\n")
548
548
  tc("<h1>heading</h1><ul><li>item</li></ul>", "=heading=\n\n* item\n")
@@ -562,26 +562,26 @@ describe TracWiki::Parser do
562
562
 
563
563
  it 'should parse following paragraph' do
564
564
  # heading
565
- tc("<p>par</p><h1>heading</h1>", "par\n=heading=")
566
- tc("<p>par</p><h1>heading</h1>", "par\n\n=heading=")
565
+ tc("<p>par</p>\n<h1>heading</h1>", "par\n=heading=")
566
+ tc("<p>par</p>\n<h1>heading</h1>", "par\n\n=heading=")
567
567
  # paragraph
568
- tc("<p>par par</p>", "par\npar\n")
569
- tc("<p>par</p><p>par</p>", "par\n\npar\n")
568
+ tc("<p>par par</p>\n", "par\npar\n")
569
+ tc("<p>par</p>\n<p>par</p>\n", "par\n\npar\n")
570
570
  # unordered
571
- tc("<p>par</p><ul><li>item</li></ul>", "par\n* item")
572
- tc("<p>par</p><ul><li>item</li></ul>", "par\n\n* item")
571
+ tc("<p>par</p>\n<ul><li>item</li></ul>", "par\n* item")
572
+ tc("<p>par</p>\n<ul><li>item</li></ul>", "par\n\n* item")
573
573
  # ordered
574
- tc("<p>par</p><ol><li>item</li></ol>", "par\n1. item\n")
575
- tc("<p>par</p><ol><li>item</li></ol>", "par\n\n1. item\n")
574
+ tc("<p>par</p>\n<ol><li>item</li></ol>", "par\n1. item\n")
575
+ tc("<p>par</p>\n<ol><li>item</li></ol>", "par\n\n1. item\n")
576
576
  # horizontal
577
- tc("<p>par</p><hr/>", "par\n----\n")
578
- tc("<p>par</p><hr/>", "par\n\n----\n")
577
+ tc("<p>par</p>\n<hr/>", "par\n----\n")
578
+ tc("<p>par</p>\n<hr/>", "par\n\n----\n")
579
579
  # nowiki
580
- tc("<p>par</p><pre>nowiki</pre>", "par\n{{{\nnowiki\n}}}\n")
581
- tc("<p>par</p><pre>nowiki</pre>", "par\n\n{{{\nnowiki\n}}}\n")
580
+ tc("<p>par</p>\n<pre>nowiki</pre>", "par\n{{{\nnowiki\n}}}\n")
581
+ tc("<p>par</p>\n<pre>nowiki</pre>", "par\n\n{{{\nnowiki\n}}}\n")
582
582
  # table
583
- tc("<p>par</p><table><tr><td>table</td></tr></table>", "par\n||table||\n")
584
- tc("<p>par</p><table><tr><td>table</td></tr></table>", "par\n\n||table||\n")
583
+ tc("<p>par</p>\n<table><tr><td>table</td></tr></table>", "par\n||table||\n")
584
+ tc("<p>par</p>\n<table><tr><td>table</td></tr></table>", "par\n\n||table||\n")
585
585
  end
586
586
 
587
587
  it 'should parse following unordered list' do
@@ -590,7 +590,7 @@ describe TracWiki::Parser do
590
590
  tc("<ul><li>item</li></ul><h1>heading</h1>", "* item\n\n=heading=")
591
591
  # paragraph
592
592
  tc("<ul><li>item par</li></ul>", "* item\npar\n") # items may span multiple lines
593
- tc("<ul><li>item</li></ul><p>par</p>", "* item\n\npar\n")
593
+ tc("<ul><li>item</li></ul><p>par</p>\n", "* item\n\npar\n")
594
594
  # unordered
595
595
  tc("<ul><li>item</li><li>item</li></ul>", "* item\n* item\n")
596
596
  tc("<ul><li>item</li></ul><ul><li>item</li></ul>", "* item\n\n* item\n")
@@ -614,7 +614,7 @@ describe TracWiki::Parser do
614
614
  tc("<ol><li>item</li></ol><h1>heading</h1>", "1. item\n\n=heading=")
615
615
  # paragraph
616
616
  tc("<ol><li>item par</li></ol>", "1. item\npar\n") # items may span multiple lines
617
- tc("<ol><li>item</li></ol><p>par</p>", "1. item\n\npar\n")
617
+ tc("<ol><li>item</li></ol><p>par</p>\n", "1. item\n\npar\n")
618
618
  # unordered
619
619
  tc("<ol><li>item</li></ol><ul><li>item</li></ul>", "1. item\n* item\n")
620
620
  tc("<ol><li>item</li></ol><ul><li>item</li></ul>", "1. item\n\n* item\n")
@@ -637,8 +637,8 @@ describe TracWiki::Parser do
637
637
  tc("<hr/><h1>heading</h1>", "----\n=heading=")
638
638
  tc("<hr/><h1>heading</h1>", "----\n\n=heading=")
639
639
  # paragraph
640
- tc("<hr/><p>par</p>", "----\npar\n")
641
- tc("<hr/><p>par</p>", "----\n\npar\n")
640
+ tc("<hr/><p>par</p>\n", "----\npar\n")
641
+ tc("<hr/><p>par</p>\n", "----\n\npar\n")
642
642
  # unordered
643
643
  tc("<hr/><ul><li>item</li></ul>", "----\n* item")
644
644
  tc("<hr/><ul><li>item</li></ul>", "----\n* item")
@@ -664,8 +664,8 @@ describe TracWiki::Parser do
664
664
  tc("<pre>nowiki</pre><h1>heading</h1>", "{{{\nnowiki\n}}}\n=heading=")
665
665
  tc("<pre>nowiki</pre><h1>heading</h1>", "{{{\nnowiki\n}}}\n\n=heading=")
666
666
  # paragraph
667
- tc("<pre>nowiki</pre><p>par</p>", "{{{\nnowiki\n}}}\npar")
668
- tc("<pre>nowiki</pre><p>par</p>", "{{{\nnowiki\n}}}\n\npar")
667
+ tc("<pre>nowiki</pre><p>par</p>\n", "{{{\nnowiki\n}}}\npar")
668
+ tc("<pre>nowiki</pre><p>par</p>\n", "{{{\nnowiki\n}}}\n\npar")
669
669
  # unordered
670
670
  tc("<pre>nowiki</pre><ul><li>item</li></ul>", "{{{\nnowiki\n}}}\n* item\n")
671
671
  tc("<pre>nowiki</pre><ul><li>item</li></ul>", "{{{\nnowiki\n}}}\n\n* item\n")
@@ -684,38 +684,38 @@ describe TracWiki::Parser do
684
684
  end
685
685
 
686
686
  it 'should parse image' do
687
- tc("<p><img src='image.jpg'/></p>", "[[Image(image.jpg)]]")
688
- tc("<p><img src='image.jpg' alt='tag'/></p>", "[[Image(image.jpg|tag)]]")
689
- tc("<p><img src='http://example.org/image.jpg'/></p>", "[[Image(http://example.org/image.jpg)]]")
687
+ tc("<p><img src='image.jpg'/></p>\n", "[[Image(image.jpg)]]")
688
+ tc("<p><img src='image.jpg' alt='tag'/></p>\n", "[[Image(image.jpg|tag)]]")
689
+ tc("<p><img src='http://example.org/image.jpg'/></p>\n", "[[Image(http://example.org/image.jpg)]]")
690
690
  end
691
691
 
692
692
  it 'should parse bold combo' do
693
- tc("<p><strong>bold and</strong></p><table><tr><td>table</td></tr></table><p>end<strong></strong></p>",
693
+ tc("<p><strong>bold and</strong></p>\n<table><tr><td>table</td></tr></table><p>end<strong></strong></p>\n",
694
694
  "**bold and\n||table||\nend**")
695
695
  end
696
696
 
697
697
  it 'should support extensions' do
698
- tce("<p>This is <u>underlined</u></p>",
698
+ tce("<p>This is <u>underlined</u></p>\n",
699
699
  "This is __underlined__")
700
700
 
701
- tce("<p>This is <del>deleted</del></p>",
701
+ tce("<p>This is <del>deleted</del></p>\n",
702
702
  "This is ~~deleted~~")
703
703
 
704
- tce("<p>This is <sup>super</sup></p>",
704
+ tce("<p>This is <sup>super</sup></p>\n",
705
705
  "This is ^super^")
706
706
 
707
- tce("<p>This is <sub>sub</sub></p>",
707
+ tce("<p>This is <sub>sub</sub></p>\n",
708
708
  "This is ,,sub,,")
709
709
 
710
- tce("<p>&#174;</p>", "(R)")
711
- tce("<p>&#174;</p>", "(r)")
712
- tce("<p>&#169;</p>", "(C)")
713
- tce("<p>&#169;</p>", "(c)")
710
+ tce("<p>&#174;</p>\n", "(R)")
711
+ tce("<p>&#174;</p>\n", "(r)")
712
+ tce("<p>&#169;</p>\n", "(C)")
713
+ tce("<p>&#169;</p>\n", "(c)")
714
714
  end
715
715
 
716
716
  it 'should support no_escape' do
717
- tc("<p><a href=\"a%2Fb%2Fc\">a/b/c</a></p>", "[[a/b/c]]")
718
- tc("<p><a href=\"a/b/c\">a/b/c</a></p>", "[[a/b/c]]", :no_escape => true)
717
+ tc("<p><a href=\"a%2Fb%2Fc\">a/b/c</a></p>\n", "[[a/b/c]]")
718
+ tc("<p><a href=\"a/b/c\">a/b/c</a></p>\n", "[[a/b/c]]", :no_escape => true)
719
719
  end
720
720
  end
721
721
  # vim: tw=0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trac-wiki
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: