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.
- checksums.yaml +7 -0
- data/CONTRIBUTING.rdoc +220 -0
- data/CVE-2013-0256.rdoc +49 -0
- data/ExampleMarkdown.md +37 -0
- data/ExampleRDoc.rdoc +208 -0
- data/Gemfile +12 -0
- data/History.rdoc +1666 -0
- data/LEGAL.rdoc +50 -0
- data/LICENSE.rdoc +57 -0
- data/README.rdoc +129 -0
- data/RI.rdoc +57 -0
- data/Rakefile +84 -81
- data/TODO.rdoc +59 -0
- data/bin/console +7 -0
- data/bin/setup +6 -0
- data/{bin → exe}/rdoc +11 -2
- data/exe/ri +12 -0
- data/lib/rdoc/alias.rb +1 -2
- data/lib/rdoc/anon_class.rb +3 -2
- data/lib/rdoc/any_method.rb +234 -40
- data/lib/rdoc/attr.rb +79 -11
- data/lib/rdoc/class_module.rb +443 -71
- data/lib/rdoc/code_object.rb +216 -20
- data/lib/rdoc/code_objects.rb +4 -21
- data/lib/rdoc/comment.rb +250 -0
- data/lib/rdoc/constant.rb +110 -9
- data/lib/rdoc/context/section.rb +232 -0
- data/lib/rdoc/context.rb +392 -172
- data/lib/rdoc/cross_reference.rb +202 -0
- data/lib/rdoc/encoding.rb +83 -28
- data/lib/rdoc/erb_partial.rb +19 -0
- data/lib/rdoc/erbio.rb +8 -3
- data/lib/rdoc/extend.rb +10 -0
- data/lib/rdoc/generator/darkfish.rb +507 -84
- data/lib/rdoc/generator/json_index.rb +300 -0
- data/lib/rdoc/generator/markup.rb +27 -74
- data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
- data/lib/rdoc/generator/pot/po.rb +84 -0
- data/lib/rdoc/generator/pot/po_entry.rb +141 -0
- data/lib/rdoc/generator/pot.rb +98 -0
- data/lib/rdoc/generator/ri.rb +8 -62
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +22 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +19 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +9 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +9 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +15 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +12 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +12 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +14 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/class.rhtml +172 -0
- data/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +639 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
- data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +18 -60
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -83
- data/lib/rdoc/generator/template/darkfish/js/search.js +110 -0
- data/lib/rdoc/generator/template/darkfish/page.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +18 -0
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +62 -0
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +58 -0
- data/lib/rdoc/generator/template/json_index/.document +1 -0
- data/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
- data/lib/rdoc/generator/template/json_index/js/searcher.js +229 -0
- data/lib/rdoc/generator.rb +24 -13
- data/lib/rdoc/ghost_method.rb +1 -2
- data/lib/rdoc/i18n/locale.rb +102 -0
- data/lib/rdoc/i18n/text.rb +126 -0
- data/lib/rdoc/i18n.rb +10 -0
- data/lib/rdoc/include.rb +5 -95
- data/lib/rdoc/known_classes.rb +5 -2
- data/lib/rdoc/markdown/entities.rb +2132 -0
- data/lib/rdoc/markdown/literals.kpeg +23 -0
- data/lib/rdoc/markdown/literals.rb +416 -0
- data/lib/rdoc/markdown.kpeg +1237 -0
- data/lib/rdoc/markdown.rb +16684 -0
- data/lib/rdoc/markup/attr_changer.rb +23 -0
- data/lib/rdoc/markup/attr_span.rb +36 -0
- data/lib/rdoc/markup/attribute_manager.rb +135 -62
- data/lib/rdoc/markup/attributes.rb +71 -0
- data/lib/rdoc/markup/blank_line.rb +1 -0
- data/lib/rdoc/markup/block_quote.rb +15 -0
- data/lib/rdoc/markup/document.rb +96 -9
- data/lib/rdoc/markup/formatter.rb +138 -25
- data/lib/rdoc/markup/hard_break.rb +32 -0
- data/lib/rdoc/markup/heading.rb +61 -2
- data/lib/rdoc/markup/include.rb +43 -0
- data/lib/rdoc/markup/indented_paragraph.rb +48 -0
- data/lib/rdoc/markup/list.rb +25 -4
- data/lib/rdoc/markup/list_item.rb +18 -4
- data/lib/rdoc/markup/paragraph.rb +15 -0
- data/lib/rdoc/markup/parser.rb +180 -88
- data/lib/rdoc/markup/pre_process.rb +183 -38
- data/lib/rdoc/markup/raw.rb +6 -5
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/rule.rb +1 -0
- data/lib/rdoc/markup/table.rb +47 -0
- data/lib/rdoc/markup/to_ansi.rb +17 -7
- data/lib/rdoc/markup/to_bs.rb +5 -8
- data/lib/rdoc/markup/to_html.rb +238 -137
- data/lib/rdoc/markup/to_html_crossref.rb +125 -152
- data/lib/rdoc/markup/to_html_snippet.rb +285 -0
- data/lib/rdoc/markup/to_joined_paragraph.rb +47 -0
- data/lib/rdoc/markup/to_label.rb +75 -0
- data/lib/rdoc/markup/to_markdown.rb +192 -0
- data/lib/rdoc/markup/to_rdoc.rb +85 -15
- data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
- data/lib/rdoc/markup/to_test.rb +2 -4
- data/lib/rdoc/markup/to_tt_only.rb +121 -0
- data/lib/rdoc/markup/verbatim.rb +39 -0
- data/lib/rdoc/markup.rb +388 -110
- data/lib/rdoc/meta_method.rb +1 -2
- data/lib/rdoc/method_attr.rb +87 -21
- data/lib/rdoc/mixin.rb +121 -0
- data/lib/rdoc/normal_class.rb +39 -10
- data/lib/rdoc/normal_module.rb +22 -7
- data/lib/rdoc/options.rb +613 -73
- data/lib/rdoc/parser/c.rb +621 -287
- data/lib/rdoc/parser/changelog.rb +335 -0
- data/lib/rdoc/parser/markdown.rb +24 -0
- data/lib/rdoc/parser/rd.rb +23 -0
- data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
- data/lib/rdoc/parser/ruby.rb +1368 -762
- data/lib/rdoc/parser/ruby_tools.rb +42 -35
- data/lib/rdoc/parser/simple.rb +23 -11
- data/lib/rdoc/parser/text.rb +12 -0
- data/lib/rdoc/parser.rb +162 -89
- data/lib/rdoc/rd/block_parser.rb +1056 -0
- data/lib/rdoc/rd/block_parser.ry +639 -0
- data/lib/rdoc/rd/inline.rb +72 -0
- data/lib/rdoc/rd/inline_parser.rb +1208 -0
- data/lib/rdoc/rd/inline_parser.ry +593 -0
- data/lib/rdoc/rd.rb +100 -0
- data/lib/rdoc/rdoc.rb +208 -115
- data/lib/rdoc/require.rb +1 -2
- data/lib/rdoc/ri/driver.rb +734 -239
- data/lib/rdoc/ri/formatter.rb +1 -0
- data/lib/rdoc/ri/paths.rb +91 -48
- data/lib/rdoc/ri/store.rb +3 -261
- data/lib/rdoc/ri/task.rb +71 -0
- data/lib/rdoc/ri.rb +5 -2
- data/lib/rdoc/rubygems_hook.rb +246 -0
- data/lib/rdoc/servlet.rb +451 -0
- data/lib/rdoc/single_class.rb +14 -2
- data/lib/rdoc/stats/normal.rb +19 -12
- data/lib/rdoc/stats/quiet.rb +1 -0
- data/lib/rdoc/stats/verbose.rb +1 -0
- data/lib/rdoc/stats.rb +262 -104
- data/lib/rdoc/store.rb +979 -0
- data/lib/rdoc/task.rb +84 -44
- data/lib/rdoc/text.rb +117 -72
- data/lib/rdoc/token_stream.rb +73 -4
- data/lib/rdoc/tom_doc.rb +263 -0
- data/lib/rdoc/top_level.rb +111 -261
- data/lib/rdoc/version.rb +8 -0
- data/lib/rdoc.rb +127 -64
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +249 -0
- metadata +171 -291
- data/.autotest +0 -16
- data/.document +0 -5
- data/History.txt +0 -594
- data/LICENSE.txt +0 -57
- data/Manifest.txt +0 -158
- data/README.txt +0 -45
- data/RI.txt +0 -58
- data/bin/ri +0 -5
- data/lib/rdoc/gauntlet.rb +0 -52
- data/lib/rdoc/generator/template/darkfish/classpage.rhtml +0 -296
- data/lib/rdoc/generator/template/darkfish/filepage.rhtml +0 -124
- data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -32
- data/lib/rdoc/generator/template/darkfish/js/quicksearch.js +0 -114
- data/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js +0 -10
- data/lib/rdoc/generator/template/darkfish/rdoc.css +0 -706
- data/lib/rdoc/markup/formatter_test_case.rb +0 -689
- data/lib/rdoc/markup/inline.rb +0 -137
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -116
- data/lib/rdoc/ruby_lex.rb +0 -1291
- data/lib/rdoc/ruby_token.rb +0 -416
- data/test/README +0 -1
- data/test/binary.dat +0 -0
- data/test/hidden.zip.txt +0 -1
- data/test/test.ja.rdoc +0 -10
- data/test/test.ja.txt +0 -8
- data/test/test.txt +0 -1
- data/test/test_attribute_manager.rb +0 -120
- data/test/test_rdoc_alias.rb +0 -13
- data/test/test_rdoc_any_method.rb +0 -126
- data/test/test_rdoc_attr.rb +0 -61
- data/test/test_rdoc_class_module.rb +0 -233
- data/test/test_rdoc_code_object.rb +0 -165
- data/test/test_rdoc_constant.rb +0 -15
- data/test/test_rdoc_context.rb +0 -370
- data/test/test_rdoc_encoding.rb +0 -166
- data/test/test_rdoc_generator_darkfish.rb +0 -119
- data/test/test_rdoc_generator_ri.rb +0 -76
- data/test/test_rdoc_include.rb +0 -96
- data/test/test_rdoc_markup.rb +0 -37
- data/test/test_rdoc_markup_attribute_manager.rb +0 -240
- data/test/test_rdoc_markup_document.rb +0 -51
- data/test/test_rdoc_markup_paragraph.rb +0 -9
- data/test/test_rdoc_markup_parser.rb +0 -1395
- data/test/test_rdoc_markup_pre_process.rb +0 -185
- data/test/test_rdoc_markup_raw.rb +0 -27
- data/test/test_rdoc_markup_to_ansi.rb +0 -328
- data/test/test_rdoc_markup_to_bs.rb +0 -341
- data/test/test_rdoc_markup_to_html.rb +0 -335
- data/test/test_rdoc_markup_to_html_crossref.rb +0 -169
- data/test/test_rdoc_markup_to_rdoc.rb +0 -327
- data/test/test_rdoc_method_attr.rb +0 -122
- data/test/test_rdoc_normal_class.rb +0 -17
- data/test/test_rdoc_normal_module.rb +0 -31
- data/test/test_rdoc_options.rb +0 -342
- data/test/test_rdoc_parser.rb +0 -83
- data/test/test_rdoc_parser_c.rb +0 -912
- data/test/test_rdoc_parser_ruby.rb +0 -1754
- data/test/test_rdoc_parser_simple.rb +0 -99
- data/test/test_rdoc_rdoc.rb +0 -164
- data/test/test_rdoc_require.rb +0 -25
- data/test/test_rdoc_ri_driver.rb +0 -846
- data/test/test_rdoc_ri_paths.rb +0 -43
- data/test/test_rdoc_ri_store.rb +0 -352
- data/test/test_rdoc_ruby_lex.rb +0 -23
- data/test/test_rdoc_stats.rb +0 -38
- data/test/test_rdoc_task.rb +0 -92
- data/test/test_rdoc_text.rb +0 -251
- data/test/test_rdoc_top_level.rb +0 -120
- data/test/xref_data.rb +0 -62
- data/test/xref_test_case.rb +0 -61
- data.tar.gz.sig +0 -3
- 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
|
-
|