rdoc 2.5.11 → 3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rdoc might be problematic. Click here for more details.

Files changed (113) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.document +1 -0
  3. data/History.txt +95 -0
  4. data/Manifest.txt +13 -4
  5. data/README.txt +9 -3
  6. data/Rakefile +1 -1
  7. data/lib/rdoc.rb +15 -298
  8. data/lib/rdoc/alias.rb +65 -16
  9. data/lib/rdoc/any_method.rb +27 -150
  10. data/lib/rdoc/attr.rb +36 -115
  11. data/lib/rdoc/class_module.rb +236 -22
  12. data/lib/rdoc/code_object.rb +76 -31
  13. data/lib/rdoc/constant.rb +32 -4
  14. data/lib/rdoc/context.rb +494 -222
  15. data/lib/rdoc/encoding.rb +79 -0
  16. data/lib/rdoc/erbio.rb +37 -0
  17. data/lib/rdoc/gauntlet.rb +9 -5
  18. data/lib/rdoc/generator.rb +33 -1
  19. data/lib/rdoc/generator/darkfish.rb +284 -375
  20. data/lib/rdoc/generator/markup.rb +72 -36
  21. data/lib/rdoc/generator/ri.rb +4 -4
  22. data/lib/rdoc/generator/template/darkfish/classpage.rhtml +267 -274
  23. data/lib/rdoc/generator/template/darkfish/filepage.rhtml +91 -91
  24. data/lib/rdoc/generator/template/darkfish/index.rhtml +45 -45
  25. data/lib/rdoc/generator/template/darkfish/rdoc.css +298 -298
  26. data/lib/rdoc/include.rb +40 -1
  27. data/lib/rdoc/known_classes.rb +1 -0
  28. data/lib/rdoc/markup.rb +467 -2
  29. data/lib/rdoc/markup/attribute_manager.rb +24 -6
  30. data/lib/rdoc/markup/blank_line.rb +11 -3
  31. data/lib/rdoc/markup/document.rb +6 -0
  32. data/lib/rdoc/markup/formatter.rb +10 -0
  33. data/lib/rdoc/markup/formatter_test_case.rb +339 -3
  34. data/lib/rdoc/markup/heading.rb +3 -0
  35. data/lib/rdoc/markup/inline.rb +11 -1
  36. data/lib/rdoc/markup/list.rb +3 -0
  37. data/lib/rdoc/markup/list_item.rb +3 -0
  38. data/lib/rdoc/markup/paragraph.rb +3 -0
  39. data/lib/rdoc/markup/parser.rb +191 -237
  40. data/lib/rdoc/markup/{preprocess.rb → pre_process.rb} +50 -29
  41. data/lib/rdoc/markup/raw.rb +4 -0
  42. data/lib/rdoc/markup/rule.rb +3 -0
  43. data/lib/rdoc/markup/text_formatter_test_case.rb +116 -0
  44. data/lib/rdoc/markup/to_ansi.rb +14 -2
  45. data/lib/rdoc/markup/to_bs.rb +8 -2
  46. data/lib/rdoc/markup/to_html.rb +84 -91
  47. data/lib/rdoc/markup/to_html_crossref.rb +77 -26
  48. data/lib/rdoc/markup/to_rdoc.rb +94 -49
  49. data/lib/rdoc/markup/to_test.rb +9 -1
  50. data/lib/rdoc/markup/verbatim.rb +6 -3
  51. data/lib/rdoc/method_attr.rb +353 -0
  52. data/lib/rdoc/normal_class.rb +11 -2
  53. data/lib/rdoc/normal_module.rb +0 -5
  54. data/lib/rdoc/options.rb +373 -82
  55. data/lib/rdoc/parser.rb +59 -23
  56. data/lib/rdoc/parser/c.rb +224 -86
  57. data/lib/rdoc/parser/ruby.rb +219 -111
  58. data/lib/rdoc/parser/ruby_tools.rb +4 -1
  59. data/lib/rdoc/parser/simple.rb +9 -4
  60. data/lib/rdoc/rdoc.rb +68 -28
  61. data/lib/rdoc/require.rb +21 -0
  62. data/lib/rdoc/ri/driver.rb +20 -10
  63. data/lib/rdoc/ri/paths.rb +2 -2
  64. data/lib/rdoc/ri/store.rb +22 -5
  65. data/lib/rdoc/ruby_lex.rb +11 -12
  66. data/lib/rdoc/ruby_token.rb +2 -2
  67. data/lib/rdoc/single_class.rb +2 -1
  68. data/lib/rdoc/stats.rb +202 -162
  69. data/lib/rdoc/stats/normal.rb +51 -0
  70. data/lib/rdoc/stats/quiet.rb +59 -0
  71. data/lib/rdoc/stats/verbose.rb +45 -0
  72. data/lib/rdoc/text.rb +133 -4
  73. data/lib/rdoc/{tokenstream.rb → token_stream.rb} +0 -2
  74. data/lib/rdoc/top_level.rb +230 -39
  75. data/test/test_attribute_manager.rb +58 -7
  76. data/test/test_rdoc_alias.rb +13 -0
  77. data/test/test_rdoc_any_method.rb +43 -2
  78. data/test/test_rdoc_attr.rb +15 -8
  79. data/test/test_rdoc_class_module.rb +133 -0
  80. data/test/test_rdoc_code_object.rb +62 -5
  81. data/test/test_rdoc_context.rb +72 -26
  82. data/test/test_rdoc_encoding.rb +145 -0
  83. data/test/test_rdoc_generator_darkfish.rb +119 -0
  84. data/test/test_rdoc_generator_ri.rb +22 -2
  85. data/test/test_rdoc_include.rb +79 -0
  86. data/test/test_rdoc_markup_attribute_manager.rb +4 -4
  87. data/test/test_rdoc_markup_parser.rb +134 -95
  88. data/test/test_rdoc_markup_pre_process.rb +7 -2
  89. data/test/test_rdoc_markup_to_ansi.rb +43 -153
  90. data/test/test_rdoc_markup_to_bs.rb +42 -156
  91. data/test/test_rdoc_markup_to_html.rb +130 -58
  92. data/test/test_rdoc_markup_to_html_crossref.rb +10 -10
  93. data/test/test_rdoc_markup_to_rdoc.rb +40 -151
  94. data/test/test_rdoc_method_attr.rb +122 -0
  95. data/test/test_rdoc_normal_class.rb +1 -1
  96. data/test/test_rdoc_normal_module.rb +6 -1
  97. data/test/test_rdoc_options.rb +237 -12
  98. data/test/test_rdoc_parser.rb +3 -22
  99. data/test/test_rdoc_parser_c.rb +203 -2
  100. data/test/test_rdoc_parser_ruby.rb +403 -89
  101. data/test/test_rdoc_parser_simple.rb +25 -1
  102. data/test/test_rdoc_rdoc.rb +44 -32
  103. data/test/test_rdoc_ri_driver.rb +29 -24
  104. data/test/test_rdoc_ri_store.rb +46 -3
  105. data/test/test_rdoc_task.rb +1 -1
  106. data/test/test_rdoc_text.rb +102 -8
  107. data/test/test_rdoc_top_level.rb +13 -4
  108. data/test/xref_data.rb +8 -0
  109. data/test/xref_test_case.rb +6 -0
  110. metadata +29 -19
  111. metadata.gz.sig +0 -0
  112. data/lib/rdoc/parser/perl.rb +0 -165
  113. data/test/test_rdoc_parser_perl.rb +0 -73
