rdoc 3.1 → 6.3.3

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 (247) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.rdoc +220 -0
  3. data/CVE-2013-0256.rdoc +49 -0
  4. data/ExampleMarkdown.md +37 -0
  5. data/ExampleRDoc.rdoc +208 -0
  6. data/Gemfile +12 -0
  7. data/History.rdoc +1666 -0
  8. data/LEGAL.rdoc +50 -0
  9. data/LICENSE.rdoc +57 -0
  10. data/README.rdoc +129 -0
  11. data/RI.rdoc +57 -0
  12. data/Rakefile +84 -81
  13. data/TODO.rdoc +59 -0
  14. data/bin/console +7 -0
  15. data/bin/setup +6 -0
  16. data/{bin → exe}/rdoc +11 -2
  17. data/exe/ri +12 -0
  18. data/lib/rdoc/alias.rb +1 -2
  19. data/lib/rdoc/anon_class.rb +3 -2
  20. data/lib/rdoc/any_method.rb +234 -40
  21. data/lib/rdoc/attr.rb +79 -11
  22. data/lib/rdoc/class_module.rb +443 -71
  23. data/lib/rdoc/code_object.rb +216 -20
  24. data/lib/rdoc/code_objects.rb +4 -21
  25. data/lib/rdoc/comment.rb +250 -0
  26. data/lib/rdoc/constant.rb +110 -9
  27. data/lib/rdoc/context/section.rb +232 -0
  28. data/lib/rdoc/context.rb +392 -172
  29. data/lib/rdoc/cross_reference.rb +202 -0
  30. data/lib/rdoc/encoding.rb +83 -28
  31. data/lib/rdoc/erb_partial.rb +19 -0
  32. data/lib/rdoc/erbio.rb +8 -3
  33. data/lib/rdoc/extend.rb +10 -0
  34. data/lib/rdoc/generator/darkfish.rb +507 -84
  35. data/lib/rdoc/generator/json_index.rb +300 -0
  36. data/lib/rdoc/generator/markup.rb +27 -74
  37. data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
  38. data/lib/rdoc/generator/pot/po.rb +84 -0
  39. data/lib/rdoc/generator/pot/po_entry.rb +141 -0
  40. data/lib/rdoc/generator/pot.rb +98 -0
  41. data/lib/rdoc/generator/ri.rb +8 -62
  42. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
  43. data/lib/rdoc/generator/template/darkfish/_head.rhtml +22 -0
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +19 -0
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +9 -0
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +15 -0
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +9 -0
  48. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +15 -0
  49. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +15 -0
  50. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +12 -0
  51. data/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
  52. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +12 -0
  53. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +11 -0
  54. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +14 -0
  55. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
  56. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +18 -0
  57. data/lib/rdoc/generator/template/darkfish/class.rhtml +172 -0
  58. data/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
  59. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +639 -0
  60. data/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
  61. data/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
  62. data/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
  63. data/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
  64. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  65. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  66. data/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
  67. data/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
  68. data/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
  69. data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
  70. data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
  71. data/lib/rdoc/generator/template/darkfish/index.rhtml +18 -60
  72. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -83
  73. data/lib/rdoc/generator/template/darkfish/js/search.js +110 -0
  74. data/lib/rdoc/generator/template/darkfish/page.rhtml +18 -0
  75. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +18 -0
  76. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +62 -0
  77. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +58 -0
  78. data/lib/rdoc/generator/template/json_index/.document +1 -0
  79. data/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
  80. data/lib/rdoc/generator/template/json_index/js/searcher.js +229 -0
  81. data/lib/rdoc/generator.rb +24 -13
  82. data/lib/rdoc/ghost_method.rb +1 -2
  83. data/lib/rdoc/i18n/locale.rb +102 -0
  84. data/lib/rdoc/i18n/text.rb +126 -0
  85. data/lib/rdoc/i18n.rb +10 -0
  86. data/lib/rdoc/include.rb +5 -95
  87. data/lib/rdoc/known_classes.rb +5 -2
  88. data/lib/rdoc/markdown/entities.rb +2132 -0
  89. data/lib/rdoc/markdown/literals.kpeg +23 -0
  90. data/lib/rdoc/markdown/literals.rb +416 -0
  91. data/lib/rdoc/markdown.kpeg +1237 -0
  92. data/lib/rdoc/markdown.rb +16684 -0
  93. data/lib/rdoc/markup/attr_changer.rb +23 -0
  94. data/lib/rdoc/markup/attr_span.rb +36 -0
  95. data/lib/rdoc/markup/attribute_manager.rb +135 -62
  96. data/lib/rdoc/markup/attributes.rb +71 -0
  97. data/lib/rdoc/markup/blank_line.rb +1 -0
  98. data/lib/rdoc/markup/block_quote.rb +15 -0
  99. data/lib/rdoc/markup/document.rb +96 -9
  100. data/lib/rdoc/markup/formatter.rb +138 -25
  101. data/lib/rdoc/markup/hard_break.rb +32 -0
  102. data/lib/rdoc/markup/heading.rb +61 -2
  103. data/lib/rdoc/markup/include.rb +43 -0
  104. data/lib/rdoc/markup/indented_paragraph.rb +48 -0
  105. data/lib/rdoc/markup/list.rb +25 -4
  106. data/lib/rdoc/markup/list_item.rb +18 -4
  107. data/lib/rdoc/markup/paragraph.rb +15 -0
  108. data/lib/rdoc/markup/parser.rb +180 -88
  109. data/lib/rdoc/markup/pre_process.rb +183 -38
  110. data/lib/rdoc/markup/raw.rb +6 -5
  111. data/lib/rdoc/markup/regexp_handling.rb +41 -0
  112. data/lib/rdoc/markup/rule.rb +1 -0
  113. data/lib/rdoc/markup/table.rb +47 -0
  114. data/lib/rdoc/markup/to_ansi.rb +17 -7
  115. data/lib/rdoc/markup/to_bs.rb +5 -8
  116. data/lib/rdoc/markup/to_html.rb +238 -137
  117. data/lib/rdoc/markup/to_html_crossref.rb +125 -152
  118. data/lib/rdoc/markup/to_html_snippet.rb +285 -0
  119. data/lib/rdoc/markup/to_joined_paragraph.rb +47 -0
  120. data/lib/rdoc/markup/to_label.rb +75 -0
  121. data/lib/rdoc/markup/to_markdown.rb +192 -0
  122. data/lib/rdoc/markup/to_rdoc.rb +85 -15
  123. data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
  124. data/lib/rdoc/markup/to_test.rb +2 -4
  125. data/lib/rdoc/markup/to_tt_only.rb +121 -0
  126. data/lib/rdoc/markup/verbatim.rb +39 -0
  127. data/lib/rdoc/markup.rb +388 -110
  128. data/lib/rdoc/meta_method.rb +1 -2
  129. data/lib/rdoc/method_attr.rb +87 -21
  130. data/lib/rdoc/mixin.rb +121 -0
  131. data/lib/rdoc/normal_class.rb +39 -10
  132. data/lib/rdoc/normal_module.rb +22 -7
  133. data/lib/rdoc/options.rb +613 -73
  134. data/lib/rdoc/parser/c.rb +621 -287
  135. data/lib/rdoc/parser/changelog.rb +335 -0
  136. data/lib/rdoc/parser/markdown.rb +24 -0
  137. data/lib/rdoc/parser/rd.rb +23 -0
  138. data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
  139. data/lib/rdoc/parser/ruby.rb +1368 -762
  140. data/lib/rdoc/parser/ruby_tools.rb +42 -35
  141. data/lib/rdoc/parser/simple.rb +23 -11
  142. data/lib/rdoc/parser/text.rb +12 -0
  143. data/lib/rdoc/parser.rb +162 -89
  144. data/lib/rdoc/rd/block_parser.rb +1056 -0
  145. data/lib/rdoc/rd/block_parser.ry +639 -0
  146. data/lib/rdoc/rd/inline.rb +72 -0
  147. data/lib/rdoc/rd/inline_parser.rb +1208 -0
  148. data/lib/rdoc/rd/inline_parser.ry +593 -0
  149. data/lib/rdoc/rd.rb +100 -0
  150. data/lib/rdoc/rdoc.rb +208 -115
  151. data/lib/rdoc/require.rb +1 -2
  152. data/lib/rdoc/ri/driver.rb +734 -239
  153. data/lib/rdoc/ri/formatter.rb +1 -0
  154. data/lib/rdoc/ri/paths.rb +91 -48
  155. data/lib/rdoc/ri/store.rb +3 -261
  156. data/lib/rdoc/ri/task.rb +71 -0
  157. data/lib/rdoc/ri.rb +5 -2
  158. data/lib/rdoc/rubygems_hook.rb +246 -0
  159. data/lib/rdoc/servlet.rb +451 -0
  160. data/lib/rdoc/single_class.rb +14 -2
  161. data/lib/rdoc/stats/normal.rb +19 -12
  162. data/lib/rdoc/stats/quiet.rb +1 -0
  163. data/lib/rdoc/stats/verbose.rb +1 -0
  164. data/lib/rdoc/stats.rb +262 -104
  165. data/lib/rdoc/store.rb +979 -0
  166. data/lib/rdoc/task.rb +84 -44
  167. data/lib/rdoc/text.rb +117 -72
  168. data/lib/rdoc/token_stream.rb +73 -4
  169. data/lib/rdoc/tom_doc.rb +263 -0
  170. data/lib/rdoc/top_level.rb +111 -261
  171. data/lib/rdoc/version.rb +8 -0
  172. data/lib/rdoc.rb +127 -64
  173. data/man/ri.1 +247 -0
  174. data/rdoc.gemspec +249 -0
  175. metadata +171 -291
  176. data/.autotest +0 -16
  177. data/.document +0 -5
  178. data/History.txt +0 -594
  179. data/LICENSE.txt +0 -57
  180. data/Manifest.txt +0 -158
  181. data/README.txt +0 -45
  182. data/RI.txt +0 -58
  183. data/bin/ri +0 -5
  184. data/lib/rdoc/gauntlet.rb +0 -52
  185. data/lib/rdoc/generator/template/darkfish/classpage.rhtml +0 -296
  186. data/lib/rdoc/generator/template/darkfish/filepage.rhtml +0 -124
  187. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -32
  188. data/lib/rdoc/generator/template/darkfish/js/quicksearch.js +0 -114
  189. data/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js +0 -10
  190. data/lib/rdoc/generator/template/darkfish/rdoc.css +0 -706
  191. data/lib/rdoc/markup/formatter_test_case.rb +0 -689
  192. data/lib/rdoc/markup/inline.rb +0 -137
  193. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -116
  194. data/lib/rdoc/ruby_lex.rb +0 -1291
  195. data/lib/rdoc/ruby_token.rb +0 -416
  196. data/test/README +0 -1
  197. data/test/binary.dat +0 -0
  198. data/test/hidden.zip.txt +0 -1
  199. data/test/test.ja.rdoc +0 -10
  200. data/test/test.ja.txt +0 -8
  201. data/test/test.txt +0 -1
  202. data/test/test_attribute_manager.rb +0 -120
  203. data/test/test_rdoc_alias.rb +0 -13
  204. data/test/test_rdoc_any_method.rb +0 -126
  205. data/test/test_rdoc_attr.rb +0 -61
  206. data/test/test_rdoc_class_module.rb +0 -233
  207. data/test/test_rdoc_code_object.rb +0 -165
  208. data/test/test_rdoc_constant.rb +0 -15
  209. data/test/test_rdoc_context.rb +0 -370
  210. data/test/test_rdoc_encoding.rb +0 -166
  211. data/test/test_rdoc_generator_darkfish.rb +0 -119
  212. data/test/test_rdoc_generator_ri.rb +0 -76
  213. data/test/test_rdoc_include.rb +0 -96
  214. data/test/test_rdoc_markup.rb +0 -37
  215. data/test/test_rdoc_markup_attribute_manager.rb +0 -240
  216. data/test/test_rdoc_markup_document.rb +0 -51
  217. data/test/test_rdoc_markup_paragraph.rb +0 -9
  218. data/test/test_rdoc_markup_parser.rb +0 -1395
  219. data/test/test_rdoc_markup_pre_process.rb +0 -185
  220. data/test/test_rdoc_markup_raw.rb +0 -27
  221. data/test/test_rdoc_markup_to_ansi.rb +0 -328
  222. data/test/test_rdoc_markup_to_bs.rb +0 -341
  223. data/test/test_rdoc_markup_to_html.rb +0 -335
  224. data/test/test_rdoc_markup_to_html_crossref.rb +0 -169
  225. data/test/test_rdoc_markup_to_rdoc.rb +0 -327
  226. data/test/test_rdoc_method_attr.rb +0 -122
  227. data/test/test_rdoc_normal_class.rb +0 -17
  228. data/test/test_rdoc_normal_module.rb +0 -31
  229. data/test/test_rdoc_options.rb +0 -342
  230. data/test/test_rdoc_parser.rb +0 -83
  231. data/test/test_rdoc_parser_c.rb +0 -912
  232. data/test/test_rdoc_parser_ruby.rb +0 -1754
  233. data/test/test_rdoc_parser_simple.rb +0 -99
  234. data/test/test_rdoc_rdoc.rb +0 -164
  235. data/test/test_rdoc_require.rb +0 -25
  236. data/test/test_rdoc_ri_driver.rb +0 -846
  237. data/test/test_rdoc_ri_paths.rb +0 -43
  238. data/test/test_rdoc_ri_store.rb +0 -352
  239. data/test/test_rdoc_ruby_lex.rb +0 -23
  240. data/test/test_rdoc_stats.rb +0 -38
  241. data/test/test_rdoc_task.rb +0 -92
  242. data/test/test_rdoc_text.rb +0 -251
  243. data/test/test_rdoc_top_level.rb +0 -120
  244. data/test/xref_data.rb +0 -62
  245. data/test/xref_test_case.rb +0 -61
  246. data.tar.gz.sig +0 -3
  247. metadata.gz.sig +0 -0
