rdtool 0.6.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. data/COPYING.txt +674 -0
  2. data/Gemfile +9 -0
  3. data/HISTORY +284 -0
  4. data/LICENSE.txt +58 -0
  5. data/MANIFEST +89 -0
  6. data/README.html +44 -0
  7. data/README.ja.html +46 -0
  8. data/README.rd +52 -0
  9. data/README.rd.ja +54 -0
  10. data/Rakefile +29 -0
  11. data/TODO +15 -0
  12. data/VERSION +1 -0
  13. data/bin/rd2 +281 -0
  14. data/bin/rdswap.rb +207 -0
  15. data/doc/rd-draft.rd +479 -0
  16. data/doc/rd-draft.rd.ja +487 -0
  17. data/lib/rd/block-element.rb +114 -0
  18. data/lib/rd/complex-list-item.rb +65 -0
  19. data/lib/rd/desclist.rb +55 -0
  20. data/lib/rd/document-struct.rb +46 -0
  21. data/lib/rd/dot.rd2rc +18 -0
  22. data/lib/rd/element.rb +160 -0
  23. data/lib/rd/filter.rb +255 -0
  24. data/lib/rd/inline-element.rb +233 -0
  25. data/lib/rd/labeled-element.rb +14 -0
  26. data/lib/rd/list.rb +57 -0
  27. data/lib/rd/loose-struct.rb +11 -0
  28. data/lib/rd/methodlist.rb +57 -0
  29. data/lib/rd/output-format-visitor.rb +28 -0
  30. data/lib/rd/package.rb +4 -0
  31. data/lib/rd/parser-util.rb +14 -0
  32. data/lib/rd/post-install +1 -0
  33. data/lib/rd/rbl-file.rb +69 -0
  34. data/lib/rd/rbl-suite.rb +37 -0
  35. data/lib/rd/rd-struct.rb +86 -0
  36. data/lib/rd/rd2html-lib.rb +490 -0
  37. data/lib/rd/rd2html-opt.rb +67 -0
  38. data/lib/rd/rd2man-lib.rb +241 -0
  39. data/lib/rd/rd2rdo-lib.rb +19 -0
  40. data/lib/rd/rd2rmi-lib.rb +32 -0
  41. data/lib/rd/rdblockparser.ry +518 -0
  42. data/lib/rd/rdblockparser.tab.rb +1050 -0
  43. data/lib/rd/rdfmt.rb +15 -0
  44. data/lib/rd/rdinlineparser.ry +503 -0
  45. data/lib/rd/rdinlineparser.tab.rb +1243 -0
  46. data/lib/rd/rdvisitor.rb +214 -0
  47. data/lib/rd/reference-resolver.rb +114 -0
  48. data/lib/rd/search-file.rb +14 -0
  49. data/lib/rd/tree.rb +103 -0
  50. data/lib/rd/version.rb +39 -0
  51. data/lib/rd/visitor.rb +86 -0
  52. data/makerdtool.rb +75 -0
  53. data/setup.rb +1596 -0
  54. data/test.rb +33 -0
  55. data/test/data/includee1.html +1 -0
  56. data/test/data/includee2.html +1 -0
  57. data/test/data/includee3.nothtml +1 -0
  58. data/test/data/includee4.xhtml +0 -0
  59. data/test/data/label.rbl +2 -0
  60. data/test/data/label2.rbl +2 -0
  61. data/test/data/sub/includee2.html +1 -0
  62. data/test/data/sub/includee4.html +0 -0
  63. data/test/dummy-observer.rb +6 -0
  64. data/test/dummy.rb +33 -0
  65. data/test/temp-dir.rb +19 -0
  66. data/test/test-block-parser.rb +46 -0
  67. data/test/test-desclist-item.rb +219 -0
  68. data/test/test-document-element.rb +46 -0
  69. data/test/test-document-struct.rb +66 -0
  70. data/test/test-element.rb +46 -0
  71. data/test/test-headline.rb +80 -0
  72. data/test/test-inline-parser.rb +46 -0
  73. data/test/test-list-item.rb +54 -0
  74. data/test/test-list.rb +53 -0
  75. data/test/test-methodlist-item.rb +73 -0
  76. data/test/test-nonterminal-element.rb +170 -0
  77. data/test/test-nonterminal-inline.rb +33 -0
  78. data/test/test-output-format-visitor.rb +48 -0
  79. data/test/test-parser-util.rb +41 -0
  80. data/test/test-rbl-file.rb +156 -0
  81. data/test/test-rbl-suite.rb +43 -0
  82. data/test/test-rd2html-lib.rb +496 -0
  83. data/test/test-rdtree.rb +17 -0
  84. data/test/test-rdvisitor.rb +29 -0
  85. data/test/test-reference-resolver.rb +202 -0
  86. data/test/test-reference.rb +132 -0
  87. data/test/test-search-file.rb +22 -0
  88. data/test/test-terminal-inline.rb +41 -0
  89. data/test/test-textblock.rb +44 -0
  90. data/test/test-tree.rb +82 -0
  91. data/test/test-version.rb +57 -0
  92. data/test/test-visitor.rb +230 -0
  93. data/utils/rd-mode.el +425 -0
  94. metadata +203 -0