@@ -6,6 +6,7 @@ class TestRDocInclude < XrefTestCase
6
6
  super
7
7
 
8
8
  @inc = RDoc::Include.new 'M1', 'comment'
9
+ @inc.parent = @m1
9
10
  end
10
11
 
11
12
  def test_module
@@ -13,5 +14,83 @@ class TestRDocInclude < XrefTestCase
13
14
  assert_equal 'Unknown', RDoc::Include.new('Unknown', 'comment').module
14
15
  end
15
16
 
17
+ def test_module_extended
18
+ m1 = @xref_data.add_module RDoc::NormalModule, 'Mod1'
19
+ m1_m3 = m1.add_module RDoc::NormalModule, 'Mod3'
20
+ m1_m2 = m1.add_module RDoc::NormalModule, 'Mod2'
21
+ m1_m2_m3 = m1_m2.add_module RDoc::NormalModule, 'Mod3'
22
+ m1_m2_m3_m4 = m1_m2_m3.add_module RDoc::NormalModule, 'Mod4'
23
+ m1_m2_m4 = m1_m2.add_module RDoc::NormalModule, 'Mod4'
24
+ m1_m2_k0 = m1_m2.add_class RDoc::NormalClass, 'Klass0'
25
+ m1_m2_k0_m4 = m1_m2_k0.add_module RDoc::NormalModule, 'Mod4'
26
+ #m1_m2_k0_m4_m5 = m1_m2_k0_m4.add_module RDoc::NormalModule, 'Mod5'
27
+ m1_m2_k0_m4_m6 = m1_m2_k0_m4.add_module RDoc::NormalModule, 'Mod6'
28
+ m1_m2_k0_m5 = m1_m2_k0.add_module RDoc::NormalModule, 'Mod5'
29
+
30
+ i0_m4 = RDoc::Include.new 'Mod4', nil
31
+ i0_m5 = RDoc::Include.new 'Mod5', nil
32
+ i0_m6 = RDoc::Include.new 'Mod6', nil
33
+ i0_m1 = RDoc::Include.new 'Mod1', nil
34
+ i0_m2 = RDoc::Include.new 'Mod2', nil
35
+ i0_m3 = RDoc::Include.new 'Mod3', nil
36
+
37
+ m1_m2_k0.add_include i0_m4
38
+ m1_m2_k0.add_include i0_m5
39
+ m1_m2_k0.add_include i0_m6
40
+ m1_m2_k0.add_include i0_m1
41
+ m1_m2_k0.add_include i0_m2
42
+ m1_m2_k0.add_include i0_m3
43
+
44
+ assert_equal [i0_m4, i0_m5, i0_m6, i0_m1, i0_m2, i0_m3], m1_m2_k0.includes
45
+ assert_equal [m1_m2_m3, m1_m2, m1, m1_m2_k0_m4_m6, m1_m2_k0_m5,
46
+ m1_m2_k0_m4, 'Object'], m1_m2_k0.ancestors
47
+
48
+ m1_k1 = m1.add_class RDoc::NormalClass, 'Klass1'
49
+
50
+ i1_m1 = RDoc::Include.new 'Mod1', nil
51
+ i1_m2 = RDoc::Include.new 'Mod2', nil
52
+ i1_m3 = RDoc::Include.new 'Mod3', nil
53
+ i1_m4 = RDoc::Include.new 'Mod4', nil
54
+ i1_k0_m4 = RDoc::Include.new 'Klass0::Mod4', nil
55
+
56
+ m1_k1.add_include i1_m1
57
+ m1_k1.add_include i1_m2
58
+ m1_k1.add_include i1_m3
59
+ m1_k1.add_include i1_m4
60
+ m1_k1.add_include i1_k0_m4
61
+
62
+ assert_equal [i1_m1, i1_m2, i1_m3, i1_m4, i1_k0_m4], m1_k1.includes
63
+ assert_equal [m1_m2_k0_m4, m1_m2_m3_m4, m1_m2_m3, m1_m2, m1, 'Object'],
64
+ m1_k1.ancestors
65
+
66
+ m1_k2 = m1.add_class RDoc::NormalClass, 'Klass2'
67
+
68
+ i2_m1 = RDoc::Include.new 'Mod1', nil
69
+ i2_m2 = RDoc::Include.new 'Mod2', nil
70
+ i2_m3 = RDoc::Include.new 'Mod3', nil
71
+ i2_k0_m4 = RDoc::Include.new 'Klass0::Mod4', nil
72
+
73
+ m1_k2.add_include i2_m1
74
+ m1_k2.add_include i2_m3
75
+ m1_k2.add_include i2_m2
76
+ m1_k2.add_include i2_k0_m4
77
+
78
+ assert_equal [i2_m1, i2_m3, i2_m2, i2_k0_m4], m1_k2.includes
79
+ assert_equal [m1_m2_k0_m4, m1_m2, m1_m3, m1, 'Object'], m1_k2.ancestors
80
+
81
+ m1_k3 = m1.add_class RDoc::NormalClass, 'Klass3'
82
+
83
+ i3_m1 = RDoc::Include.new 'Mod1', nil
84
+ i3_m2 = RDoc::Include.new 'Mod2', nil
85
+ i3_m4 = RDoc::Include.new 'Mod4', nil
86
+
87
+ m1_k3.add_include i3_m1
88
+ m1_k3.add_include i3_m2
89
+ m1_k3.add_include i3_m4
90
+
91
+ assert_equal [i3_m1, i3_m2, i3_m4], m1_k3.includes
92
+ assert_equal [m1_m2_m4, m1_m2, m1, 'Object'], m1_k3.ancestors
93
+ end
94
+
16
95
  end