@@ -1,1395 +0,0 @@
1
- # coding: utf-8
2
-
3
- require 'pp'
4
- require 'rubygems'
5
- require 'minitest/autorun'
6
- require 'rdoc/markup'
7
-
8
- class TestRDocMarkupParser < MiniTest::Unit::TestCase
9
-
10
- def setup
11
- @RM = RDoc::Markup
12
- @RMP = @RM::Parser
13
- end
14
-
15
- def mu_pp(obj)
16
- s = ''
17
- s = PP.pp obj, s
18
- s = s.force_encoding(Encoding.default_external) if defined? Encoding
19
- s.chomp
20
- end
21
-
22
- def test_build_heading
23
- parser = @RMP.new
24
-
25
- parser.tokens.replace [
26
- [:TEXT, 'heading three', 4, 0],
27
- [:NEWLINE, "\n", 17, 0],
28
- ]
29
-
30
- assert_equal @RM::Heading.new(3, 'heading three'), parser.build_heading(3)
31
- end
32
-
33
- def test_get
34
- parser = util_parser
35
-
36
- assert_equal [:HEADER, 1, 0, 0], parser.get
37
-
38
- assert_equal 7, parser.tokens.length
39
- end
40
-
41
- def test_parse_bullet
42
- str = <<-STR
43
- * l1
44
- * l2
45
- STR
46
-
47
- expected = [
48
- @RM::List.new(:BULLET, *[
49
- @RM::ListItem.new(nil,
50
- @RM::Paragraph.new('l1')),
51
- @RM::ListItem.new(nil,
52
- @RM::Paragraph.new('l2'))])]
53
-
54
- assert_equal expected, @RMP.parse(str).parts
55
- end
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
-
70
- def test_parse_bullet_verbatim_heading
71
- str = <<-STR
72
- * l1
73
- v
74
-
75
- = H
76
- STR
77
-
78
- expected = [
79
- @RM::List.new(:BULLET, *[
80
- @RM::ListItem.new(nil,
81
- @RM::Paragraph.new('l1'),
82
- @RM::Verbatim.new("v\n"))]),
83
- @RM::Heading.new(1, 'H')]
84
-
85
- assert_equal expected, @RMP.parse(str).parts
86
- end
87
-
88
- def test_parse_bullet_heading
89
- str = <<-STR
90
- * = l1
91
- STR
92
-
93
- expected = [
94
- @RM::List.new(:BULLET, *[
95
- @RM::ListItem.new(nil,
96
- @RM::Heading.new(1, 'l1'))])]
97
-
98
- assert_equal expected, @RMP.parse(str).parts
99
- end
100
-
101
- def test_parse_bullet_indent
102
- str = <<-STR
103
- * l1
104
- * l1.1
105
- * l2
106
- STR
107
-
108
- expected = [
109
- @RM::List.new(:BULLET, *[
110
- @RM::ListItem.new(nil,
111
- @RM::Paragraph.new('l1'),
112
- @RM::List.new(:BULLET, *[
113
- @RM::ListItem.new(nil,
114
- @RM::Paragraph.new('l1.1'))])),
115
- @RM::ListItem.new(nil,
116
- @RM::Paragraph.new('l2'))])]
117
-
118
- assert_equal expected, @RMP.parse(str).parts
119
- end
120
-
121
- def test_parse_bullet_paragraph
122
- str = <<-STR
123
- now is
124
- * l1
125
- * l2
126
- the time
127
- STR
128
-
129
- expected = [
130
- @RM::Paragraph.new('now is'),
131
- @RM::List.new(:BULLET, *[
132
- @RM::ListItem.new(nil,
133
- @RM::Paragraph.new('l1')),
134
- @RM::ListItem.new(nil,
135
- @RM::Paragraph.new('l2')),
136
- ]),
137
- @RM::Paragraph.new('the time'),
138
- ]
139
-
140
- assert_equal expected, @RMP.parse(str).parts
141
- end
142
-
143
- def test_parse_bullet_multiline
144
- str = <<-STR
145
- * l1
146
- l1+
147
- * l2
148
- STR
149
-
150
- expected = [
151
- @RM::List.new(:BULLET, *[
152
- @RM::ListItem.new(nil,
153
- @RM::Paragraph.new('l1', 'l1+')),
154
- @RM::ListItem.new(nil,
155
- @RM::Paragraph.new('l2')),
156
- ]),
157
- ]
158
-
159
- assert_equal expected, @RMP.parse(str).parts
160
- end
161
-
162
- def test_parse_bullet_multiparagraph
163
- str = <<-STR
164
- * l1
165
-
166
- l1+
167
- STR
168
-
169
- expected = [
170
- @RM::List.new(:BULLET, *[
171
- @RM::ListItem.new(nil,
172
- @RM::Paragraph.new('l1'),
173
- @RM::BlankLine.new,
174
- @RM::Paragraph.new('l1+')),
175
- ]),
176
- ]
177
-
178
- assert_equal expected, @RMP.parse(str).parts
179
- end
180
-
181
- def test_parse_bullet_indent_verbatim
182
- str = <<-STR
183
- * l1
184
- * l1.1
185
- text
186
- code
187
- code
188
-
189
- text
190
- * l2
191
- STR
192
-
193
- expected = [
194
- @RM::List.new(:BULLET, *[
195
- @RM::ListItem.new(nil,
196
- @RM::Paragraph.new('l1'),
197
- @RM::List.new(:BULLET, *[
198
- @RM::ListItem.new(nil,
199
- @RM::Paragraph.new('l1.1', 'text'),
200
- @RM::Verbatim.new("code\n", " code\n"),
201
- @RM::Paragraph.new('text'))])),
202
- @RM::ListItem.new(nil,
203
- @RM::Paragraph.new('l2'))])]
204
-
205
- assert_equal expected, @RMP.parse(str).parts
206
- end
207
-
208
- def test_parse_dash
209
- str = <<-STR
210
- - one
211
- - two
212
- STR
213
-
214
- expected = [
215
- @RM::List.new(:BULLET, *[
216
- @RM::ListItem.new(nil,
217
- @RM::Paragraph.new('one')),
218
- @RM::ListItem.new(nil,
219
- @RM::Paragraph.new('two'))])]
220
-
221
- assert_equal expected, @RMP.parse(str).parts
222
- end
223
-
224
- def test_parse_heading
225
- str = '= heading one'
226
-
227
- expected = [
228
- @RM::Heading.new(1, 'heading one')]
229
-
230
- assert_equal expected, @RMP.parse(str).parts
231
- end
232
-
233
- def test_parse_heading_three
234
- str = '=== heading three'
235
-
236
- expected = [
237
- @RM::Heading.new(3, 'heading three')]
238
-
239
- assert_equal expected, @RMP.parse(str).parts
240
- end
241
-
242
- def test_parse_heading_bullet
243
- str = '= * heading one'
244
-
245
- expected = [
246
- @RM::Heading.new(1, '* heading one')]
247
-
248
- assert_equal expected, @RMP.parse(str).parts
249
- end
250
-
251
- def test_parse_heading_heading
252
- str = '= ='
253
-
254
- expected = [
255
- @RM::Heading.new(1, '=')]
256
-
257
- assert_equal expected, @RMP.parse(str).parts
258
- end
259
-
260
- def test_parse_heading_lalpha
261
- str = '= b. heading one'
262
-
263
- expected = [
264
- @RM::Heading.new(1, 'b. heading one')]
265
-
266
- assert_equal expected, @RMP.parse(str).parts
267
- end
268
-
269
- def test_parse_heading_label
270
- str = '= [heading one]'
271
-
272
- expected = [
273
- @RM::Heading.new(1, '[heading one]')]
274
-
275
- assert_equal expected, @RMP.parse(str).parts
276
- end
277
-
278
- def test_parse_heading_note
279
- str = '= heading one::'
280
-
281
- expected = [
282
- @RM::Heading.new(1, 'heading one::')]
283
-
284
- assert_equal expected, @RMP.parse(str).parts
285
- end
286
-
287
- def test_parse_heading_number
288
- str = '= 5. heading one'
289
-
290
- expected = [
291
- @RM::Heading.new(1, '5. heading one')]
292
-
293
- assert_equal expected, @RMP.parse(str).parts
294
- end
295
-
296
- def test_parse_heading_ualpha
297
- str = '= B. heading one'
298
-
299
- expected = [
300
- @RM::Heading.new(1, 'B. heading one')]
301
-
302
- assert_equal expected, @RMP.parse(str).parts
303
- end
304
-
305
- def test_parse_label
306
- str = <<-STR
307
- [one] item one
308
- [two] item two
309
- STR
310
-
311
- expected = [
312
- @RM::List.new(:LABEL, *[
313
- @RM::ListItem.new('one',
314
- @RM::Paragraph.new('item one')),
315
- @RM::ListItem.new('two',
316
- @RM::Paragraph.new('item two'))])]
317
-
318
- assert_equal expected, @RMP.parse(str).parts
319
- end
320
-
321
- def test_parse_label_bullet
322
- str = <<-STR
323
- [cat] l1
324
- * l1.1
325
- [dog] l2
326
- STR
327
-
328
- expected = [
329
- @RM::List.new(:LABEL, *[
330
- @RM::ListItem.new('cat',
331
- @RM::Paragraph.new('l1'),
332
- @RM::List.new(:BULLET, *[
333
- @RM::ListItem.new(nil,
334
- @RM::Paragraph.new('l1.1'))])),
335
- @RM::ListItem.new('dog',
336
- @RM::Paragraph.new('l2'))])]
337
-
338
- assert_equal expected, @RMP.parse(str).parts
339
- end
340
-
341
- def test_parse_label_multiline
342
- str = <<-STR
343
- [cat] l1
344
- continuation
345
- [dog] l2
346
- STR
347
-
348
- expected = [
349
- @RM::List.new(:LABEL, *[
350
- @RM::ListItem.new('cat',
351
- @RM::Paragraph.new('l1', 'continuation')),
352
- @RM::ListItem.new('dog',
353
- @RM::Paragraph.new('l2'))])]
354
-
355
- assert_equal expected, @RMP.parse(str).parts
356
- end
357
-
358
- def test_parse_label_newline
359
- str = <<-STR
360
- [one]
361
- item one
362
- [two]
363
- item two
364
- STR
365
-
366
- expected = [
367
- @RM::List.new(:LABEL, *[
368
- @RM::ListItem.new('one',
369
- @RM::Paragraph.new('item one')),
370
- @RM::ListItem.new('two',
371
- @RM::Paragraph.new('item two')),
372
- ])]
373
-
374
- assert_equal expected, @RMP.parse(str).parts
375
- end
376
-
377
- def test_parse_lalpha
378
- str = <<-STR
379
- a. l1
380
- b. l2
381
- STR
382
-
383
- expected = [
384
- @RM::List.new(:LALPHA, *[
385
- @RM::ListItem.new(nil,
386
- @RM::Paragraph.new('l1')),
387
- @RM::ListItem.new(nil,
388
- @RM::Paragraph.new('l2'))])]
389
-
390
- assert_equal expected, @RMP.parse(str).parts
391
- end
392
-
393
- def test_parse_lalpha_ualpha
394
- str = <<-STR
395
- a. l1
396
- b. l2
397
- A. l3
398
- A. l4
399
- STR
400
-
401
- expected = [
402
- @RM::List.new(:LALPHA, *[
403
- @RM::ListItem.new(nil,
404
- @RM::Paragraph.new('l1')),
405
- @RM::ListItem.new(nil,
406
- @RM::Paragraph.new('l2'))]),
407
- @RM::List.new(:UALPHA, *[
408
- @RM::ListItem.new(nil,
409
- @RM::Paragraph.new('l3')),
410
- @RM::ListItem.new(nil,
411
- @RM::Paragraph.new('l4'))])]
412
-
413
- assert_equal expected, @RMP.parse(str).parts
414
- end
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
-
478
- def test_parse_list_verbatim
479
- str = <<-STR
480
- * one
481
- verb1
482
- verb2
483
- * two
484
- STR
485
-
486
- expected = [
487
- @RM::List.new(:BULLET, *[
488
- @RM::ListItem.new(nil,
489
- @RM::Paragraph.new('one'),
490
- @RM::Verbatim.new("verb1\n", "verb2\n")),
491
- @RM::ListItem.new(nil,
492
- @RM::Paragraph.new('two'))])]
493
-
494
- assert_equal expected, @RMP.parse(str).parts
495
- end
496
-
497
- def test_parse_lists
498
- str = <<-STR
499
- now is
500
- * l1
501
- 1. n1
502
- 2. n2
503
- * l2
504
- the time
505
- STR
506
-
507
- expected = [
508
- @RM::Paragraph.new('now is'),
509
- @RM::List.new(:BULLET, *[
510
- @RM::ListItem.new(nil,
511
- @RM::Paragraph.new('l1'))]),
512
- @RM::List.new(:NUMBER, *[
513
- @RM::ListItem.new(nil,
514
- @RM::Paragraph.new('n1')),
515
- @RM::ListItem.new(nil,
516
- @RM::Paragraph.new('n2'))]),
517
- @RM::List.new(:BULLET, *[
518
- @RM::ListItem.new(nil,
519
- @RM::Paragraph.new('l2'))]),
520
- @RM::Paragraph.new('the time')]
521
-
522
- assert_equal expected, @RMP.parse(str).parts
523
- end
524
-
525
- def test_parse_note
526
- str = <<-STR
527
- one:: item one
528
- two:: item two
529
- STR
530
-
531
- expected = [
532
- @RM::List.new(:NOTE, *[
533
- @RM::ListItem.new('one',
534
- @RM::Paragraph.new('item one')),
535
- @RM::ListItem.new('two',
536
- @RM::Paragraph.new('item two'))])]
537
-
538
- assert_equal expected, @RMP.parse(str).parts
539
- end
540
-
541
- def test_parse_note_empty
542
- str = <<-STR
543
- one::
544
- two::
545
- STR
546
-
547
- expected = [
548
- @RM::List.new(:NOTE, *[
549
- @RM::ListItem.new('one',
550
- @RM::BlankLine.new),
551
- @RM::ListItem.new('two',
552
- @RM::BlankLine.new)])]
553
-
554
- assert_equal expected, @RMP.parse(str).parts
555
- end
556
-
557
- def test_parse_note_note
558
- str = <<-STR
559
- one:: two::
560
- STR
561
-
562
- expected = [
563
- @RM::List.new(:NOTE, *[
564
- @RM::ListItem.new('one',
565
- @RM::List.new(:NOTE, *[
566
- @RM::ListItem.new('two',
567
- @RM::BlankLine.new)]))])]
568
-
569
- assert_equal expected, @RMP.parse(str).parts
570
- end
571
-
572
- def test_parse_number_bullet
573
- str = <<-STR
574
- 1. l1
575
- * l1.1
576
- 2. l2
577
- STR
578
-
579
- expected = [
580
- @RM::List.new(:NUMBER, *[
581
- @RM::ListItem.new(nil,
582
- @RM::Paragraph.new('l1'),
583
- @RM::List.new(:BULLET, *[
584
- @RM::ListItem.new(nil,
585
- @RM::Paragraph.new('l1.1'))])),
586
- @RM::ListItem.new(nil,
587
- @RM::Paragraph.new('l2'))])]
588
-
589
- assert_equal expected, @RMP.parse(str).parts
590
- end
591
-
592
- def test_parse_paragraph
593
- str = <<-STR
594
- now is the time
595
-
596
- for all good men
597
- STR
598
-
599
- expected = [
600
- @RM::Paragraph.new('now is the time'),
601
- @RM::BlankLine.new,
602
- @RM::Paragraph.new('for all good men')]
603
- assert_equal expected, @RMP.parse(str).parts
604
- end
605
-
606
- def test_parse_paragraph_multiline
607
- str = "now is the time\nfor all good men"
608
-
609
- expected = @RM::Paragraph.new 'now is the time for all good men'
610
- assert_equal [expected], @RMP.parse(str).parts
611
- end
612
-
613
- def test_parse_paragraph_verbatim
614
- str = <<-STR
615
- now is the time
616
- code _line_ here
617
- for all good men
618
- STR
619
-
620
- expected = [
621
- @RM::Paragraph.new('now is the time'),
622
- @RM::Verbatim.new("code _line_ here\n"),
623
- @RM::Paragraph.new('for all good men'),
624
- ]
625
- assert_equal expected, @RMP.parse(str).parts
626
- end
627
-
628
- def test_parse_ualpha
629
- str = <<-STR
630
- A. l1
631
- B. l2
632
- STR
633
-
634
- expected = [
635
- @RM::List.new(:UALPHA, *[
636
- @RM::ListItem.new(nil,
637
- @RM::Paragraph.new('l1')),
638
- @RM::ListItem.new(nil,
639
- @RM::Paragraph.new('l2'))])]
640
-
641
- assert_equal expected, @RMP.parse(str).parts
642
- end
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
-
650
- def test_parse_verbatim
651
- str = <<-STR
652
- now is
653
- code
654
- the time
655
- STR
656
-
657
- expected = [
658
- @RM::Paragraph.new('now is'),
659
- @RM::Verbatim.new("code\n"),
660
- @RM::Paragraph.new('the time'),
661
- ]
662
-
663
- assert_equal expected, @RMP.parse(str).parts
664
- end
665
-
666
- def test_parse_verbatim_bullet
667
- str = <<-STR
668
- * blah
669
- STR
670
-
671
- expected = [
672
- @RM::Verbatim.new("* blah\n")]
673
-
674
- assert_equal expected, @RMP.parse(str).parts
675
- end
676
-
677
- def test_parse_verbatim_dash
678
- str = <<-STR
679
- - blah
680
- STR
681
-
682
- expected = [
683
- @RM::Verbatim.new("- blah\n")]
684
-
685
- assert_equal expected, @RMP.parse(str).parts
686
- end
687
-
688
- def test_parse_verbatim_fold
689
- str = <<-STR
690
- now is
691
- code
692
-
693
-
694
- code1
695
-
696
- the time
697
- STR
698
-
699
- expected = [
700
- @RM::Paragraph.new('now is'),
701
- @RM::Verbatim.new("code\n", "\n", "code1\n"),
702
- @RM::Paragraph.new('the time'),
703
- ]
704
-
705
- assert_equal expected, @RMP.parse(str).parts
706
- end
707
-
708
- def test_parse_verbatim_heading
709
- str = <<-STR
710
- text
711
- === heading three
712
- STR
713
-
714
- expected = [
715
- @RM::Paragraph.new('text'),
716
- @RM::Verbatim.new("=== heading three\n")]
717
-
718
- assert_equal expected, @RMP.parse(str).parts
719
- end
720
-
721
- def test_parse_verbatim_heading2
722
- str = "text\n code\n=== heading three"
723
-
724
- expected = [
725
- @RM::Paragraph.new('text'),
726
- @RM::Verbatim.new("code\n"),
727
- @RM::Heading.new(3, 'heading three')]
728
-
729
- assert_equal expected, @RMP.parse(str).parts
730
- end
731
-
732
- def test_parse_verbatim_label
733
- str = <<-STR
734
- [blah] blah
735
- STR
736
-
737
- expected = [
738
- @RM::Verbatim.new("[blah] blah\n")]
739
-
740
- assert_equal expected, @RMP.parse(str).parts
741
- end
742
-
743
- def test_parse_verbatim_lalpha
744
- str = <<-STR
745
- b. blah
746
- STR
747
-
748
- expected = [
749
- @RM::Verbatim.new("b. blah\n")]
750
-
751
- assert_equal expected, @RMP.parse(str).parts
752
- end
753
-
754
- def test_parse_verbatim_markup_example
755
- str = <<-STR
756
- text
757
- code
758
- === heading three
759
- STR
760
-
761
- expected = [
762
- @RM::Paragraph.new('text'),
763
- @RM::Verbatim.new("code\n", "=== heading three\n")]
764
-
765
- assert_equal expected, @RMP.parse(str).parts
766
- end
767
-
768
- def test_parse_verbatim_merge
769
- str = <<-STR
770
- now is
771
- code
772
-
773
- code1
774
- the time
775
- STR
776
-
777
- expected = [
778
- @RM::Paragraph.new('now is'),
779
- @RM::Verbatim.new("code\n", "\n", "code1\n"),
780
- @RM::Paragraph.new('the time'),
781
- ]
782
-
783
- assert_equal expected, @RMP.parse(str).parts
784
- end
785
-
786
- def test_parse_verbatim_merge2
787
- str = <<-STR
788
- now is
789
- code
790
-
791
- code1
792
-
793
- code2
794
- the time
795
- STR
796
-
797
- expected = [
798
- @RM::Paragraph.new('now is'),
799
- @RM::Verbatim.new("code\n", "\n", "code1\n", "\n", "code2\n"),
800
- @RM::Paragraph.new('the time'),
801
- ]
802
-
803
- assert_equal expected, @RMP.parse(str).parts
804
- end
805
-
806
- def test_parse_verbatim_multiline
807
- str = <<-STR
808
- now is
809
- code
810
- code1
811
- the time
812
- STR
813
-
814
- expected = [
815
- @RM::Paragraph.new('now is'),
816
- @RM::Verbatim.new("code\n", "code1\n"),
817
- @RM::Paragraph.new('the time'),
818
- ]
819
-
820
- assert_equal expected, @RMP.parse(str).parts
821
- end
822
-
823
- def test_parse_verbatim_multilevel
824
- str = <<-STR
825
- now is the time
826
- code
827
- more code
828
- for all good men
829
- STR
830
-
831
- expected = [
832
- @RM::Paragraph.new('now is the time'),
833
- @RM::Verbatim.new(" code\n",
834
- "more code\n"),
835
- @RM::Paragraph.new('for all good men'),
836
- ]
837
-
838
- assert_equal expected, @RMP.parse(str).parts
839
- end
840
-
841
- def test_parse_verbatim_note
842
- str = <<-STR
843
- blah:: blah
844
- STR
845
-
846
- expected = [
847
- @RM::Verbatim.new("blah:: blah\n")]
848
-
849
- assert_equal expected, @RMP.parse(str).parts
850
- end
851
-
852
- def test_parse_verbatim_number
853
- str = <<-STR
854
- 2. blah
855
- STR
856
-
857
- expected = [
858
- @RM::Verbatim.new("2. blah\n")]
859
-
860
- assert_equal expected, @RMP.parse(str).parts
861
- end
862
-
863
- def test_parse_verbatim_rule
864
- str = <<-STR
865
- text
866
-
867
- --- lib/blah.rb.orig
868
- +++ lib/blah.rb
869
- STR
870
-
871
- expected = [
872
- @RM::Paragraph.new('text'),
873
- @RM::BlankLine.new,
874
- @RM::Verbatim.new("--- lib/blah.rb.orig\n",
875
- "+++ lib/blah.rb\n")]
876
-
877
- assert_equal expected, @RMP.parse(str).parts
878
- end
879
-
880
- def test_parse_verbatim_rule2
881
- str = <<-STR.chomp
882
- text
883
-
884
- ---
885
- STR
886
-
887
- expected = [
888
- @RM::Paragraph.new('text'),
889
- @RM::BlankLine.new,
890
- @RM::Verbatim.new("---")]
891
-
892
- assert_equal expected, @RMP.parse(str).parts
893
- end
894
-
895
- def test_parse_verbatim_trim
896
- str = <<-STR
897
- now is
898
- code
899
-
900
- code1
901
-
902
- the time
903
- STR
904
-
905
- expected = [
906
- @RM::Paragraph.new('now is'),
907
- @RM::Verbatim.new("code\n",
908
- "\n",
909
- "code1\n"),
910
- @RM::Paragraph.new('the time'),
911
- ]
912
-
913
- assert_equal expected, @RMP.parse(str).parts
914
- end
915
-
916
- def test_parse_verbatim_ualpha
917
- str = <<-STR
918
- B. blah
919
- STR
920
-
921
- expected = [
922
- @RM::Verbatim.new("B. blah\n")]
923
-
924
- assert_equal expected, @RMP.parse(str).parts
925
- end
926
-
927
- def test_parse_whitespace
928
- expected = [
929
- @RM::Paragraph.new('hello'),
930
- ]
931
-
932
- assert_equal expected, @RMP.parse('hello').parts
933
-
934
- expected = [
935
- @RM::Verbatim.new('hello '),
936
- ]
937
-
938
- assert_equal expected, @RMP.parse(' hello ').parts
939
-
940
- expected = [
941
- @RM::Verbatim.new('hello '),
942
- ]
943
-
944
- assert_equal expected, @RMP.parse(' hello ').parts
945
-
946
- expected = [
947
- @RM::Paragraph.new('1'),
948
- @RM::Verbatim.new("2\n", ' 3'),
949
- ]
950
-
951
- assert_equal expected, @RMP.parse("1\n 2\n 3").parts
952
-
953
- expected = [
954
- @RM::Verbatim.new("1\n",
955
- " 2\n",
956
- " 3"),
957
- ]
958
-
959
- assert_equal expected, @RMP.parse(" 1\n 2\n 3").parts
960
-
961
- expected = [
962
- @RM::Paragraph.new('1'),
963
- @RM::Verbatim.new("2\n",
964
- " 3\n"),
965
- @RM::Paragraph.new('1'),
966
- @RM::Verbatim.new('2'),
967
- ]
968
-
969
- assert_equal expected, @RMP.parse("1\n 2\n 3\n1\n 2").parts
970
-
971
- expected = [
972
- @RM::Verbatim.new("1\n",
973
- " 2\n",
974
- " 3\n",
975
- "1\n",
976
- ' 2'),
977
- ]
978
-
979
- assert_equal expected, @RMP.parse(" 1\n 2\n 3\n 1\n 2").parts
980
-
981
- expected = [
982
- @RM::Verbatim.new("1\n",
983
- " 2\n",
984
- "\n",
985
- ' 3'),
986
- ]
987
-
988
- assert_equal expected, @RMP.parse(" 1\n 2\n\n 3").parts
989
- end
990
-
991
- def test_peek_token
992
- parser = util_parser
993
-
994
- assert_equal [:HEADER, 1, 0, 0], parser.peek_token
995
-
996
- assert_equal 8, parser.tokens.length
997
- end
998
-
999
- def test_skip
1000
- parser = util_parser
1001
-
1002
- assert_equal [:HEADER, 1, 0, 0], parser.skip(:HEADER)
1003
-
1004
- assert_equal [:TEXT, 'Heading', 2, 0], parser.get
1005
-
1006
- assert_equal [:NEWLINE, "\n", 9, 0], parser.peek_token
1007
-
1008
- assert_raises RDoc::Markup::Parser::ParseError do
1009
- parser.skip :NONE
1010
- end
1011
-
1012
- assert_equal [:NEWLINE, "\n", 9, 0], parser.peek_token
1013
-
1014
- assert_equal nil, parser.skip(:NONE, false)
1015
-
1016
- assert_equal [:NEWLINE, "\n", 9, 0], parser.peek_token
1017
- end
1018
-
1019
- def test_tokenize_bullet
1020
- str = <<-STR
1021
- * l1
1022
- STR
1023
-
1024
- expected = [
1025
- [:BULLET, '*', 0, 0],
1026
- [:TEXT, 'l1', 2, 0],
1027
- [:NEWLINE, "\n", 4, 0],
1028
- ]
1029
-
1030
- assert_equal expected, @RMP.tokenize(str)
1031
- end
1032
-
1033
- def test_tokenize_bullet_indent
1034
- str = <<-STR
1035
- * l1
1036
- * l1.1
1037
- STR
1038
-
1039
- expected = [
1040
- [:BULLET, '*', 0, 0],
1041
- [:TEXT, 'l1', 2, 0],
1042
- [:NEWLINE, "\n", 4, 0],
1043
- [:BULLET, '*', 2, 1],
1044
- [:TEXT, 'l1.1', 4, 1],
1045
- [:NEWLINE, "\n", 8, 1],
1046
- ]
1047
-
1048
- assert_equal expected, @RMP.tokenize(str)
1049
- end
1050
-
1051
- def test_tokenize_heading
1052
- str = <<-STR
1053
- = Heading
1054
- == Heading 2
1055
- STR
1056
-
1057
- expected = [
1058
- [:HEADER, 1, 0, 0],
1059
- [:TEXT, 'Heading', 2, 0],
1060
- [:NEWLINE, "\n", 9, 0],
1061
- [:HEADER, 2, 0, 1],
1062
- [:TEXT, 'Heading 2', 3, 1],
1063
- [:NEWLINE, "\n", 12, 1],
1064
- ]
1065
-
1066
- assert_equal expected, @RMP.tokenize(str)
1067
- end
1068
-
1069
- def test_tokenize_heading_heading
1070
- str = <<-STR
1071
- = =
1072
- STR
1073
-
1074
- expected = [
1075
- [:HEADER, 1, 0, 0],
1076
- [:TEXT, '=', 2, 0],
1077
- [:NEWLINE, "\n", 3, 0],
1078
- ]
1079
-
1080
- assert_equal expected, @RMP.tokenize(str)
1081
- end
1082
-
1083
- def test_tokenize_heading_no_space
1084
- str = <<-STR
1085
- =Heading
1086
- ==Heading 2
1087
- STR
1088
-
1089
- expected = [
1090
- [:HEADER, 1, 0, 0],
1091
- [:TEXT, 'Heading', 1, 0],
1092
- [:NEWLINE, "\n", 8, 0],
1093
- [:HEADER, 2, 0, 1],
1094
- [:TEXT, 'Heading 2', 2, 1],
1095
- [:NEWLINE, "\n", 11, 1],
1096
- ]
1097
-
1098
- assert_equal expected, @RMP.tokenize(str)
1099
- end
1100
-
1101
- def test_tokenize_label
1102
- str = <<-STR
1103
- [cat] l1
1104
- [dog] l1.1
1105
- STR
1106
-
1107
- expected = [
1108
- [:LABEL, 'cat', 0, 0],
1109
- [:TEXT, 'l1', 6, 0],
1110
- [:NEWLINE, "\n", 8, 0],
1111
- [:LABEL, 'dog', 0, 1],
1112
- [:TEXT, 'l1.1', 6, 1],
1113
- [:NEWLINE, "\n", 10, 1],
1114
- ]
1115
-
1116
- assert_equal expected, @RMP.tokenize(str)
1117
- end
1118
-
1119
- def test_tokenize_label_note
1120
- str = <<-STR
1121
- [label]
1122
- note::
1123
- STR
1124
-
1125
- expected = [
1126
- [:LABEL, 'label', 0, 0],
1127
- [:NEWLINE, "\n", 7, 0],
1128
- [:NOTE, 'note', 2, 1],
1129
- [:NEWLINE, "\n", 8, 1],
1130
- ]
1131
-
1132
- assert_equal expected, @RMP.tokenize(str)
1133
- end
1134
-
1135
- def test_tokenize_lalpha
1136
- str = <<-STR
1137
- a. l1
1138
- b. l1.1
1139
- STR
1140
-
1141
- expected = [
1142
- [:LALPHA, 'a', 0, 0],
1143
- [:TEXT, 'l1', 3, 0],
1144
- [:NEWLINE, "\n", 5, 0],
1145
- [:LALPHA, 'b', 0, 1],
1146
- [:TEXT, 'l1.1', 3, 1],
1147
- [:NEWLINE, "\n", 7, 1],
1148
- ]
1149
-
1150
- assert_equal expected, @RMP.tokenize(str)
1151
- end
1152
-
1153
- def test_tokenize_note
1154
- str = <<-STR
1155
- cat:: l1
1156
- dog:: l1.1
1157
- STR
1158
-
1159
- expected = [
1160
- [:NOTE, 'cat', 0, 0],
1161
- [:TEXT, 'l1', 6, 0],
1162
- [:NEWLINE, "\n", 8, 0],
1163
- [:NOTE, 'dog', 0, 1],
1164
- [:TEXT, 'l1.1', 6, 1],
1165
- [:NEWLINE, "\n", 10, 1],
1166
- ]
1167
-
1168
- assert_equal expected, @RMP.tokenize(str)
1169
- end
1170
-
1171
- def test_tokenize_note_empty
1172
- str = <<-STR
1173
- cat::
1174
- dog::
1175
- STR
1176
-
1177
- expected = [
1178
- [:NOTE, 'cat', 0, 0],
1179
- [:NEWLINE, "\n", 5, 0],
1180
- [:NOTE, 'dog', 0, 1],
1181
- [:NEWLINE, "\n", 5, 1],
1182
- ]
1183
-
1184
- assert_equal expected, @RMP.tokenize(str)
1185
- end
1186
-
1187
- def test_tokenize_note_not
1188
- str = <<-STR
1189
- Cat::Dog
1190
- STR
1191
-
1192
- expected = [
1193
- [:TEXT, 'Cat::Dog', 0, 0],
1194
- [:NEWLINE, "\n", 8, 0],
1195
- ]
1196
-
1197
- assert_equal expected, @RMP.tokenize(str)
1198
- end
1199
-
1200
- def test_tokenize_number
1201
- str = <<-STR
1202
- 1. l1
1203
- 2. l1.1
1204
- STR
1205
-
1206
- expected = [
1207
- [:NUMBER, '1', 0, 0],
1208
- [:TEXT, 'l1', 3, 0],
1209
- [:NEWLINE, "\n", 5, 0],
1210
- [:NUMBER, '2', 0, 1],
1211
- [:TEXT, 'l1.1', 3, 1],
1212
- [:NEWLINE, "\n", 7, 1],
1213
- ]
1214
-
1215
- assert_equal expected, @RMP.tokenize(str)
1216
- end
1217
-
1218
- def test_tokenize_number_period
1219
- str = <<-STR
1220
- 1. blah blah blah
1221
- l.
1222
- 2. blah blah blah blah
1223
- d.
1224
- STR
1225
-
1226
- expected = [
1227
- [:NUMBER, "1", 0, 0],
1228
- [:TEXT, "blah blah blah", 3, 0],
1229
- [:NEWLINE, "\n", 17, 0],
1230
-
1231
- [:TEXT, "l.", 3, 1],
1232
- [:NEWLINE, "\n", 5, 1],
1233
-
1234
- [:NUMBER, "2", 0, 2],
1235
- [:TEXT, "blah blah blah blah", 3, 2],
1236
- [:NEWLINE, "\n", 22, 2],
1237
-
1238
- [:TEXT, "d.", 3, 3],
1239
- [:NEWLINE, "\n", 5, 3]
1240
- ]
1241
-
1242
- assert_equal expected, @RMP.tokenize(str)
1243
- end
1244
-
1245
- def test_tokenize_number_period_continue
1246
- str = <<-STR
1247
- 1. blah blah blah
1248
- l. more stuff
1249
- 2. blah blah blah blah
1250
- d. other stuff
1251
- STR
1252
-
1253
- expected = [
1254
- [:NUMBER, "1", 0, 0],
1255
- [:TEXT, "blah blah blah", 3, 0],
1256
- [:NEWLINE, "\n", 17, 0],
1257
-
1258
- [:LALPHA, "l", 3, 1],
1259
- [:TEXT, "more stuff", 7, 1],
1260
- [:NEWLINE, "\n", 17, 1],
1261
-
1262
- [:NUMBER, "2", 0, 2],
1263
- [:TEXT, "blah blah blah blah", 3, 2],
1264
- [:NEWLINE, "\n", 22, 2],
1265
-
1266
- [:LALPHA, "d", 3, 3],
1267
- [:TEXT, "other stuff", 6, 3],
1268
- [:NEWLINE, "\n", 17, 3]
1269
- ]
1270
-
1271
- assert_equal expected, @RMP.tokenize(str)
1272
- end
1273
-
1274
- def test_tokenize_paragraphs
1275
- str = <<-STR
1276
- now is
1277
- the time
1278
-
1279
- for all
1280
- STR
1281
-
1282
- expected = [
1283
- [:TEXT, 'now is', 0, 0],
1284
- [:NEWLINE, "\n", 6, 0],
1285
- [:TEXT, 'the time', 0, 1],
1286
- [:NEWLINE, "\n", 8, 1],
1287
- [:NEWLINE, "\n", 0, 2],
1288
- [:TEXT, 'for all', 0, 3],
1289
- [:NEWLINE, "\n", 7, 3],
1290
- ]
1291
-
1292
- assert_equal expected, @RMP.tokenize(str)
1293
- end
1294
-
1295
- def test_tokenize_rule
1296
- str = <<-STR
1297
- ---
1298
-
1299
- --- blah ---
1300
- STR
1301
-
1302
- expected = [
1303
- [:RULE, 1, 0, 0],
1304
- [:NEWLINE, "\n", 3, 0],
1305
- [:NEWLINE, "\n", 0, 1],
1306
- [:TEXT, "--- blah ---", 0, 2],
1307
- [:NEWLINE, "\n", 12, 2],
1308
- ]
1309
-
1310
- assert_equal expected, @RMP.tokenize(str)
1311
- end
1312
-
1313
- def test_tokenize_ualpha
1314
- str = <<-STR
1315
- A. l1
1316
- B. l1.1
1317
- STR
1318
-
1319
- expected = [
1320
- [:UALPHA, 'A', 0, 0],
1321
- [:TEXT, 'l1', 3, 0],
1322
- [:NEWLINE, "\n", 5, 0],
1323
- [:UALPHA, 'B', 0, 1],
1324
- [:TEXT, 'l1.1', 3, 1],
1325
- [:NEWLINE, "\n", 7, 1],
1326
- ]
1327
-
1328
- assert_equal expected, @RMP.tokenize(str)
1329
- end
1330
-
1331
- def test_tokenize_verbatim_heading
1332
- str = <<-STR
1333
- Example heading:
1334
-
1335
- === heading three
1336
- STR
1337
-
1338
- expected = [
1339
- [:TEXT, 'Example heading:', 0, 0],
1340
- [:NEWLINE, "\n", 16, 0],
1341
- [:NEWLINE, "\n", 0, 1],
1342
- [:HEADER, 3, 3, 2],
1343
- [:TEXT, 'heading three', 7, 2],
1344
- [:NEWLINE, "\n", 20, 2],
1345
- ]
1346
-
1347
- assert_equal expected, @RMP.tokenize(str)
1348
- end
1349
-
1350
- # HACK move to Verbatim test case
1351
- def test_verbatim_normalize
1352
- v = @RM::Verbatim.new "foo\n", "\n", "\n", "bar\n"
1353
-
1354
- v.normalize
1355
-
1356
- assert_equal ["foo\n", "\n", "bar\n"], v.parts
1357
-
1358
- v = @RM::Verbatim.new "foo\n", "\n"
1359
-
1360
- v.normalize
1361
-
1362
- assert_equal ["foo\n"], v.parts
1363
- end
1364
-
1365
- def test_unget
1366
- parser = util_parser
1367
-
1368
- parser.get
1369
-
1370
- parser.unget
1371
-
1372
- assert_equal [:HEADER, 1, 0, 0], parser.peek_token
1373
-
1374
- assert_raises @RMP::Error do
1375
- parser.unget
1376
- end
1377
-
1378
- assert_equal 8, parser.tokens.length
1379
- end
1380
-
1381
- def util_parser
1382
- str = <<-STR
1383
- = Heading
1384
-
1385
- Some text here
1386
- some more text over here
1387
- STR
1388
-
1389
- @parser = @RMP.new
1390
- @parser.tokenize str
1391
- @parser
1392
- end
1393
-
1394
- end
1395
-