@@ -0,0 +1,17 @@
1
+ require 'test/unit'
2
+
3
+ require 'rd/rdfmt'
4
+ require 'rd/element'
5
+
6
+ include RD
7
+
8
+ class TestRDTree < Test::Unit::TestCase
9
+ def test_s_new
10
+ tr = RDTree.new("=begin\nTEST\n=end\n")
11
+ assert_kind_of(DocumentElement, tr.root)
12
+
13
+ tr_not_parse = RDTree.new("=begin\nTEST\n=end\n", ["test/data"], false)
14
+ assert_nil(tr_not_parse.root)
15
+ assert_equal(["test/data"], tr_not_parse.include_paths)
16
+ end
17
+ end
@@ -0,0 +1,29 @@
1
+ require 'test/unit'
2
+
3
+ require 'rd/rdvisitor'
4
+ require 'rd/rd-struct'
5
+
6
+ include RD
7
+ class TestRDVisitor < Test::Unit::TestCase
8
+
9
+ def test_refer_external
10
+ tr_ext = Tree.new_with_document_struct(DocumentStructure::RD,
11
+ ["test/data"])
12
+ label_ext = Reference::RDLabel.new("label1", "label.rd")
13
+ tr_ext.root = DocumentElement.new
14
+ ref_ext = nil
15
+ tr_ext.root.build do
16
+ new TextBlock do
17
+ StringElement.new "label"
18
+ ref_ext = new Reference, label_ext
19
+ end
20
+ end
21
+ vis_ext = RDVisitor.new
22
+ vis_ext.prepare_labels(tr_ext)
23
+ label_not_exist = Reference::RDLabel.new("label3", "label.rd")
24
+
25
+ assert_equal("label:0", vis_ext.refer_external(ref_ext))
26
+ assert_equal( "label:0", vis_ext.refer_external(label_ext))
27
+ assert_equal(nil, vis_ext.refer_external(label_not_exist))
28
+ end
29
+ end
@@ -0,0 +1,202 @@
1
+ require 'test/unit'
2
+
3
+ require 'temp-dir'
4
+
5
+ require 'rd/reference-resolver'
6
+ require 'rd/tree'
7
+ require 'rd/rd-struct'
8
+
9
+ include RD
10
+
11
+ class TestReferenceResolver < Test::Unit::TestCase
12
+ def setup
13
+ @tr_head1 = Tree.new_with_document_struct(DocumentStructure::RD)
14
+ @de_head1 = DocumentElement.new
15
+ @tr_head1.root = @de_head1
16
+
17
+ hl_head1 = nil
18
+ se_head1 = nil
19
+ @de_head1.build do
20
+ hl_head1 = new Headline, 1 do
21
+ se_head1 = new StringElement, "label"
22
+ end
23
+ end
24
+ @hl_head1 = hl_head1
25
+ @se_head1 = se_head1
26
+
27
+ @tr_head2 = Tree.new_with_document_struct(DocumentStructure::RD)
28
+ @de_head2 = DocumentElement.new
29
+ @tr_head2.root = @de_head2
30
+ hl1_head2, hl2_head2 = nil
31
+
32
+ @de_head2.build do
33
+ hl1_head2 = new Headline, 1 do
34
+ new StringElement, "label1"
35
+ end
36
+ new TextBlock
37
+ hl2_head2 = new Headline, 2 do
38
+ new StringElement, "label2"
39
+ end
40
+ end
41
+ @hl1_head2 = hl1_head2
42
+ @hl2_head2 = hl2_head2
43
+
44
+ @tr_desc = Tree.new_with_document_struct(DocumentStructure::RD)
45
+ @de_desc = DocumentElement.new
46
+ @tr_desc.root = @de_desc
47
+ hl1_desc, dt1_desc = nil
48
+ @de_desc.build do
49
+ hl1_desc = new(Headline, 1) do
50
+ new StringElement, "label1"
51
+ end
52
+ new DescList do
53
+ new DescListItem do
54
+ dt1_desc = make_term do
55
+ new StringElement, "label2"
56
+ end
57
+ end
58
+ end
59
+ end
60
+ @hl1_desc = hl1_desc
61
+ @dt1_desc = dt1_desc
62
+
63
+ @tr_conf = Tree.new_with_document_struct(DocumentStructure::RD)
64
+ @de_conf = DocumentElement.new
65
+ @tr_conf.root = @de_conf
66
+ hl1_conf, hl2_conf = nil
67
+ @de_conf.build do
68
+ hl1_conf = new Headline, 1 do
69
+ new StringElement, "label"
70
+ end
71
+ hl2_conf = new Headline, 2 do
72
+ new StringElement, "label"
73
+ end
74
+ end
75
+ @hl1_conf = hl1_conf
76
+ @hl2_conf = hl2_conf
77
+
78
+ @tr_no = Tree.new_with_document_struct(DocumentStructure::RD)
79
+ @de_no = DocumentElement.new
80
+ @tr_no.root = @de_no
81
+
82
+ @resolver = ReferenceResolver.new(@tr_head2)
83
+ end
84
+
85
+ def test_referent_of_label
86
+ @tr_desc.include_path = ["test/data"]
87
+ resolv = ReferenceResolver.new(@tr_desc, "label:")
88
+ label1 = Reference::RDLabel.new("label1")
89
+ assert_equal([nil, "label:0"], resolv.referent_of_label(label1))
90
+ label2 = Reference::RDLabel.new("label2")
91
+ assert_equal([nil, "label:1"], resolv.referent_of_label(label2))
92
+ label_ext = Reference::RDLabel.new("label1", "label.rd")
93
+ assert_equal(["label", "label:0"], resolv.referent_of_label(label_ext))
94
+
95
+ label3 = Reference::RDLabel.new("label3")
96
+ assert_equal(nil, resolv.referent_of_label(label3))
97
+ label_ext3 = Reference::RDLabel.new("label3", "label.rd")
98
+ assert_equal(["label", nil], resolv.referent_of_label(label_ext3))
99
+ end
100
+
101
+ def test_refer_element
102
+ resolv = ReferenceResolver.new(@tr_head1)
103
+ assert_equal([@hl_head1], resolv.refer_element("label"))
104
+ assert_equal([], resolv.refer_element("label not found"))
105
+ resolv = ReferenceResolver.new(@tr_head2)
106
+ assert_equal([@hl1_head2], resolv.refer_element("label1"))
107
+ assert_equal([@hl2_head2], resolv.refer_element("label2"))
108
+ resolv = ReferenceResolver.new(@tr_desc)
109
+ assert_equal([@hl1_desc], resolv.refer_element("label1"))
110
+ assert_equal([@dt1_desc], resolv.refer_element("label2"))
111
+ resolv = ReferenceResolver.new(@tr_conf)
112
+ assert_equal([@hl1_conf, @hl2_conf], resolv.refer_element("label"))
113
+ resolv = ReferenceResolver.new(@tr_no)
114
+ assert_equal([], resolv.refer_element("label"))
115
+ end
116
+
117
+ def test_refer
118
+ resolv = ReferenceResolver.new(@tr_head1, "label:")
119
+ assert_equal("label:0", resolv.refer("label"))
120
+ assert_equal(nil, resolv.refer("label not found"))
121
+ resolv = ReferenceResolver.new(@tr_head2, "label:")
122
+ assert_equal("label:0", resolv.refer("label1"))
123
+ assert_equal("label:1", resolv.refer("label2"))
124
+ resolv = ReferenceResolver.new(@tr_desc, "label:")
125
+ assert_equal("label:0", resolv.refer("label1"))
126
+ assert_equal("label:1", resolv.refer("label2"))
127
+ resolv = ReferenceResolver.new(@tr_conf, "label:")
128
+ assert_equal("label:0", resolv.refer("label"))
129
+ resolv = ReferenceResolver.new(@tr_no, "label:")
130
+ assert_equal(nil, resolv.refer("label"))
131
+
132
+ resolv = ReferenceResolver.new(@tr_head1, "label:")
133
+ label = Reference::RDLabel.new("label")
134
+ assert_equal("label:0", resolv.refer(label))
135
+ ref = Reference.new(label)
136
+ assert_equal("label:0", resolv.refer(ref))
137
+ end
138
+
139
+ def test_refer_external_file
140
+ tr_ext = Tree.new_with_document_struct(DocumentStructure::RD,
141
+ ["test/data"])
142
+ label_ext = Reference::RDLabel.new("label1", "label.rd")
143
+ de = DocumentElement.new
144
+ tr_ext.root = de
145
+ ref = nil
146
+ de.build do
147
+ new TextBlock do
148
+ se = StringElement.new "label"
149
+ ref = new Reference, label_ext
150
+ end
151
+ end
152
+ label_not_exist = Reference::RDLabel.new("label3", "label.rd")
153
+ resolv = ReferenceResolver.new(tr_ext)
154
+
155
+ assert_equal(["label", "label:0"], resolv.refer_external_file(ref))
156
+ assert_equal(["label", "label:0"], resolv.refer_external_file(label_ext))
157
+ assert_equal(["label", nil], resolv.refer_external_file(label_not_exist))
158
+ end
159
+
160
+ def test_get_label_num
161
+ assert_equal(0, @resolver.get_label_num(@hl1_head2))
162
+ assert_equal(1, @resolver.get_label_num(@hl2_head2))
163
+ assert_equal(nil, @resolver.get_label_num(@dt1_desc))
164
+ end
165
+
166
+ def test_get_anchor
167
+ resolv = ReferenceResolver.new(@tr_head2, "Label-")
168
+ assert_equal("Label-0", resolv.get_anchor(@hl1_head2))
169
+ assert_equal("Label-1", resolv.get_anchor(@hl2_head2))
170
+ assert_equal(nil, resolv.get_anchor(@dt1_desc))
171
+ end
172
+
173
+ def test_label2str
174
+ assert_equal("string", @resolver.label2str("string"))
175
+ assert_equal("label", @resolver.label2str(@hl_head1))
176
+ assert_equal("label2", @resolver.label2str(@dt1_desc))
177
+ label = Reference::RDLabel.new("label1")
178
+ assert_equal("label1", @resolver.label2str(label))
179
+ ref = Reference.new(label)
180
+ assert_equal("label1", @resolver.label2str(ref))
181
+ assert_raises(ArgumentError) do
182
+ @resolver.label2str([])
183
+ end
184
+ end
185
+
186
+ def test_make_rbl_file
187
+ in_temp_dir do
188
+ begin
189
+ @resolver.make_rbl_file("label-head")
190
+ assert(File.exist?("label-head.rbl"))
191
+ ensure
192
+ remove_file("label-head.rbl")
193
+ end
194
+ begin
195
+ @resolver.make_rbl_file("label-head2.rd")
196
+ assert(File.exist?("label-head2.rbl"))
197
+ ensure
198
+ remove_file("label-head2.rbl")
199
+ end
200
+ end
201
+ end
202
+ end
@@ -0,0 +1,132 @@
1
+ require 'test/unit'
2
+
3
+ require 'rd/inline-element'
4
+ require 'rd/document-struct'
5
+ require 'rd/rd-struct'
6
+ require 'rd/loose-struct'
7
+ require 'dummy'
8
+
9
+ include RD
10
+
11
+ DummyStruct.define_relationship(Reference, DummyElement)
12
+
13
+ class TestReference < Test::Unit::TestCase
14
+ def test_initialize
15
+ d1 = DummyElement.new
16
+ l = Reference::TemporaryLabel.new([d1])
17
+ ref = Reference.new_from_label_under_document_struct(l, DummyStruct)
18
+ assert_kind_of(Reference::RDLabel, ref.label)
19
+ assert_equal([d1], ref.instance_eval("children"))
20
+
21
+ l2 = Reference::TemporaryLabel.new([d1], "filename")
22
+ ref = Reference.new_from_label_under_document_struct(l2, DummyStruct)
23
+ assert_kind_of(Reference::RDLabel, ref.label)
24
+ assert_equal([d1], ref.instance_eval("children"))
25
+ assert_equal("filename", ref.label.filename)
26
+
27
+ l = Reference::RDLabel.new("label")
28
+ ref = Reference.new(l)
29
+ assert_kind_of(Reference::RDLabel, ref.label)
30
+ assert_equal([], ref.instance_eval("children"))
31
+
32
+ url = Reference::URL.new("label")
33
+ ref2 = Reference.new_from_label_under_document_struct(url,
34
+ DocumentStructure::RD)
35
+ assert_kind_of(Reference::URL, ref2.label)
36
+ assert_kind_of(StringElement, ref2.instance_eval("children")[0])
37
+ assert_equal("<URL:label>", ref2.instance_eval("children")[0].content)
38
+ end
39
+
40
+ def test_s_new_from_label_without_document_struct
41
+ se = StringElement.new "string"
42
+ label = Reference::TemporaryLabel.new([se])
43
+ ref = Reference.new_from_label_without_document_struct(label)
44
+ assert_kind_of(Reference::RDLabel, ref.label)
45
+ assert_equal([se], ref.instance_eval("children"))
46
+ end
47
+
48
+ def test_to_label_RDLabel
49
+ l = Reference::TemporaryLabel.new([DummyElement.new])
50
+ ref = Reference.new(l)
51
+ assert_equal("label", ref.to_label)
52
+ end
53
+
54
+ def test_to_label_URL
55
+ l = Reference::URL.new "http://www.ruby-lang.org/"
56
+ ref = Reference.new l
57
+ assert_equal("", ref.to_label)
58
+ end
59
+
60
+ def test_result_of_apply_method_of
61
+ visitor = DummyVisitor.new
62
+ label = Reference::RDLabel.new("label")
63
+ reference = Reference.new(label)
64
+ result = ["apply_to_Reference_with_RDLabel",
65
+ [reference, []]]
66
+ assert_equal(result, reference.result_of_apply_method_of(visitor, []))
67
+
68
+ url = Reference::URL.new("url")
69
+ reference = Reference.new(url)
70
+ result = ["apply_to_Reference_with_URL",
71
+ [reference, []]]
72
+ assert_equal(result, reference.result_of_apply_method_of(visitor, []))
73
+ end
74
+
75
+ def test_add_child
76
+ d1 = DummyElement.new
77
+ d2 = DummyElement.new
78
+ l = Reference::TemporaryLabel.new([d1])
79
+ ref = Reference.new_from_label_under_document_struct(l, DummyStruct)
80
+ ref.add_child_under_document_struct(d2, DummyStruct)
81
+ assert_equal(3, ref.to_a.size)
82
+ assert_equal("label", ref.label.element_label)
83
+ end
84
+
85
+ def test_build
86
+ lb = Reference::RDLabel.new("label")
87
+ ref = Reference.new(lb).build(DocumentStructure::LOOSE) do
88
+ set_label(Reference::RDLabel.new("LABEL"))
89
+ end
90
+ assert_equal("LABEL", ref.to_label)
91
+ end
92
+ end
93
+
94
+ class TestRDLabel < Test::Unit::TestCase
95
+ def test_to_label
96
+ one = Reference::RDLabel.new("label")
97
+ assert_equal("label", one.to_label)
98
+ zero = Reference::RDLabel.new("")
99
+ assert_equal("", zero.to_label)
100
+ file = Reference::RDLabel.new("label", "filename")
101
+ assert_equal("label", file.to_label)
102
+ end
103
+
104
+ def test_result_of_apply_method_of
105
+ visitor = DummyVisitor.new
106
+ label = Reference::RDLabel.new("label")
107
+ reference = Reference.new(label)
108
+ result = ["apply_to_Reference_with_RDLabel",
109
+ [reference, []]]
110
+ assert_equal(result, label.result_of_apply_method_of(visitor, reference,
111
+ []))
112
+ end
113
+ end
114
+
115
+ class TestURL < Test::Unit::TestCase
116
+ def test_to_label
117
+ nor = Reference::URL.new "http://www.ruby-lang.org/"
118
+ assert_equal("", nor.to_label)
119
+ empty = Reference::URL.new ""
120
+ assert_equal("", empty.to_label)
121
+ end
122
+
123
+ def test_result_of_apply_method_of
124
+ visitor = DummyVisitor.new
125
+ label = Reference::URL.new("label")
126
+ reference = Reference.new(label)
127
+ result = ["apply_to_Reference_with_URL",
128
+ [reference, []]]
129
+ assert_equal(result, label.result_of_apply_method_of(visitor, reference,
130
+ []))
131
+ end
132
+ end
@@ -0,0 +1,22 @@
1
+ require 'test/unit'
2
+
3
+ require 'rd/search-file'
4
+
5
+ include RD
6
+ class TestSearchFile < Test::Unit::TestCase
7
+ include SearchFile
8
+
9
+ def test_search_file
10
+ include_path = ["test/data/sub", "test/data"]
11
+ suffixes = ["xhtml", "html"]
12
+
13
+ assert_equal("test/data/includee1.html",
14
+ search_file("includee1", include_path, suffixes))
15
+ assert_equal("test/data/sub/includee2.html",
16
+ search_file("includee2", include_path, suffixes))
17
+ assert_equal(nil,
18
+ search_file("includee3", include_path, suffixes))
19
+ assert_equal("test/data/sub/includee4.html",
20
+ search_file("includee4", include_path, suffixes))
21
+ end
22
+ end
@@ -0,0 +1,41 @@
1
+ require 'test/unit'
2
+
3
+ require 'rd/inline-element'
4
+
5
+ include RD
6
+
7
+ class TestStringElement < Test::Unit::TestCase
8
+ def test_to_label
9
+ el = StringElement.new "label"
10
+ assert_equal("label", el.to_label)
11
+ ws = StringElement.new " label "
12
+ assert_equal(" label ", ws.to_label)
13
+ empty = StringElement.new ""
14
+ assert_equal("", empty.to_label)
15
+ end
16
+
17
+ def test_content
18
+ el = StringElement.new ""
19
+ assert_equal("", el.content)
20
+ el.content = "label"
21
+ assert_equal("label", el.content)
22
+ end
23
+ end
24
+
25
+ class TestVerb < Test::Unit::TestCase
26
+ def test_to_label
27
+ el = Verb.new "label"
28
+ assert_equal("label", el.to_label)
29
+ ws = Verb.new " label "
30
+ assert_equal("label", ws.to_label)
31
+ empty = Verb.new ""
32
+ assert_equal("", empty.to_label)
33
+ end
34
+
35
+ def test_content
36
+ el = Verb.new ""
37
+ assert_equal("", el.content)
38
+ el.content = "label"
39
+ assert_equal("label", el.content)
40
+ end
41
+ end