17
96
 
@@ -1,9 +1,9 @@
1
- require "rubygems"
2
- require "minitest/autorun"
1
+ require 'rubygems'
2
+ require 'minitest/autorun'
3
3
  require 'rdoc'
4
4
  require 'rdoc/markup'
5
- require "rdoc/markup/inline"
6
- require "rdoc/markup/to_html_crossref"
5
+ require 'rdoc/markup/inline'
6
+ require 'rdoc/markup/to_html_crossref'
7
7
 
8
8
  class TestRDocMarkupAttributeManager < MiniTest::Unit::TestCase
9
9
 
@@ -1,8 +1,9 @@
1
+ # coding: utf-8
2
+
1
3
  require 'pp'
2
4
  require 'rubygems'
3
5
  require 'minitest/autorun'
4
6
  require 'rdoc/markup'
5
- require 'rdoc/markup/to_test'
6
7
 
7
8
  class TestRDocMarkupParser < MiniTest::Unit::TestCase
8
9
 
@@ -53,6 +54,19 @@ class TestRDocMarkupParser < MiniTest::Unit::TestCase
53
54
  assert_equal expected, @RMP.parse(str).parts
54
55
  end
55
56
 
57
+ def test_parse_bullet_utf_8
58
+ str = <<-STR
59
+ * 新しい機能
60
+ STR
61
+
62
+ expected = [
63
+ @RM::List.new(:BULLET, *[
64
+ @RM::ListItem.new(nil,
65
+ @RM::Paragraph.new('新しい機能'))])]
66
+
67
+ assert_equal expected, @RMP.parse(str).parts
68
+ end
69
+
56
70
  def test_parse_bullet_verbatim_heading
57
71
  str = <<-STR
58
72
  * l1
@@ -65,7 +79,7 @@ class TestRDocMarkupParser < MiniTest::Unit::TestCase
65
79
  @RM::List.new(:BULLET, *[
66
80
  @RM::ListItem.new(nil,
67
81
  @RM::Paragraph.new('l1'),
68
- @RM::Verbatim.new(' ', 'v', "\n"))]),
82
+ @RM::Verbatim.new("v\n"))]),
69
83
  @RM::Heading.new(1, 'H')]
