trac-wiki 0.2.21 → 0.2.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -282,9 +282,14 @@ module TracWiki
282
282
  # make_local_link("LocalLink") #=> "/LocalLink"
283
283
  # make_local_link("Wikipedia:Bread") #=> "http://en.wikipedia.org/wiki/Bread"
284
284
  def make_local_link(link) #:doc:
285
- return "#{@base}#{link}" if no_escape?
286
285
  link, anch = link.split(/#/, 2)
286
+ if no_escape?
287
+ return "#{@base}#{link}" if ! anch
288
+ return "##{anch}" if link == ''
289
+ return "#{@base}#{link}##{anch}"
290
+ end
287
291
  return "#{@base}#{escape_url(link)}" if ! anch
292
+ return "##{escape_url(anch)}" if link == ''
288
293
  "#{@base}#{escape_url(link)}##{escape_url(anch)}"
289
294
  end
290
295
 
@@ -417,6 +422,7 @@ module TracWiki
417
422
  str = $'
418
423
  link, content, whole= $1, $3, $&
419
424
  make_link(link, content, "[#{whole}]")
425
+ # [[ link1 | text2 ]]
420
426
  when /\A \[\[ \s* ([^|]*?) \s* (\|\s*(.*?))? \s* \]\] /mx
421
427
  str = $'
422
428
  link, content, whole= $1, $3, $&
@@ -144,8 +144,8 @@ module TracWiki
144
144
  end
145
145
 
146
146
 
147
- TAGS_APPEND_NL = [:div, :p]
148
- TAGS_FORCE_PAIR = [:a, :td, :h1, :h2, :h3, :h4, :h5, :h6, :div, :strong, :script]
147
+ TAGS_APPEND_NL = [:div, :p, :li, :ol, :ul, :dl, :table, :tr, :td ]
148
+ TAGS_FORCE_PAIR = [:a, :td, :h1, :h2, :h3, :h4, :h5, :h6, :div, :script]
149
149
  TAGS_ALLOVED = [:a,
150
150
  :h1, :h2, :h3, :h4, :h5, :h6,
151
151
  :div, :span, :p, :pre,
@@ -155,7 +155,7 @@ module TracWiki
155
155
  :br , :img, :hr,
156
156
  :form, :textarea, :input, :select, :option,
157
157
  ]
158
- TAGS_SKIP_EMPTY = [ :p ]
158
+ TAGS_SKIP_EMPTY = [ :p , :ol, :li, :strong, :em ]
159
159
  ATTRIBUTES_ALLOWED = { :form => [:action, :meth],
160
160
  :input => [:size, :type, :value, :name],
161
161
  :select => [:multiple, :name],
@@ -178,7 +178,7 @@ module TracWiki
178
178
  attrs.each_pair do |k,v|
179
179
  next if v.nil?
180
180
  k_sym = k.to_sym
181
- next if ! ATTRIBUTES_ALLOWED[:_all].include?(k_sym) && ! tag_attrs.include?(k_sym)
181
+ next if ! ( ATTRIBUTES_ALLOWED[:_all].include?(k_sym) || tag_attrs.include?(k_sym) )
182
182
  next if k == :style && v !~ ATTRIBUTE_STYLE_REX
183
183
  #print "style: #{v}\n" if k == :style
184
184
  ret.push "#{TracWiki::Parser.escapeHTML(k.to_s)}=\"#{TracWiki::Parser.escapeHTML(v.to_s)}\""
@@ -1,3 +1,3 @@
1
1
  module TracWiki
2
- VERSION = '0.2.21'
2
+ VERSION = '0.2.23'
3
3
  end
data/test/parser_test.rb CHANGED
@@ -50,7 +50,7 @@ describe TracWiki::Parser do
50
50
  it 'should not parse linkd' do
51
51
  tc "<p>[[ahoj]]</p>\n", "[[ahoj]]", :no_link => true
52
52
  tc "<p>[[ahoj|bhoj]]</p>\n", "[[ahoj|bhoj]]", :no_link => true
53
- tc "<ul><li>[[ahoj|bhoj]]</li></ul>", "* [[ahoj|bhoj]]", :no_link => true
53
+ tc "<ul><li>[[ahoj|bhoj]]</li>\n</ul>\n", "* [[ahoj|bhoj]]", :no_link => true
54
54
  end
55
55
  it 'should parse bold' do
56
56
  # Bold can be used inside paragraphs
@@ -58,10 +58,10 @@ describe TracWiki::Parser do
58
58
  tc "<p>This <strong>is</strong> bold and <strong>bold</strong>ish</p>\n", "This **is** bold and **bold**ish"
59
59
 
60
60
  # Bold can be used inside list items
61
- tc "<ul><li>This is <strong>bold</strong></li></ul>", "* This is **bold**"
61
+ tc "<ul><li>This is <strong>bold</strong></li>\n</ul>\n", "* This is **bold**"
62
62
 
63
63
  # Bold can be used inside table cells
64
- tc("<table><tr><td>This is <strong>bold</strong></td></tr></table>",
64
+ tc("<table><tr><td>This is <strong>bold</strong></td>\n</tr>\n</table>\n",
65
65
  "||This is **bold**||")
66
66
 
67
67
  # Links can appear inside bold text:
@@ -72,11 +72,11 @@ describe TracWiki::Parser do
72
72
  tc "<p>This <strong>is bold</strong></p>\n", "This **is bold"
73
73
 
74
74
  # Bold will end at the end of list items
75
- tc("<ul><li>Item <strong>bold</strong></li><li>Item normal</li></ul>",
75
+ tc("<ul><li>Item <strong>bold</strong></li>\n<li>Item normal</li>\n</ul>\n",
76
76
  "* Item **bold\n* Item normal")
77
77
 
78
78
  # Bold will end at the end of table cells
79
- tc("<table><tr><td>Item <strong>bold</strong></td><td>Another <strong>bold</strong></td></tr></table>",
79
+ tc("<table><tr><td>Item <strong>bold</strong></td>\n<td>Another <strong>bold</strong></td>\n</tr>\n</table>\n",
80
80
  "||Item **bold||Another **bold||")
81
81
 
82
82
  # Bold should not cross paragraphs
@@ -121,10 +121,10 @@ describe TracWiki::Parser do
121
121
  "This ''is'' italic and ''italic''ish")
122
122
 
123
123
  # Italic can be used inside list items
124
- tc "<ul><li>This is <em>italic</em></li></ul>", "* This is ''italic''"
124
+ tc "<ul><li>This is <em>italic</em></li>\n</ul>\n", "* This is ''italic''"
125
125
 
126
126
  # Italic can be used inside table cells
127
- tc("<table><tr><td>This is <em>italic</em></td></tr></table>",
127
+ tc("<table><tr><td>This is <em>italic</em></td>\n</tr>\n</table>\n",
128
128
  "||This is ''italic''||")
129
129
 
130
130
  # Links can appear inside italic text:
@@ -135,11 +135,11 @@ describe TracWiki::Parser do
135
135
  tc "<p>This <em>is italic</em></p>\n", "This ''is italic"
136
136
 
137
137
  # Italic will end at the end of list items
138
- tc("<ul><li>Item <em>italic</em></li><li>Item normal</li></ul>",
138
+ tc("<ul><li>Item <em>italic</em></li>\n<li>Item normal</li>\n</ul>\n",
139
139
  "* Item ''italic\n* Item normal")
140
140
 
141
141
  # Italic will end at the end of table cells
142
- tc("<table><tr><td>Item <em>italic</em></td><td>Another <em>italic</em></td></tr></table>",
142
+ tc("<table><tr><td>Item <em>italic</em></td>\n<td>Another <em>italic</em></td>\n</tr>\n</table>\n",
143
143
  "||Item ''italic||Another ''italic")
144
144
 
145
145
  # Italic should not cross paragraphs
@@ -295,10 +295,10 @@ describe TracWiki::Parser do
295
295
  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."
296
296
 
297
297
  # A list end paragraphs too.
298
- tc "<p>Hello</p>\n<ul><li>Item</li></ul>", "Hello\n* Item\n"
298
+ tc "<p>Hello</p>\n<ul><li>Item</li>\n</ul>\n", "Hello\n* Item\n"
299
299
 
300
300
  # A table end paragraphs too.
301
- tc "<p>Hello</p>\n<table><tr><td>Cell</td></tr></table>", "Hello\n||Cell||"
301
+ tc "<p>Hello</p>\n<table><tr><td>Cell</td>\n</tr>\n</table>\n", "Hello\n||Cell||"
302
302
 
303
303
  # A nowiki end paragraphs too.
304
304
  tc "<p>Hello</p>\n<pre>nowiki</pre>", "Hello\n{{{\nnowiki\n}}}\n"
@@ -326,15 +326,15 @@ describe TracWiki::Parser do
326
326
  end
327
327
  it 'should parse definition list' do
328
328
  # FIXME: trailing space
329
- tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>", "Monty Python:: \n definition\n"
330
- tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>", "Monty Python::\ndefinition\n"
331
- tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>", "Monty Python::\r\ndefinition\n"
332
- tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>", "Monty Python::\r\n definition\n"
333
- tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>", "Monty Python:: \r\n definition\n"
334
- tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>", "Monty Python:: definition\n"
335
- tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>", "Monty Python:: definition\n"
336
- tc "<dl><dt>Monty::Python</dt><dd> definition</dd></dl>", "Monty::Python:: definition\n"
337
- tc "<dl><dt>::Python</dt><dd> definition</dd></dl>", "::Python:: definition\n"
329
+ tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>\n", "Monty Python:: \n definition\n"
330
+ tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>\n", "Monty Python::\ndefinition\n"
331
+ tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>\n", "Monty Python::\r\ndefinition\n"
332
+ tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>\n", "Monty Python::\r\n definition\n"
333
+ tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>\n", "Monty Python:: \r\n definition\n"
334
+ tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>\n", "Monty Python:: definition\n"
335
+ tc "<dl><dt>Monty Python</dt><dd> definition</dd></dl>\n", "Monty Python:: definition\n"
336
+ tc "<dl><dt>Monty::Python</dt><dd> definition</dd></dl>\n", "Monty::Python:: definition\n"
337
+ tc "<dl><dt>::Python</dt><dd> definition</dd></dl>\n", "::Python:: definition\n"
338
338
  end
339
339
  it 'should not parse definition list' do
340
340
  # FIXME: trailing space
@@ -349,133 +349,133 @@ describe TracWiki::Parser do
349
349
  # List items begin with a * at the beginning of a line.
350
350
  # An item ends at the next *
351
351
 
352
- tc "<ul><li>Item 1 next</li></ul>", "* Item 1\n next\n"
352
+ tc "<ul><li>Item 1 next</li>\n</ul>\n", "* Item 1\n next\n"
353
353
 
354
354
  # Whitespace is optional before and after the *.
355
- tc("<ul><li>Item 1</li><li>Item 2</li><li>Item 3</li></ul>",
355
+ tc("<ul><li>Item 1</li>\n<li>Item 2</li>\n<li>Item 3</li>\n</ul>\n",
356
356
  " * Item 1\n * Item 2\n *\t\tItem 3\n")
357
357
 
358
358
  # A space is required if if the list element starts with bold text.
359
- tc("<ul><li><strong>Item 1</strong></li></ul>", "* **Item 1")
359
+ tc("<ul><li><strong>Item 1</strong></li>\n</ul>\n", "* **Item 1")
360
360
 
361
361
  # An item ends at blank line
362
- tc("<ul><li>Item</li></ul><p>Par</p>\n", "* Item\n\nPar\n")
362
+ tc("<ul><li>Item</li>\n</ul>\n<p>Par</p>\n", "* Item\n\nPar\n")
363
363
 
364
364
  # An item ends at a heading
365
- tc("<ul><li>Item</li></ul><h1>Heading</h1>", "* Item\n= Heading =\n")
365
+ tc("<ul><li>Item</li>\n</ul>\n<h1>Heading</h1>", "* Item\n= Heading =\n")
366
366
 
367
367
  # An item ends at a table
368
- tc("<ul><li>Item</li></ul><table><tr><td>Cell</td></tr></table>", "* Item\n||Cell||\n")
368
+ tc("<ul><li>Item</li>\n</ul>\n<table><tr><td>Cell</td>\n</tr>\n</table>\n", "* Item\n||Cell||\n")
369
369
 
370
370
  # An item ends at a nowiki block
371
- tc("<ul><li>Item</li></ul><pre>Code</pre>", "* Item\n{{{\nCode\n}}}\n")
371
+ tc("<ul><li>Item</li>\n</ul>\n<pre>Code</pre>", "* Item\n{{{\nCode\n}}}\n")
372
372
 
373
373
  # An item can span multiple lines
374
- tc("<ul><li>The quick brown fox jumps over lazy dog.</li><li>Humpty Dumpty sat on a wall.</li></ul>",
374
+ tc("<ul><li>The quick brown fox jumps over lazy dog.</li>\n<li>Humpty Dumpty sat on a wall.</li>\n</ul>\n",
375
375
  "* The quick\nbrown fox\n\tjumps over\nlazy dog.\n* Humpty Dumpty\nsat\t\non a wall.")
376
376
 
377
377
  # An item can contain line breaks
378
- tc("<ul><li>The quick brown<br/>fox jumps over lazy dog.</li></ul>",
378
+ tc("<ul><li>The quick brown<br/>fox jumps over lazy dog.</li>\n</ul>\n",
379
379
  "* The quick brown\\\\fox jumps over lazy dog.")
380
380
 
381
381
  # Nested
382
- tc "<ul><li>Item 1<ul><li>Item 2</li></ul></li><li>Item 3</li></ul>", "* Item 1\n * Item 2\n*\t\tItem 3\n"
382
+ tc "<ul><li>Item 1<ul><li>Item 2</li>\n</ul>\n</li>\n<li>Item 3</li>\n</ul>\n", "* Item 1\n * Item 2\n*\t\tItem 3\n"
383
383
 
384
384
  # Nested up to 5 levels
385
- tc("<ul><li>Item 1<ul><li>Item 2<ul><li>Item 3<ul><li>Item 4<ul><li>Item 5</li></ul></li></ul></li></ul></li></ul></li></ul>",
385
+ tc("<ul><li>Item 1<ul><li>Item 2<ul><li>Item 3<ul><li>Item 4<ul><li>Item 5</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n",
386
386
  "* Item 1\n * Item 2\n * Item 3\n * Item 4\n * Item 5\n")
387
387
 
388
- tc("<ul><li>Item 1<ul><li>Item 2<ul><li>Item 3<ul><li>Item 4</li></ul></li></ul></li></ul></li><li>Item 5</li></ul>",
388
+ tc("<ul><li>Item 1<ul><li>Item 2<ul><li>Item 3<ul><li>Item 4</li>\n</ul>\n</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Item 5</li>\n</ul>\n",
389
389
  "* Item 1\n * Item 2\n * Item 3\n * Item 4\n* Item 5\n")
390
390
 
391
391
  # ** immediatly following a list element will be treated as a nested unordered element.
392
- tc("<ul><li>Hello, World!<ul><li>Not bold</li></ul></li></ul>",
392
+ tc("<ul><li>Hello, World!<ul><li>Not bold</li>\n</ul>\n</li>\n</ul>\n",
393
393
  "* Hello,\n World!\n * Not bold\n")
394
394
 
395
395
  # ** immediatly following a list element will be treated as a nested unordered element.
396
- tc("<ol><li>Hello, World!<ul><li>Not bold</li></ul></li></ol>",
396
+ tc("<ol><li>Hello, World!<ul><li>Not bold</li>\n</ul>\n</li>\n</ol>\n",
397
397
  "1. Hello,\n World!\n * Not bold\n")
398
398
 
399
399
  # [...] otherwise it will be treated as the beginning of bold text.
400
- tc("<ul><li>Hello, World!</li></ul><p><strong>Not bold</strong></p>\n",
400
+ tc("<ul><li>Hello, World!</li>\n</ul>\n<p><strong>Not bold</strong></p>\n",
401
401
  "* Hello,\nWorld!\n\n**Not bold\n")
402
402
  end
403
403
 
404
404
  it 'should parse ordered lists' do
405
405
  # List items begin with a * at the beginning of a line.
406
406
  # An item ends at the next *
407
- tc "<ol><li>Item 1</li><li>Item 2</li><li>Item 3</li></ol>", "1. Item 1\n2. Item 2\n3. \t\tItem 3\n"
407
+ tc "<ol><li>Item 1</li>\n<li>Item 2</li>\n<li>Item 3</li>\n</ol>\n", "1. Item 1\n2. Item 2\n3. \t\tItem 3\n"
408
408
 
409
409
  # Whitespace is optional before and after the #.
410
- tc("<ol><li>Item 1</li><li>Item 2</li><li>Item 3</li></ol>",
410
+ tc("<ol><li>Item 1</li>\n<li>Item 2</li>\n<li>Item 3</li>\n</ol>\n",
411
411
  "1. Item 1\n1. Item 2\n4.\t\tItem 3\n")
412
412
 
413
413
  # A space is required if if the list element starts with bold text.
414
- # tc("<ol><li><ol><li><ol><li>Item 1</li></ol></li></ol></li></ol>", "###Item 1")
415
- tc("<ol><li><strong>Item 1</strong></li></ol>", "1. **Item 1")
414
+ # tc("<ol><li><ol><li><ol><li>Item 1</li></ol>\n</li>\n</ol>\n</li>\n</ol>\n", "###Item 1")
415
+ tc("<ol><li><strong>Item 1</strong></li>\n</ol>\n", "1. **Item 1")
416
416
 
417
417
  # An item ends at blank line
418
- tc("<ol><li>Item</li></ol><p>Par</p>\n", "1. Item\n\nPar\n")
418
+ tc("<ol><li>Item</li>\n</ol>\n<p>Par</p>\n", "1. Item\n\nPar\n")
419
419
 
420
420
  # An item ends at a heading
421
- tc("<ol><li>Item</li></ol><h1>Heading</h1>", "1. Item\n= Heading =\n")
421
+ tc("<ol><li>Item</li>\n</ol>\n<h1>Heading</h1>", "1. Item\n= Heading =\n")
422
422
 
423
423
  # An item ends at a table
424
- tc("<ol><li>Item</li></ol><table><tr><td>Cell</td></tr></table>", "1. Item\n||Cell||\n")
424
+ tc("<ol><li>Item</li>\n</ol>\n<table><tr><td>Cell</td>\n</tr>\n</table>\n", "1. Item\n||Cell||\n")
425
425
 
426
426
  # An item ends at a nowiki block
427
- tc("<ol><li>Item</li></ol><pre>Code</pre>", "1. Item\n{{{\nCode\n}}}\n")
427
+ tc("<ol><li>Item</li>\n</ol>\n<pre>Code</pre>", "1. Item\n{{{\nCode\n}}}\n")
428
428
 
429
429
  # An item can span multiple lines
430
- tc("<ol><li>The quick brown fox jumps over lazy dog.</li><li>Humpty Dumpty sat on a wall.</li></ol>",
430
+ tc("<ol><li>The quick brown fox jumps over lazy dog.</li>\n<li>Humpty Dumpty sat on a wall.</li>\n</ol>\n",
431
431
  "1. The quick\nbrown fox\n\tjumps over\nlazy dog.\n2. Humpty Dumpty\nsat\t\non a wall.")
432
432
 
433
433
  # An item can contain line breaks
434
- tc("<ol><li>The quick brown<br/>fox jumps over lazy dog.</li></ol>",
434
+ tc("<ol><li>The quick brown<br/>fox jumps over lazy dog.</li>\n</ol>\n",
435
435
  "1. The quick brown\\\\fox jumps over lazy dog.")
436
436
 
437
437
  # Nested
438
- tc "<ol><li>Item 1<ol><li>Item 2</li></ol></li><li>Item 3</li></ol>", "1. Item 1\n 1. Item 2\n2.\t\tItem 3\n"
438
+ tc "<ol><li>Item 1<ol><li>Item 2</li>\n</ol>\n</li>\n<li>Item 3</li>\n</ol>\n", "1. Item 1\n 1. Item 2\n2.\t\tItem 3\n"
439
439
 
440
440
  # Nested up to 5 levels
441
- tc("<ol><li>Item 1<ol><li>Item 2<ol><li>Item 3<ol><li>Item 4<ol><li>Item 5</li></ol></li></ol></li></ol></li></ol></li></ol>",
441
+ tc("<ol><li>Item 1<ol><li>Item 2<ol><li>Item 3<ol><li>Item 4<ol><li>Item 5</li>\n</ol>\n</li>\n</ol>\n</li>\n</ol>\n</li>\n</ol>\n</li>\n</ol>\n",
442
442
  "1. Item 1\n 1. Item 2\n 1. Item 3\n 1. Item 4\n 1. Item 5\n")
443
443
 
444
444
  # The two-bullet rule only applies to **.
445
- # tc("<ol><li><ol><li>Item</li></ol></li></ol>", "##Item")
445
+ # tc("<ol><li><ol><li>Item</li>\n</ol>\n</li>\n</ol>\n", "##Item")
446
446
  end
447
447
 
448
448
  it 'should parse ordered lists #2' do
449
- tc "<ol><li>Item 1</li><li>Item 2</li><li>Item 3</li></ol>", "1. Item 1\n1. Item 2\n1.\t\tItem 3\n"
449
+ tc "<ol><li>Item 1</li>\n<li>Item 2</li>\n<li>Item 3</li>\n</ol>\n", "1. Item 1\n1. Item 2\n1.\t\tItem 3\n"
450
450
  # Nested
451
- tc "<ol><li>Item 1<ol><li>Item 2</li></ol></li><li>Item 3</li></ol>", "1. Item 1\n 1. Item 2\n1.\t\tItem 3\n"
451
+ tc "<ol><li>Item 1<ol><li>Item 2</li>\n</ol>\n</li>\n<li>Item 3</li>\n</ol>\n", "1. Item 1\n 1. Item 2\n1.\t\tItem 3\n"
452
452
  # Multiline
453
- tc "<ol><li>Item 1 on multiple lines</li></ol>", "1. Item 1\non multiple lines"
453
+ tc "<ol><li>Item 1 on multiple lines</li>\n</ol>\n", "1. Item 1\non multiple lines"
454
454
  end
455
455
 
456
456
  it 'should parse ambiguious mixed lists' do
457
457
  # ol following ul
458
- tc("<ul><li>uitem</li></ul><ol><li>oitem</li></ol>", "* uitem\n1. oitem\n")
458
+ tc("<ul><li>uitem</li>\n</ul>\n<ol><li>oitem</li>\n</ol>\n", "* uitem\n1. oitem\n")
459
459
 
460
460
  # ul following ol
461
- tc("<ol><li>uitem</li></ol><ul><li>oitem</li></ul>", "1. uitem\n* oitem\n")
461
+ tc("<ol><li>uitem</li>\n</ol>\n<ul><li>oitem</li>\n</ul>\n", "1. uitem\n* oitem\n")
462
462
 
463
463
  # 2ol following ul
464
- tc("<ul><li>uitem<ol><li>oitem</li></ol></li></ul>", "* uitem\n 1. oitem\n")
464
+ tc("<ul><li>uitem<ol><li>oitem</li>\n</ol>\n</li>\n</ul>\n", "* uitem\n 1. oitem\n")
465
465
 
466
466
  # 2ul following ol
467
- tc("<ol><li>uitem<ul><li>oitem</li></ul></li></ol>", "1. uitem\n * oitem\n")
467
+ tc("<ol><li>uitem<ul><li>oitem</li>\n</ul>\n</li>\n</ol>\n", "1. uitem\n * oitem\n")
468
468
 
469
469
  # 3ol following 3ul
470
- # tc("<ul><li><ul><li><ul><li>uitem</li></ul><ol><li>oitem</li></ol></li></ul></li></ul>", "***uitem\n###oitem\n")
470
+ # tc("<ul><li><ul><li><ul><li>uitem</li>\n</ul>\n<ol><li>oitem</li>\n</ol>\n</li>\n</ul>\n</li>\n</ul>\n", "***uitem\n###oitem\n")
471
471
 
472
472
  # 2ul following 2ol
473
- # tc("<ol><li><ol><li>uitem</li></ol><ul><li>oitem</li></ul></li></ol>", "##uitem\n**oitem\n")
473
+ # tc("<ol><li><ol><li>uitem</li>\n</ol>\n<ul><li>oitem</li>\n</ul>\n</li>\n</ol>\n", "##uitem\n**oitem\n")
474
474
 
475
475
  # ol following 2ol
476
- # tc("<ol><li><ol><li>oitem1</li></ol></li><li>oitem2</li></ol>", "##oitem1\n#oitem2\n")
476
+ # tc("<ol><li><ol><li>oitem1</li>\n</ol>\n</li>\n<li>oitem2</li>\n</ol>\n", "##oitem1\n#oitem2\n")
477
477
  # ul following 2ol
478
- # tc("<ol><li><ol><li>oitem1</li></ol></li></ol><ul><li>oitem2</li></ul>", "##oitem1\n*oitem2\n")
478
+ # tc("<ol><li><ol><li>oitem1</li>\n</ol>\n</li>\n</ol>\n<ul><li>oitem2</li>\n</ul>\n", "##oitem1\n*oitem2\n")
479
479
  end
480
480
 
481
481
  it 'should parse ambiguious italics and url' do
@@ -588,67 +588,67 @@ describe TracWiki::Parser do
588
588
  end
589
589
 
590
590
  it 'should parse table' do
591
- tc "<table><tr><td>Hello</td><td>World!</td></tr></table>", "||Hello||World!||"
592
- tc "<table><tr><td>Hello</td><td>World!</td></tr><tr><td>Hello</td><td>World!</td></tr></table>", "||Hello||World!||\n||Hello||World!||\n\n"
593
- tc "<table><tr><td>Hello</td><td>World!</td></tr><tr><td>Hello</td><td>World!</td></tr></table>", "||Hello||World!||\r\n||Hello||World!||\r\n\n"
594
- tc "<table><tr><td>Hello</td><td>World!</td></tr></table>", "||Hello||\\\n||World!||"
595
- tc "<table><tr><td>He</td><td>llo</td><td>World!</td></tr></table>", "||He||llo||\\\n||World!||"
596
- tc "<table><tr><td>Hello</td><td colspan=\"2\">World!</td></tr></table>", "||Hello||||World!||"
597
- tc "<table><tr><td>Hello</td><td colspan=\"2\">kuk</td><td>World!</td></tr></table>", "||Hello||||kuk||\\\n||World!||"
598
- tc "<table><tr><td>1</td><td>2</td><td>3</td></tr><tr><td colspan=\"2\">1-2</td><td>3</td></tr><tr><td>1</td><td colspan=\"2\">2-3</td></tr><tr><td colspan=\"3\">1-2-3</td></tr></table>", "|| 1 || 2 || 3 ||\n|||| 1-2 || 3 ||\n|| 1 |||| 2-3 ||\n|||||| 1-2-3 ||\n"
599
-
600
- tc "<table><tr><td>table</td><td style=\"text-align:center\">center</td></tr></table>", "||table|| center ||"
601
- tc "<table><tr><td>table</td><td style=\"text-align:right\">right</td></tr></table>", "||table|| right||"
602
- tc "<table><tr><td>table</td><td style=\"text-align:center\">center</td><td style=\"text-align:right\">right</td></tr></table>", "||table|| center || right||"
603
-
604
- tc "<table><tr><td>Hello, World!</td></tr></table>", "||Hello, World!||"
605
- tc "<table><tr><td style=\"text-align:right\">Hello, Right World!</td></tr></table>", "|| Hello, Right World!||"
606
- tc "<table><tr><th style=\"text-align:right\">Hello, Right World!</th></tr></table>", "||= Hello, Right World!=||"
607
- tc "<table><tr><td style=\"text-align:center\">Hello, Centered World!</td></tr></table>", "|| Hello, Centered World! ||"
608
- tc "<table><tr><th style=\"text-align:center\">Hello, Centered World!</th></tr></table>", "||= Hello, Centered World! =||"
591
+ tc "<table><tr><td>Hello</td>\n<td>World!</td>\n</tr>\n</table>\n", "||Hello||World!||"
592
+ tc "<table><tr><td>Hello</td>\n<td>World!</td>\n</tr>\n<tr><td>Hello</td>\n<td>World!</td>\n</tr>\n</table>\n", "||Hello||World!||\n||Hello||World!||\n\n"
593
+ tc "<table><tr><td>Hello</td>\n<td>World!</td>\n</tr>\n<tr><td>Hello</td>\n<td>World!</td>\n</tr>\n</table>\n", "||Hello||World!||\r\n||Hello||World!||\r\n\n"
594
+ tc "<table><tr><td>Hello</td>\n<td>World!</td>\n</tr>\n</table>\n", "||Hello||\\\n||World!||"
595
+ tc "<table><tr><td>He</td>\n<td>llo</td>\n<td>World!</td>\n</tr>\n</table>\n", "||He||llo||\\\n||World!||"
596
+ tc "<table><tr><td>Hello</td>\n<td colspan=\"2\">World!</td>\n</tr>\n</table>\n", "||Hello||||World!||"
597
+ tc "<table><tr><td>Hello</td>\n<td colspan=\"2\">kuk</td>\n<td>World!</td>\n</tr>\n</table>\n", "||Hello||||kuk||\\\n||World!||"
598
+ tc "<table><tr><td>1</td>\n<td>2</td>\n<td>3</td>\n</tr>\n<tr><td colspan=\"2\">1-2</td>\n<td>3</td>\n</tr>\n<tr><td>1</td>\n<td colspan=\"2\">2-3</td>\n</tr>\n<tr><td colspan=\"3\">1-2-3</td>\n</tr>\n</table>\n", "|| 1 || 2 || 3 ||\n|||| 1-2 || 3 ||\n|| 1 |||| 2-3 ||\n|||||| 1-2-3 ||\n"
599
+
600
+ tc "<table><tr><td>table</td>\n<td style=\"text-align:center\">center</td>\n</tr>\n</table>\n", "||table|| center ||"
601
+ tc "<table><tr><td>table</td>\n<td style=\"text-align:right\">right</td>\n</tr>\n</table>\n", "||table|| right||"
602
+ tc "<table><tr><td>table</td>\n<td style=\"text-align:center\">center</td>\n<td style=\"text-align:right\">right</td>\n</tr>\n</table>\n", "||table|| center || right||"
603
+
604
+ tc "<table><tr><td>Hello, World!</td>\n</tr>\n</table>\n", "||Hello, World!||"
605
+ tc "<table><tr><td style=\"text-align:right\">Hello, Right World!</td>\n</tr>\n</table>\n", "|| Hello, Right World!||"
606
+ tc "<table><tr><th style=\"text-align:right\">Hello, Right World!</th></tr>\n</table>\n", "||= Hello, Right World!=||"
607
+ tc "<table><tr><td style=\"text-align:center\">Hello, Centered World!</td>\n</tr>\n</table>\n", "|| Hello, Centered World! ||"
608
+ tc "<table><tr><th style=\"text-align:center\">Hello, Centered World!</th></tr>\n</table>\n", "||= Hello, Centered World! =||"
609
609
  # Multiple columns
610
- tc "<table><tr><td>c1</td><td>c2</td><td>c3</td></tr></table>", "||c1||c2||c3||"
610
+ tc "<table><tr><td>c1</td>\n<td>c2</td>\n<td>c3</td>\n</tr>\n</table>\n", "||c1||c2||c3||"
611
611
  # Multiple rows
612
- tc "<table><tr><td>c11</td><td>c12</td></tr><tr><td>c21</td><td>c22</td></tr></table>", "||c11||c12||\n||c21||c22||\n"
612
+ tc "<table><tr><td>c11</td>\n<td>c12</td>\n</tr>\n<tr><td>c21</td>\n<td>c22</td>\n</tr>\n</table>\n", "||c11||c12||\n||c21||c22||\n"
613
613
  # End pipe is optional
614
- tc "<table><tr><td>c1</td><td>c2</td><td>c3</td></tr></table>", "||c1||c2||c3"
614
+ tc "<table><tr><td>c1</td>\n<td>c2</td>\n<td>c3</td>\n</tr>\n</table>\n", "||c1||c2||c3"
615
615
  # Empty cells
616
- tc "<table><tr><td>c1</td><td></td><td>c2</td></tr></table>", "||c1|| ||c2"
616
+ tc "<table><tr><td>c1</td>\n<td></td>\n<td>c2</td>\n</tr>\n</table>\n", "||c1|| ||c2"
617
617
  # Escaping cell separator
618
- tc "<table><tr><td>c1|c2</td><td>c3</td></tr></table>", "||c1!|c2||c3"
618
+ tc "<table><tr><td>c1|c2</td>\n<td>c3</td>\n</tr>\n</table>\n", "||c1!|c2||c3"
619
619
  # Escape in last cell + empty cell
620
- tc "<table><tr><td>c1</td><td>c2|</td></tr></table>", "||c1||c2!|"
621
- tc "<table><tr><td>c1</td><td>c2|</td></tr></table>", "||c1||c2!|"
622
- tc "<table><tr><td>c1</td><td>c2|</td><td></td></tr></table>", "||c1||c2| || ||"
620
+ tc "<table><tr><td>c1</td>\n<td>c2|</td>\n</tr>\n</table>\n", "||c1||c2!|"
621
+ tc "<table><tr><td>c1</td>\n<td>c2|</td>\n</tr>\n</table>\n", "||c1||c2!|"
622
+ tc "<table><tr><td>c1</td>\n<td>c2|</td>\n<td></td>\n</tr>\n</table>\n", "||c1||c2| || ||"
623
623
  # Equal sign after pipe make a header
624
- tc "<table><tr><th>Header</th></tr></table>", "||=Header=||"
624
+ tc "<table><tr><th>Header</th></tr>\n</table>\n", "||=Header=||"
625
625
 
626
- tc "<table><tr><td>c1</td><td><a href=\"Link\">Link text</a></td><td><img src=\"Image\"/></td></tr></table>", "||c1||[[Link|Link text]]||[[Image(Image)]]||"
627
- tc "<table><tr><td>c1</td><td><a href=\"Link\">Link text</a></td><td><img src=\"Image\"/></td></tr></table>", "||c1||[Link|Link text]||[[Image(Image)]]||"
626
+ tc "<table><tr><td>c1</td>\n<td><a href=\"Link\">Link text</a></td>\n<td><img src=\"Image\"/></td>\n</tr>\n</table>\n", "||c1||[[Link|Link text]]||[[Image(Image)]]||"
627
+ tc "<table><tr><td>c1</td>\n<td><a href=\"Link\">Link text</a></td>\n<td><img src=\"Image\"/></td>\n</tr>\n</table>\n", "||c1||[Link|Link text]||[[Image(Image)]]||"
628
628
  end
629
629
 
630
630
  it 'should parse following table' do
631
631
  # table followed by heading
632
- tc("<table><tr><td>table</td></tr></table><h1>heading</h1>", "||table||\n=heading=\n")
633
- tc("<table><tr><td>table</td></tr></table><h1>heading</h1>", "||table||\n\n=heading=\n")
632
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<h1>heading</h1>", "||table||\n=heading=\n")
633
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<h1>heading</h1>", "||table||\n\n=heading=\n")
634
634
  # table followed by paragraph
635
- tc("<table><tr><td>table</td></tr></table><p>par</p>\n", "||table||\npar\n")
636
- tc("<table><tr><td>table</td></tr></table><p>par</p>\n", "||table||\n\npar\n")
635
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<p>par</p>\n", "||table||\npar\n")
636
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<p>par</p>\n", "||table||\n\npar\n")
637
637
  # table followed by unordered list
638
- tc("<table><tr><td>table</td></tr></table><ul><li>item</li></ul>", "||table||\n* item\n")
639
- tc("<table><tr><td>table</td></tr></table><ul><li>item</li></ul>", "||table||\n\n* item\n")
638
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<ul><li>item</li>\n</ul>\n", "||table||\n* item\n")
639
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<ul><li>item</li>\n</ul>\n", "||table||\n\n* item\n")
640
640
  # table followed by ordered list
641
- tc("<table><tr><td>table</td></tr></table><ol><li>item</li></ol>", "||table||\n1. item\n")
642
- tc("<table><tr><td>table</td></tr></table><ol><li>item</li></ol>", "||table||\n\n1. item\n")
641
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<ol><li>item</li>\n</ol>\n", "||table||\n1. item\n")
642
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<ol><li>item</li>\n</ol>\n", "||table||\n\n1. item\n")
643
643
  # table followed by horizontal rule
644
- tc("<table><tr><td>table</td></tr></table><hr/>", "||table||\n----\n")
645
- tc("<table><tr><td>table</td></tr></table><hr/>", "||table||\n\n----\n")
644
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<hr/>", "||table||\n----\n")
645
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<hr/>", "||table||\n\n----\n")
646
646
  # table followed by nowiki block
647
- tc("<table><tr><td>table</td></tr></table><pre>pre</pre>", "||table||\n{{{\npre\n}}}\n")
648
- tc("<table><tr><td>table</td></tr></table><pre>pre</pre>", "||table||\n\n{{{\npre\n}}}\n")
647
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<pre>pre</pre>", "||table||\n{{{\npre\n}}}\n")
648
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<pre>pre</pre>", "||table||\n\n{{{\npre\n}}}\n")
649
649
  # table followed by table
650
- tc("<table><tr><td>table</td></tr><tr><td>table</td></tr></table>", "||table||\n||table||\n")
651
- tc("<table><tr><td>table</td></tr></table><table><tr><td>table</td></tr></table>", "||table||\n\n||table||\n")
650
+ tc("<table><tr><td>table</td>\n</tr>\n<tr><td>table</td>\n</tr>\n</table>\n", "||table||\n||table||\n")
651
+ tc("<table><tr><td>table</td>\n</tr>\n</table>\n<table><tr><td>table</td>\n</tr>\n</table>\n", "||table||\n\n||table||\n")
652
652
  end
653
653
 
654
654
  it 'should parse following heading' do
@@ -659,11 +659,11 @@ describe TracWiki::Parser do
659
659
  tc("<h1>heading</h1><p>par</p>\n", "=heading=\npar\n")
660
660
  tc("<h1>heading</h1><p>par</p>\n", "=heading=\n\npar\n")
661
661
  # unordered list
662
- tc("<h1>heading</h1><ul><li>item</li></ul>", "=heading=\n* item\n")
663
- tc("<h1>heading</h1><ul><li>item</li></ul>", "=heading=\n\n* item\n")
662
+ tc("<h1>heading</h1><ul><li>item</li>\n</ul>\n", "=heading=\n* item\n")
663
+ tc("<h1>heading</h1><ul><li>item</li>\n</ul>\n", "=heading=\n\n* item\n")
664
664
  # ordered list
665
- tc("<h1>heading</h1><ol><li>item</li></ol>", "=heading=\n1. item\n")
666
- tc("<h1>heading</h1><ol><li>item</li></ol>", "=heading=\n\n1. item\n")
665
+ tc("<h1>heading</h1><ol><li>item</li>\n</ol>\n", "=heading=\n1. item\n")
666
+ tc("<h1>heading</h1><ol><li>item</li>\n</ol>\n", "=heading=\n\n1. item\n")
667
667
  # horizontal rule
668
668
  tc("<h1>heading</h1><hr/>", "=heading=\n----\n")
669
669
  tc("<h1>heading</h1><hr/>", "=heading=\n\n----\n")
@@ -671,8 +671,8 @@ describe TracWiki::Parser do
671
671
  tc("<h1>heading</h1><pre>nowiki</pre>", "=heading=\n{{{\nnowiki\n}}}\n")
672
672
  tc("<h1>heading</h1><pre>nowiki</pre>", "=heading=\n\n{{{\nnowiki\n}}}\n")
673
673
  # table
674
- tc("<h1>heading</h1><table><tr><td>table</td></tr></table>", "=heading=\n||table||\n")
675
- tc("<h1>heading</h1><table><tr><td>table</td></tr></table>", "=heading=\n\n||table||\n")
674
+ tc("<h1>heading</h1><table><tr><td>table</td>\n</tr>\n</table>\n", "=heading=\n||table||\n")
675
+ tc("<h1>heading</h1><table><tr><td>table</td>\n</tr>\n</table>\n", "=heading=\n\n||table||\n")
676
676
  end
677
677
 
678
678
  it 'should parse following paragraph' do
@@ -683,11 +683,11 @@ describe TracWiki::Parser do
683
683
  tc("<p>par par</p>\n", "par\npar\n")
684
684
  tc("<p>par</p>\n<p>par</p>\n", "par\n\npar\n")
685
685
  # unordered
686
- tc("<p>par</p>\n<ul><li>item</li></ul>", "par\n* item")
687
- tc("<p>par</p>\n<ul><li>item</li></ul>", "par\n\n* item")
686
+ tc("<p>par</p>\n<ul><li>item</li>\n</ul>\n", "par\n* item")
687
+ tc("<p>par</p>\n<ul><li>item</li>\n</ul>\n", "par\n\n* item")
688
688
  # ordered
689
- tc("<p>par</p>\n<ol><li>item</li></ol>", "par\n1. item\n")
690
- tc("<p>par</p>\n<ol><li>item</li></ol>", "par\n\n1. item\n")
689
+ tc("<p>par</p>\n<ol><li>item</li>\n</ol>\n", "par\n1. item\n")
690
+ tc("<p>par</p>\n<ol><li>item</li>\n</ol>\n", "par\n\n1. item\n")
691
691
  # horizontal
692
692
  tc("<p>par</p>\n<hr/>", "par\n----\n")
693
693
  tc("<p>par</p>\n<hr/>", "par\n\n----\n")
@@ -695,56 +695,56 @@ describe TracWiki::Parser do
695
695
  tc("<p>par</p>\n<pre>nowiki</pre>", "par\n{{{\nnowiki\n}}}\n")
696
696
  tc("<p>par</p>\n<pre>nowiki</pre>", "par\n\n{{{\nnowiki\n}}}\n")
697
697
  # table
698
- tc("<p>par</p>\n<table><tr><td>table</td></tr></table>", "par\n||table||\n")
699
- tc("<p>par</p>\n<table><tr><td>table</td></tr></table>", "par\n\n||table||\n")
698
+ tc("<p>par</p>\n<table><tr><td>table</td>\n</tr>\n</table>\n", "par\n||table||\n")
699
+ tc("<p>par</p>\n<table><tr><td>table</td>\n</tr>\n</table>\n", "par\n\n||table||\n")
700
700
  end
701
701
 
702
702
  it 'should parse following unordered list' do
703
703
  # heading
704
- tc("<ul><li>item</li></ul><h1>heading</h1>", "* item\n=heading=")
705
- tc("<ul><li>item</li></ul><h1>heading</h1>", "* item\n\n=heading=")
704
+ tc("<ul><li>item</li>\n</ul>\n<h1>heading</h1>", "* item\n=heading=")
705
+ tc("<ul><li>item</li>\n</ul>\n<h1>heading</h1>", "* item\n\n=heading=")
706
706
  # paragraph
707
- tc("<ul><li>item par</li></ul>", "* item\npar\n") # items may span multiple lines
708
- tc("<ul><li>item</li></ul><p>par</p>\n", "* item\n\npar\n")
707
+ tc("<ul><li>item par</li>\n</ul>\n", "* item\npar\n") # items may span multiple lines
708
+ tc("<ul><li>item</li>\n</ul>\n<p>par</p>\n", "* item\n\npar\n")
709
709
  # unordered
710
- tc("<ul><li>item</li><li>item</li></ul>", "* item\n* item\n")
711
- tc("<ul><li>item</li></ul><ul><li>item</li></ul>", "* item\n\n* item\n")
710
+ tc("<ul><li>item</li>\n<li>item</li>\n</ul>\n", "* item\n* item\n")
711
+ tc("<ul><li>item</li>\n</ul>\n<ul><li>item</li>\n</ul>\n", "* item\n\n* item\n")
712
712
  # ordered
713
- tc("<ul><li>item</li></ul><ol><li>item</li></ol>", "* item\n1. item\n")
714
- tc("<ul><li>item</li></ul><ol><li>item</li></ol>", "* item\n\n1. item\n")
713
+ tc("<ul><li>item</li>\n</ul>\n<ol><li>item</li>\n</ol>\n", "* item\n1. item\n")
714
+ tc("<ul><li>item</li>\n</ul>\n<ol><li>item</li>\n</ol>\n", "* item\n\n1. item\n")
715
715
  # horizontal rule
716
- tc("<ul><li>item</li></ul><hr/>", "* item\n----\n")
717
- tc("<ul><li>item</li></ul><hr/>", "* item\n\n----\n")
716
+ tc("<ul><li>item</li>\n</ul>\n<hr/>", "* item\n----\n")
717
+ tc("<ul><li>item</li>\n</ul>\n<hr/>", "* item\n\n----\n")
718
718
  # nowiki
719
- tc("<ul><li>item</li></ul><pre>nowiki</pre>", "* item\n{{{\nnowiki\n}}}\n")
720
- tc("<ul><li>item</li></ul><pre>nowiki</pre>", "* item\n\n{{{\nnowiki\n}}}\n")
719
+ tc("<ul><li>item</li>\n</ul>\n<pre>nowiki</pre>", "* item\n{{{\nnowiki\n}}}\n")
720
+ tc("<ul><li>item</li>\n</ul>\n<pre>nowiki</pre>", "* item\n\n{{{\nnowiki\n}}}\n")
721
721
  # table
722
- tc("<ul><li>item</li></ul><table><tr><td>table</td></tr></table>", "* item\n||table||\n")
723
- tc("<ul><li>item</li></ul><table><tr><td>table</td></tr></table>", "* item\n\n||table||\n")
722
+ tc("<ul><li>item</li>\n</ul>\n<table><tr><td>table</td>\n</tr>\n</table>\n", "* item\n||table||\n")
723
+ tc("<ul><li>item</li>\n</ul>\n<table><tr><td>table</td>\n</tr>\n</table>\n", "* item\n\n||table||\n")
724
724
  end
725
725
 
726
726
  it 'should parse following ordered list' do
727
727
  # heading
728
- tc("<ol><li>item</li></ol><h1>heading</h1>", "1. item\n=heading=")
729
- tc("<ol><li>item</li></ol><h1>heading</h1>", "1. item\n\n=heading=")
728
+ tc("<ol><li>item</li>\n</ol>\n<h1>heading</h1>", "1. item\n=heading=")
729
+ tc("<ol><li>item</li>\n</ol>\n<h1>heading</h1>", "1. item\n\n=heading=")
730
730
  # paragraph
731
- tc("<ol><li>item par</li></ol>", "1. item\npar\n") # items may span multiple lines
732
- tc("<ol><li>item</li></ol><p>par</p>\n", "1. item\n\npar\n")
731
+ tc("<ol><li>item par</li>\n</ol>\n", "1. item\npar\n") # items may span multiple lines
732
+ tc("<ol><li>item</li>\n</ol>\n<p>par</p>\n", "1. item\n\npar\n")
733
733
  # unordered
734
- tc("<ol><li>item</li></ol><ul><li>item</li></ul>", "1. item\n* item\n")
735
- tc("<ol><li>item</li></ol><ul><li>item</li></ul>", "1. item\n\n* item\n")
734
+ tc("<ol><li>item</li>\n</ol>\n<ul><li>item</li>\n</ul>\n", "1. item\n* item\n")
735
+ tc("<ol><li>item</li>\n</ol>\n<ul><li>item</li>\n</ul>\n", "1. item\n\n* item\n")
736
736
  # ordered
737
- tc("<ol><li>item</li><li>item</li></ol>", "1. item\n2. item\n")
738
- tc("<ol><li>item</li></ol><ol><li>item</li></ol>", "1. item\n\n1. item\n")
737
+ tc("<ol><li>item</li>\n<li>item</li>\n</ol>\n", "1. item\n2. item\n")
738
+ tc("<ol><li>item</li>\n</ol>\n<ol><li>item</li>\n</ol>\n", "1. item\n\n1. item\n")
739
739
  # horizontal role
740
- tc("<ol><li>item</li></ol><hr/>", "1. item\n----\n")
741
- tc("<ol><li>item</li></ol><hr/>", "1. item\n\n----\n")
740
+ tc("<ol><li>item</li>\n</ol>\n<hr/>", "1. item\n----\n")
741
+ tc("<ol><li>item</li>\n</ol>\n<hr/>", "1. item\n\n----\n")
742
742
  # nowiki
743
- tc("<ol><li>item</li></ol><pre>nowiki</pre>", "1. item\n{{{\nnowiki\n}}}\n")
744
- tc("<ol><li>item</li></ol><pre>nowiki</pre>", "1. item\n\n{{{\nnowiki\n}}}\n")
743
+ tc("<ol><li>item</li>\n</ol>\n<pre>nowiki</pre>", "1. item\n{{{\nnowiki\n}}}\n")
744
+ tc("<ol><li>item</li>\n</ol>\n<pre>nowiki</pre>", "1. item\n\n{{{\nnowiki\n}}}\n")
745
745
  # table
746
- tc("<ol><li>item</li></ol><table><tr><td>table</td></tr></table>", "1. item\n||table||\n")
747
- tc("<ol><li>item</li></ol><table><tr><td>table</td></tr></table>", "1. item\n\n||table||\n")
746
+ tc("<ol><li>item</li>\n</ol>\n<table><tr><td>table</td>\n</tr>\n</table>\n", "1. item\n||table||\n")
747
+ tc("<ol><li>item</li>\n</ol>\n<table><tr><td>table</td>\n</tr>\n</table>\n", "1. item\n\n||table||\n")
748
748
  end
749
749
 
750
750
  it 'should parse following horizontal rule' do
@@ -755,14 +755,14 @@ describe TracWiki::Parser do
755
755
  tc("<hr/><p>par</p>\n", "----\npar\n")
756
756
  tc("<hr/><p>par</p>\n", "----\n\npar\n")
757
757
  # unordered
758
- tc("<hr/><ul><li>item</li></ul>", "----\n* item")
759
- tc("<hr/><ul><li>item</li></ul>", "----\n* item")
760
- tc("<hr/><ul><li>item</li></ul>", "----\n- item")
761
- tc("<hr/><ul><li>item</li></ul>", "----\n- item")
762
- tc("<hr/><ul><li>item</li></ul>", "----\n - item")
758
+ tc("<hr/><ul><li>item</li>\n</ul>\n", "----\n* item")
759
+ tc("<hr/><ul><li>item</li>\n</ul>\n", "----\n* item")
760
+ tc("<hr/><ul><li>item</li>\n</ul>\n", "----\n- item")
761
+ tc("<hr/><ul><li>item</li>\n</ul>\n", "----\n- item")
762
+ tc("<hr/><ul><li>item</li>\n</ul>\n", "----\n - item")
763
763
  # ordered
764
- tc("<hr/><ol><li>item</li></ol>", "----\n1. item")
765
- tc("<hr/><ol><li>item</li></ol>", "----\n1. item")
764
+ tc("<hr/><ol><li>item</li>\n</ol>\n", "----\n1. item")
765
+ tc("<hr/><ol><li>item</li>\n</ol>\n", "----\n1. item")
766
766
  # horizontal
767
767
  tc("<hr/><hr/>", "----\n----\n")
768
768
  tc("<hr/><hr/>", "----\n\n----\n")
@@ -770,8 +770,8 @@ describe TracWiki::Parser do
770
770
  tc("<hr/><pre>nowiki</pre>", "----\n{{{\nnowiki\n}}}\n")
771
771
  tc("<hr/><pre>nowiki</pre>", "----\n\n{{{\nnowiki\n}}}\n")
772
772
  # table
773
- tc("<hr/><table><tr><td>table</td></tr></table>", "----\n||table||\n")
774
- tc("<hr/><table><tr><td>table</td></tr></table>", "----\n\n||table||\n")
773
+ tc("<hr/><table><tr><td>table</td>\n</tr>\n</table>\n", "----\n||table||\n")
774
+ tc("<hr/><table><tr><td>table</td>\n</tr>\n</table>\n", "----\n\n||table||\n")
775
775
  end
776
776
 
777
777
  it 'should parse following nowiki block' do
@@ -782,11 +782,11 @@ describe TracWiki::Parser do
782
782
  tc("<pre>nowiki</pre><p>par</p>\n", "{{{\nnowiki\n}}}\npar")
783
783
  tc("<pre>nowiki</pre><p>par</p>\n", "{{{\nnowiki\n}}}\n\npar")
784
784
  # unordered
785
- tc("<pre>nowiki</pre><ul><li>item</li></ul>", "{{{\nnowiki\n}}}\n* item\n")
786
- tc("<pre>nowiki</pre><ul><li>item</li></ul>", "{{{\nnowiki\n}}}\n\n* item\n")
785
+ tc("<pre>nowiki</pre><ul><li>item</li>\n</ul>\n", "{{{\nnowiki\n}}}\n* item\n")
786
+ tc("<pre>nowiki</pre><ul><li>item</li>\n</ul>\n", "{{{\nnowiki\n}}}\n\n* item\n")
787
787
  # ordered
788
- tc("<pre>nowiki</pre><ol><li>item</li></ol>", "{{{\nnowiki\n}}}\n1. item\n")
789
- tc("<pre>nowiki</pre><ol><li>item</li></ol>", "{{{\nnowiki\n}}}\n\n1. item\n")
788
+ tc("<pre>nowiki</pre><ol><li>item</li>\n</ol>\n", "{{{\nnowiki\n}}}\n1. item\n")
789
+ tc("<pre>nowiki</pre><ol><li>item</li>\n</ol>\n", "{{{\nnowiki\n}}}\n\n1. item\n")
790
790
  # horizontal
791
791
  tc("<pre>nowiki</pre><hr/>", "{{{\nnowiki\n}}}\n----\n")
792
792
  tc("<pre>nowiki</pre><hr/>", "{{{\nnowiki\n}}}\n\n----\n")
@@ -794,8 +794,8 @@ describe TracWiki::Parser do
794
794
  tc("<pre>nowiki</pre><pre>nowiki</pre>", "{{{\nnowiki\n}}}\n{{{\nnowiki\n}}}\n")
795
795
  tc("<pre>nowiki</pre><pre>nowiki</pre>", "{{{\nnowiki\n}}}\n\n{{{\nnowiki\n}}}\n")
796
796
  # table
797
- tc("<pre>nowiki</pre><table><tr><td>table</td></tr></table>", "{{{\nnowiki\n}}}\n||table||\n")
798
- tc("<pre>nowiki</pre><table><tr><td>table</td></tr></table>", "{{{\nnowiki\n}}}\n\n||table||\n")
797
+ tc("<pre>nowiki</pre><table><tr><td>table</td>\n</tr>\n</table>\n", "{{{\nnowiki\n}}}\n||table||\n")
798
+ tc("<pre>nowiki</pre><table><tr><td>table</td>\n</tr>\n</table>\n", "{{{\nnowiki\n}}}\n\n||table||\n")
799
799
  end
800
800
 
801
801
  it 'should parse image' do
@@ -819,7 +819,7 @@ describe TracWiki::Parser do
819
819
  end
820
820
 
821
821
  it 'should parse bold combo' do
822
- tc("<p><strong>bold and</strong></p>\n<table><tr><td>table</td></tr></table><p>end<strong></strong></p>\n",
822
+ tc("<p><strong>bold and</strong></p>\n<table><tr><td>table</td>\n</tr>\n</table>\n<p>end</p>\n",
823
823
  "**bold and\n||table||\nend**")
824
824
  end
825
825
 
@@ -897,6 +897,7 @@ kuk
897
897
  eos
898
898
 
899
899
 
900
+ end
900
901
  it 'should support macro' do
901
902
  tc "<p>ahoj</p>\n" , "{{#echo \nahoj\n}}"
902
903
  tc "<h2>H2</h2>" , "{{#echo == H2 ==}}"
@@ -999,7 +1000,13 @@ eos
999
1000
  tc "<p><b class=\"bclass\">BOLD</b></p>\n", "<b bad=\"bad\" class=\"bclass\">BOLD</b>\n", raw_html: true
1000
1001
  tc "<p><b class=\"bclass\">BOLD</b></p>\n", "<b bad=\"bad\" class=\"bclass\">BOLD</b>\n", raw_html: true
1001
1002
  end
1002
-
1003
+ it 'should parse link' do
1004
+ tc "<p><a href=\"#here\">Here</a></p>\n", "[[#here|Here]]"
1005
+ tc "<p><a href=\"#here+i+m\">Here</a></p>\n", "[[#here i m|Here]]"
1006
+ tc "<p><a href=\"there#i+m\">There</a></p>\n", "[[there#i m|There]]"
1007
+ tc "<p><a href=\"http://example.com/there#i+m\">There</a></p>\n", "[[there#i m|There]]", base: 'http://example.com/'
1008
+ tc "<p><a href=\"#here+i+m\">Here</a></p>\n", "[[#here i m|Here]]", base: 'http://example.com/'
1003
1009
  end
1010
+
1004
1011
  end
1005
1012
  # 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.2.21
4
+ version: 0.2.23
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-25 00:00:00.000000000 Z
12
+ date: 2014-02-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bacon