70
84
 
71
85
  assert_equal expected, @RMP.parse(str).parts
@@ -183,8 +197,7 @@ the time
183
197
  @RM::List.new(:BULLET, *[
184
198
  @RM::ListItem.new(nil,
185
199
  @RM::Paragraph.new('l1.1', 'text'),
186
- @RM::Verbatim.new(' ', 'code', "\n",
187
- ' ', 'code', "\n"),
200
+ @RM::Verbatim.new("code\n", " code\n"),
188
201
  @RM::Paragraph.new('text'))])),
189
202
  @RM::ListItem.new(nil,
190
203
  @RM::Paragraph.new('l2'))])]
@@ -400,6 +413,68 @@ A. l4
400
413
  assert_equal expected, @RMP.parse(str).parts
401
414
  end
402
415
 
416
+ def test_parse_lalpha_utf_8
417
+ str = <<-STR
418
+ a. 新しい機能
419
+ STR
420
+
421
+ expected = [
422
+ @RM::List.new(:LALPHA, *[
423
+ @RM::ListItem.new(nil,
424
+ @RM::Paragraph.new('新しい機能'))])]
425
+
426
+ assert_equal expected, @RMP.parse(str).parts
427
+ end
428
+
429
+ def test_parse_list_list_1
430
+ str = <<-STR
431
+ 10. para 1
432
+
433
+ [label 1]
434
+ para 1.1
435
+
436
+ code
437
+
438
+ para 1.2
439
+ STR
440
+
441
+ expected = [
442
+ @RM::List.new(:NUMBER, *[
443
+ @RM::ListItem.new(nil, *[
444
+ @RM::Paragraph.new('para 1'),
445
+ @RM::BlankLine.new,
446
+ @RM::List.new(:LABEL, *[
447
+ @RM::ListItem.new('label 1', *[
448
+ @RM::Paragraph.new('para 1.1'),
449
+ @RM::BlankLine.new,
450
+ @RM::Verbatim.new("code\n"),
451
+ @RM::Paragraph.new('para 1.2')])])])])]
452
+
453
+ assert_equal expected, @RMP.parse(str).parts
454
+ end
455
+
456
+ def test_parse_list_list_2
457
+ str = <<-STR
458
+ 6. para
459
+
460
+ label 1:: text 1
461
+ label 2:: text 2
462
+ STR
463
+
464
+ expected = [
465
+ @RM::List.new(:NUMBER, *[
466
+ @RM::ListItem.new(nil, *[
467
+ @RM::Paragraph.new('para'),
468
+ @RM::BlankLine.new,
469
+ @RM::List.new(:NOTE, *[
470
+ @RM::ListItem.new('label 1',
471
+ @RM::Paragraph.new('text 1')),
472
+ @RM::ListItem.new('label 2',
473
+ @RM::Paragraph.new('text 2'))])])])]
474
+
475
+ assert_equal expected, @RMP.parse(str).parts
476
+ end
477
+
403
478
  def test_parse_list_verbatim
404
479
  str = <<-STR
405
480
  * one
@@ -412,8 +487,7 @@ A. l4
412
487
  @RM::List.new(:BULLET, *[
413
488
  @RM::ListItem.new(nil,
414
489
  @RM::Paragraph.new('one'),
415
- @RM::Verbatim.new(' ', 'verb1', "\n",
416
- ' ', 'verb2', "\n")),
490
+ @RM::Verbatim.new("verb1\n", "verb2\n")),
417
491
  @RM::ListItem.new(nil,
418
492
  @RM::Paragraph.new('two'))])]
419
493
 
@@ -545,7 +619,7 @@ for all good men
545
619
 
546
620
  expected = [
547
621
  @RM::Paragraph.new('now is the time'),
548
- @RM::Verbatim.new(' ', 'code _line_ here', "\n"),
622
+ @RM::Verbatim.new("code _line_ here\n"),
549
623
  @RM::Paragraph.new('for all good men'),
550
624
  ]
551
625
  assert_equal expected, @RMP.parse(str).parts
@@ -567,6 +641,12 @@ B. l2
567
641
  assert_equal expected, @RMP.parse(str).parts
568
642
  end
569
643
 
644
+ def test_parse_trailing_cr
645
+ expected = [ @RM::Paragraph.new('Text') ]
646
+ # FIXME hangs the parser:
647
+ assert_equal expected, @RMP.parse("Text\r").parts
648
+ end
649
+
570
650
  def test_parse_verbatim
571
651
  str = <<-STR
572
652
  now is
@@ -576,7 +656,7 @@ the time
576
656
 
577
657
  expected = [
578
658
  @RM::Paragraph.new('now is'),
579
- @RM::Verbatim.new(' ', 'code', "\n"),
659
+ @RM::Verbatim.new("code\n"),
580
660
  @RM::Paragraph.new('the time'),
581
661
  ]
582
662
 
@@ -589,7 +669,7 @@ the time
589
669
  STR
590
670
 
591
671
  expected = [
592
- @RM::Verbatim.new(' ', '*', ' ', 'blah', "\n")]
672
+ @RM::Verbatim.new("* blah\n")]
593
673
 
594
674
  assert_equal expected, @RMP.parse(str).parts
595
675
  end
@@ -600,7 +680,7 @@ the time
600
680
  STR
601
681
 
602
682
  expected = [
603
- @RM::Verbatim.new(' ', '-', ' ', 'blah', "\n")]
683
+ @RM::Verbatim.new("- blah\n")]
604
684
 
605
685
  assert_equal expected, @RMP.parse(str).parts
606
686
  end
@@ -618,9 +698,7 @@ the time
618
698
 
619
699
  expected = [
620
700
  @RM::Paragraph.new('now is'),
621
- @RM::Verbatim.new(' ', 'code', "\n",
622
- "\n",
623
- ' ', 'code1', "\n"),
701
+ @RM::Verbatim.new("code\n", "\n", "code1\n"),
624
702
  @RM::Paragraph.new('the time'),
625
703
  ]
626
704
 
@@ -635,7 +713,7 @@ text
635
713
 
636
714
  expected = [
637
715
  @RM::Paragraph.new('text'),
638
- @RM::Verbatim.new(' ', '===', ' ', 'heading three', "\n")]
716
+ @RM::Verbatim.new("=== heading three\n")]
639
717
 
640
718
  assert_equal expected, @RMP.parse(str).parts
641
719
  end
@@ -645,7 +723,7 @@ text
645
723
 
646
724
  expected = [
647
725
  @RM::Paragraph.new('text'),
648
- @RM::Verbatim.new(' ', 'code', "\n"),
726
+ @RM::Verbatim.new("code\n"),
649
727
  @RM::Heading.new(3, 'heading three')]
650
728
 
651
729
  assert_equal expected, @RMP.parse(str).parts
@@ -657,7 +735,7 @@ text
657
735
  STR
658
736
 
659
737
  expected = [
660
- @RM::Verbatim.new(' ', '[blah]', ' ', 'blah', "\n")]
738
+ @RM::Verbatim.new("[blah] blah\n")]
661
739
 
662
740
  assert_equal expected, @RMP.parse(str).parts
663
741
  end
@@ -668,7 +746,7 @@ text
668
746
  STR
669
747
 
670
748
  expected = [
671
- @RM::Verbatim.new(' ', 'b.', ' ', 'blah', "\n")]
749
+ @RM::Verbatim.new("b. blah\n")]
672
750
 
673
751
  assert_equal expected, @RMP.parse(str).parts
674
752
  end
@@ -682,8 +760,7 @@ text
682
760
 
683
761
  expected = [
684
762
  @RM::Paragraph.new('text'),
685
- @RM::Verbatim.new(' ', 'code', "\n",
686
- ' ', '===', ' ', 'heading three', "\n")]
763
+ @RM::Verbatim.new("code\n", "=== heading three\n")]
687
764
 
688
765
  assert_equal expected, @RMP.parse(str).parts
689
766
  end
@@ -699,9 +776,7 @@ the time
699
776
 
700
777
  expected = [
701
778
  @RM::Paragraph.new('now is'),
702
- @RM::Verbatim.new(' ', 'code', "\n",
703
- "\n",
704
- ' ', 'code1', "\n"),
779
+ @RM::Verbatim.new("code\n", "\n", "code1\n"),
705
780
  @RM::Paragraph.new('the time'),
706
781
  ]
707
782
 
@@ -721,11 +796,7 @@ the time
721
796
 
722
797
  expected = [
723
798
  @RM::Paragraph.new('now is'),
724
- @RM::Verbatim.new(' ', 'code', "\n",
725
- "\n",
726
- ' ', 'code1', "\n",
727
- "\n",
728
- ' ', 'code2', "\n"),
799
+ @RM::Verbatim.new("code\n", "\n", "code1\n", "\n", "code2\n"),
729
800
  @RM::Paragraph.new('the time'),
730
801
  ]
731
802
 
@@ -742,8 +813,7 @@ the time
742
813
 
743
814
  expected = [
744
815
  @RM::Paragraph.new('now is'),
745
- @RM::Verbatim.new(' ', 'code', "\n",
746
- ' ', 'code1', "\n"),
816
+ @RM::Verbatim.new("code\n", "code1\n"),
747
817
  @RM::Paragraph.new('the time'),
748
818
  ]
749
819
 
@@ -760,8 +830,8 @@ for all good men
760
830
 
761
831
  expected = [
762
832
  @RM::Paragraph.new('now is the time'),
763
- @RM::Verbatim.new(' ', 'code', "\n",
764
- ' ', 'more code', "\n"),
833
+ @RM::Verbatim.new(" code\n",
834
+ "more code\n"),
765
835
  @RM::Paragraph.new('for all good men'),
766
836
  ]
767
837
 
@@ -774,7 +844,7 @@ for all good men
774
844
  STR
775
845
 
776
846
  expected = [
777
- @RM::Verbatim.new(' ', 'blah::', ' ', 'blah', "\n")]
847
+ @RM::Verbatim.new("blah:: blah\n")]
778
848
 
779
849
  assert_equal expected, @RMP.parse(str).parts
780
850
  end
@@ -785,7 +855,7 @@ for all good men
785
855
  STR
786
856
 
787
857
  expected = [
788
- @RM::Verbatim.new(' ', '2.', ' ', 'blah', "\n")]
858
+ @RM::Verbatim.new("2. blah\n")]
789
859
 
790
860
  assert_equal expected, @RMP.parse(str).parts
791
861
  end
@@ -801,8 +871,8 @@ text
801
871
  expected = [
802
872
  @RM::Paragraph.new('text'),
803
873
  @RM::BlankLine.new,
804
- @RM::Verbatim.new(' ', '---', ' ', 'lib/blah.rb.orig', "\n",
805
- ' ', '+++', ' ', 'lib/blah.rb', "\n")]
874
+ @RM::Verbatim.new("--- lib/blah.rb.orig\n",
875
+ "+++ lib/blah.rb\n")]
806
876
 
807
877
  assert_equal expected, @RMP.parse(str).parts
808
878
  end
@@ -817,7 +887,7 @@ text
817
887
  expected = [
818
888
  @RM::Paragraph.new('text'),
819
889
  @RM::BlankLine.new,
820
- @RM::Verbatim.new(' ', '---', '')]
890
+ @RM::Verbatim.new("---")]
821
891
 
822
892
  assert_equal expected, @RMP.parse(str).parts
823
893
  end
@@ -834,9 +904,9 @@ the time
834
904
 
835
905
  expected = [
836
906
  @RM::Paragraph.new('now is'),
837
- @RM::Verbatim.new(' ', 'code', "\n",
907
+ @RM::Verbatim.new("code\n",
838
908
  "\n",
839
- ' ', 'code1', "\n"),
909
+ "code1\n"),
840
910
  @RM::Paragraph.new('the time'),
841
911
  ]
842
912
 
@@ -849,7 +919,7 @@ the time
849
919
  STR
850
920
 
851
921
  expected = [
852
- @RM::Verbatim.new(' ', 'B.', ' ', 'blah', "\n")]
922
+ @RM::Verbatim.new("B. blah\n")]
853
923
 
854
924
  assert_equal expected, @RMP.parse(str).parts
855
925
  end
@@ -862,58 +932,57 @@ the time
862
932
  assert_equal expected, @RMP.parse('hello').parts
863
933
 
864
934
  expected = [
865
- @RM::Verbatim.new(' ', 'hello '),
935
+ @RM::Verbatim.new('hello '),
866
936
  ]
867
937
 
868
- assert_equal expected, @RMP.parse(' hello ').parts
938
+ assert_equal expected, @RMP.parse(' hello ').parts
869
939
 
870
940
  expected = [
871
- @RM::Verbatim.new(' ', 'hello '),
941
+ @RM::Verbatim.new('hello '),
872
942
  ]
873
943
 
874
- assert_equal expected, @RMP.parse(" hello ").parts
944
+ assert_equal expected, @RMP.parse(' hello ').parts
875
945
 
876
946
  expected = [
877
947
  @RM::Paragraph.new('1'),
878
- @RM::Verbatim.new(' ', '2', "\n",
879
- ' ', '3'),
948
+ @RM::Verbatim.new("2\n", ' 3'),
880
949
  ]
881
950
 
882
951
  assert_equal expected, @RMP.parse("1\n 2\n 3").parts
883
952
 
884
953
  expected = [
885
- @RM::Verbatim.new(' ', '1', "\n",
886
- ' ', '2', "\n",
887
- ' ', '3'),
954
+ @RM::Verbatim.new("1\n",
955
+ " 2\n",
956
+ " 3"),
888
957
  ]
889
958
 
890
959
  assert_equal expected, @RMP.parse(" 1\n 2\n 3").parts
891
960
 
892
961
  expected = [
893
962
  @RM::Paragraph.new('1'),
894
- @RM::Verbatim.new(' ', '2', "\n",
895
- ' ', '3', "\n"),
963
+ @RM::Verbatim.new("2\n",
964
+ " 3\n"),
896
965
  @RM::Paragraph.new('1'),
897
- @RM::Verbatim.new(' ', '2'),
966
+ @RM::Verbatim.new('2'),
898
967
  ]
899
968
 
900
969
  assert_equal expected, @RMP.parse("1\n 2\n 3\n1\n 2").parts
901
970
 
902
971
  expected = [
903
- @RM::Verbatim.new(' ', '1', "\n",
904
- ' ', '2', "\n",
905
- ' ', '3', "\n",
906
- ' ', '1', "\n",
907
- ' ', '2'),
972
+ @RM::Verbatim.new("1\n",
973
+ " 2\n",
974
+ " 3\n",
975
+ "1\n",
976
+ ' 2'),
908
977
  ]
909
978
 
910
979
  assert_equal expected, @RMP.parse(" 1\n 2\n 3\n 1\n 2").parts
911
980
 
912
981
  expected = [
913
- @RM::Verbatim.new(' ', '1', "\n",
914
- ' ', '2', "\n",
982
+ @RM::Verbatim.new("1\n",
983
+ " 2\n",
915
984
  "\n",
916
- ' ', '3'),
985
+ ' 3'),
917
986
  ]
918
987
 
919
988
  assert_equal expected, @RMP.parse(" 1\n 2\n\n 3").parts
@@ -954,7 +1023,6 @@ the time
954
1023
 
955
1024
  expected = [
956
1025
  [:BULLET, '*', 0, 0],
957
- [:SPACE, 2, 0, 0],
958
1026
  [:TEXT, 'l1', 2, 0],
959
1027
  [:NEWLINE, "\n", 4, 0],
960
1028
  ]
@@ -970,12 +1038,9 @@ the time
970
1038
 
971
1039
  expected = [
972
1040
  [:BULLET, '*', 0, 0],
973
- [:SPACE, 2, 0, 0],
974
1041
  [:TEXT, 'l1', 2, 0],
975
1042
  [:NEWLINE, "\n", 4, 0],
976
- [:INDENT, 2, 0, 1],
977
1043
  [:BULLET, '*', 2, 1],
978
- [:SPACE, 2, 2, 1],
979
1044
  [:TEXT, 'l1.1', 4, 1],
980
1045
  [:NEWLINE, "\n", 8, 1],
981
1046
  ]
@@ -1041,11 +1106,9 @@ the time
1041
1106
 
1042
1107
  expected = [
1043
1108
  [:LABEL, 'cat', 0, 0],
1044
- [:SPACE, 6, 0, 0],
1045
1109
  [:TEXT, 'l1', 6, 0],
1046
1110
  [:NEWLINE, "\n", 8, 0],
1047
1111
  [:LABEL, 'dog', 0, 1],
1048
- [:SPACE, 6, 0, 1],
1049
1112
  [:TEXT, 'l1.1', 6, 1],
1050
1113
  [:NEWLINE, "\n", 10, 1],
1051
1114
  ]
@@ -1061,11 +1124,8 @@ the time
1061
1124
 
1062
1125
  expected = [
1063
1126
  [:LABEL, 'label', 0, 0],
1064
- [:SPACE, 7, 0, 0],
1065
1127
  [:NEWLINE, "\n", 7, 0],
1066
- [:INDENT, 2, 0, 1],
1067
1128
  [:NOTE, 'note', 2, 1],
1068
- [:SPACE, 6, 2, 1],
1069
1129
  [:NEWLINE, "\n", 8, 1],
1070
1130
  ]
1071
1131
 
@@ -1080,11 +1140,9 @@ b. l1.1
1080
1140
 
1081
1141
  expected = [
1082
1142
  [:LALPHA, 'a', 0, 0],
1083
- [:SPACE, 3, 0, 0],
1084
1143
  [:TEXT, 'l1', 3, 0],
1085
1144
  [:NEWLINE, "\n", 5, 0],
1086
1145
  [:LALPHA, 'b', 0, 1],
1087
- [:SPACE, 3, 0, 1],
1088
1146
  [:TEXT, 'l1.1', 3, 1],
1089
1147
  [:NEWLINE, "\n", 7, 1],
1090
1148
  ]
@@ -1100,11 +1158,9 @@ dog:: l1.1
1100
1158
 
1101
1159
  expected = [
1102
1160
  [:NOTE, 'cat', 0, 0],
1103
- [:SPACE, 6, 0, 0],
1104
1161
  [:TEXT, 'l1', 6, 0],
1105
1162
  [:NEWLINE, "\n", 8, 0],
1106
1163
  [:NOTE, 'dog', 0, 1],
1107
- [:SPACE, 6, 0, 1],
1108
1164
  [:TEXT, 'l1.1', 6, 1],
1109
1165
  [:NEWLINE, "\n", 10, 1],
1110
1166
  ]
@@ -1120,10 +1176,8 @@ dog::
1120
1176
 
1121
1177
  expected = [
1122
1178
  [:NOTE, 'cat', 0, 0],
1123
- [:SPACE, 5, 0, 0],
1124
1179
  [:NEWLINE, "\n", 5, 0],
1125
1180
  [:NOTE, 'dog', 0, 1],
1126
- [:SPACE, 5, 0, 1],
1127
1181
  [:NEWLINE, "\n", 5, 1],
1128
1182
  ]
1129
1183
 
@@ -1151,11 +1205,9 @@ Cat::Dog
1151
1205
 
1152
1206
  expected = [
1153
1207
  [:NUMBER, '1', 0, 0],
1154
- [:SPACE, 3, 0, 0],
1155
1208
  [:TEXT, 'l1', 3, 0],
1156
1209
  [:NEWLINE, "\n", 5, 0],
1157
1210
  [:NUMBER, '2', 0, 1],
1158
- [:SPACE, 3, 0, 1],
1159
1211
  [:TEXT, 'l1.1', 3, 1],
1160
1212
  [:NEWLINE, "\n", 7, 1],
1161
1213
  ]
@@ -1173,20 +1225,16 @@ Cat::Dog
1173
1225
 
1174
1226
  expected = [
1175
1227
  [:NUMBER, "1", 0, 0],
1176
- [:SPACE, 3, 0, 0],
1177
1228
  [:TEXT, "blah blah blah", 3, 0],
1178
1229
  [:NEWLINE, "\n", 17, 0],
1179
1230
 
1180
- [:INDENT, 3, 0, 1],
1181
1231
  [:TEXT, "l.", 3, 1],
1182
1232
  [:NEWLINE, "\n", 5, 1],
1183
1233
 
1184
1234
  [:NUMBER, "2", 0, 2],
1185
- [:SPACE, 3, 0, 2],
1186
1235
  [:TEXT, "blah blah blah blah", 3, 2],
1187
1236
  [:NEWLINE, "\n", 22, 2],
1188
1237
 
1189
- [:INDENT, 3, 0, 3],
1190
1238
  [:TEXT, "d.", 3, 3],
1191
1239
  [:NEWLINE, "\n", 5, 3]
1192
1240
  ]
@@ -1204,24 +1252,18 @@ Cat::Dog
1204
1252
 
1205
1253
  expected = [
1206
1254
  [:NUMBER, "1", 0, 0],
1207
- [:SPACE, 3, 0, 0],
1208
1255
  [:TEXT, "blah blah blah", 3, 0],
1209
1256
  [:NEWLINE, "\n", 17, 0],
1210
1257
 
1211
- [:INDENT, 3, 0, 1],
1212
1258
  [:LALPHA, "l", 3, 1],
1213
- [:SPACE, 4, 3, 1],
1214
1259
  [:TEXT, "more stuff", 7, 1],
1215
1260
  [:NEWLINE, "\n", 17, 1],
1216
1261
 
1217
1262
  [:NUMBER, "2", 0, 2],
1218
- [:SPACE, 3, 0, 2],
1219
1263
  [:TEXT, "blah blah blah blah", 3, 2],
1220
1264
  [:NEWLINE, "\n", 22, 2],
1221
1265
 
1222
- [:INDENT, 3, 0, 3],
1223
1266
  [:LALPHA, "d", 3, 3],
1224
- [:SPACE, 3, 3, 3],
1225
1267
  [:TEXT, "other stuff", 6, 3],
1226
1268
  [:NEWLINE, "\n", 17, 3]
1227
1269
  ]
@@ -1252,14 +1294,14 @@ for all
1252
1294
 
1253
1295
  def test_tokenize_rule
1254
1296
  str = <<-STR
1255
- ---
1297
+ ---
1256
1298
 
1257
1299
  --- blah ---
1258
1300
  STR
1259
1301
 
1260
1302
  expected = [
1261
1303
  [:RULE, 1, 0, 0],
1262
- [:NEWLINE, "\n", 4, 0],
1304
+ [:NEWLINE, "\n", 3, 0],
1263
1305
  [:NEWLINE, "\n", 0, 1],
1264
1306
  [:TEXT, "--- blah ---", 0, 2],
1265
1307
  [:NEWLINE, "\n", 12, 2],
@@ -1276,11 +1318,9 @@ B. l1.1
1276
1318
 
1277
1319
  expected = [
1278
1320
  [:UALPHA, 'A', 0, 0],
1279
- [:SPACE, 3, 0, 0],
1280
1321
  [:TEXT, 'l1', 3, 0],
1281
1322
  [:NEWLINE, "\n", 5, 0],
1282
1323
  [:UALPHA, 'B', 0, 1],
1283
- [:SPACE, 3, 0, 1],
1284
1324
  [:TEXT, 'l1.1', 3, 1],
1285
1325
  [:NEWLINE, "\n", 7, 1],
1286
1326
  ]
@@ -1299,7 +1339,6 @@ Example heading:
1299
1339
  [:TEXT, 'Example heading:', 0, 0],
1300
1340
  [:NEWLINE, "\n", 16, 0],
1301
1341
  [:NEWLINE, "\n", 0, 1],
1302
- [:INDENT, 3, 0, 2],
1303
1342
  [:HEADER, 3, 3, 2],
1304
1343
  [:TEXT, 'heading three', 7, 2],
1305
1344
  [:NEWLINE, "\n", 20, 2],
@@ -1310,17 +1349,17 @@ Example heading:
1310
1349
 
1311
1350
  # HACK move to Verbatim test case
1312
1351
  def test_verbatim_normalize
1313
- v = @RM::Verbatim.new ' ', 'foo', "\n", "\n", "\n", ' ', 'bar', "\n"
1352
+ v = @RM::Verbatim.new "foo\n", "\n", "\n", "bar\n"
1314
1353
 
1315
1354
  v.normalize
1316
1355
 
1317
- assert_equal [' ', 'foo', "\n", "\n", ' ', 'bar', "\n"], v.parts
1356
+ assert_equal ["foo\n", "\n", "bar\n"], v.parts
1318
1357
 
1319
- v = @RM::Verbatim.new ' ', 'foo', "\n", "\n"
1358
+ v = @RM::Verbatim.new "foo\n", "\n"
1320
1359
 
1321
1360
  v.normalize
1322
1361
 
1323
- assert_equal [' ', 'foo', "\n"], v.parts
1362
+ assert_equal ["foo\n"], v.parts
1324
1363
  end
1325
1364
 
1326
1365
  def test_unget