rdoc 6.3.4.1 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +195 -0
- data/History.rdoc +65 -63
- data/LEGAL.rdoc +7 -1
- data/LICENSE.rdoc +6 -0
- data/README.md +236 -0
- data/RI.md +842 -0
- data/TODO.rdoc +8 -7
- data/doc/markup_reference/markdown.md +659 -0
- data/doc/markup_reference/rdoc.rdoc +1169 -0
- data/exe/rdoc +0 -1
- data/lib/rdoc/{alias.rb → code_object/alias.rb} +4 -18
- data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +50 -24
- data/lib/rdoc/{attr.rb → code_object/attr.rb} +16 -14
- data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +225 -58
- data/lib/rdoc/{constant.rb → code_object/constant.rb} +44 -10
- data/lib/rdoc/code_object/context/section.rb +182 -0
- data/lib/rdoc/{context.rb → code_object/context.rb} +78 -106
- data/lib/rdoc/{extend.rb → code_object/extend.rb} +0 -1
- data/lib/rdoc/{include.rb → code_object/include.rb} +0 -1
- data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +46 -48
- data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +6 -4
- data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +2 -3
- data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +2 -3
- data/lib/rdoc/{require.rb → code_object/require.rb} +1 -2
- data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +5 -1
- data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +60 -63
- data/lib/rdoc/code_object.rb +11 -39
- data/lib/rdoc/code_objects.rb +1 -2
- data/lib/rdoc/comment.rb +202 -99
- data/lib/rdoc/cross_reference.rb +75 -62
- data/lib/rdoc/encoding.rb +8 -24
- data/lib/rdoc/erb_partial.rb +1 -2
- data/lib/rdoc/erbio.rb +3 -8
- data/lib/rdoc/generator/aliki.rb +200 -0
- data/lib/rdoc/generator/darkfish.rb +156 -122
- data/lib/rdoc/generator/json_index.rb +8 -24
- data/lib/rdoc/generator/markup.rb +70 -34
- data/lib/rdoc/generator/pot/message_extractor.rb +7 -7
- data/lib/rdoc/generator/pot/po.rb +1 -1
- data/lib/rdoc/generator/pot/po_entry.rb +8 -8
- data/lib/rdoc/generator/pot.rb +1 -5
- data/lib/rdoc/generator/ri.rb +1 -2
- data/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
- data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +8 -0
- data/lib/rdoc/generator/template/aliki/_footer.rhtml +23 -0
- data/lib/rdoc/generator/template/aliki/_head.rhtml +163 -0
- data/lib/rdoc/generator/template/aliki/_header.rhtml +56 -0
- data/lib/rdoc/generator/template/aliki/_icons.rhtml +208 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_ancestors.rhtml +16 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_classes.rhtml +15 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +27 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +27 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +16 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_methods.rhtml +41 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +67 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +15 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +21 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +3 -0
- data/lib/rdoc/generator/template/aliki/class.rhtml +230 -0
- data/lib/rdoc/generator/template/aliki/css/rdoc.css +2181 -0
- data/lib/rdoc/generator/template/aliki/index.rhtml +22 -0
- data/lib/rdoc/generator/template/aliki/js/aliki.js +513 -0
- data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
- data/lib/rdoc/generator/template/aliki/js/c_highlighter.js +299 -0
- data/lib/rdoc/generator/template/aliki/js/search_controller.js +129 -0
- data/lib/rdoc/generator/template/aliki/js/search_navigation.js +105 -0
- data/lib/rdoc/generator/template/aliki/js/search_ranker.js +239 -0
- data/lib/rdoc/generator/template/aliki/js/theme-toggle.js +112 -0
- data/lib/rdoc/generator/template/aliki/page.rhtml +18 -0
- data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +14 -0
- data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +65 -0
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +3 -3
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +35 -14
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +11 -9
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +11 -9
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +7 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +20 -11
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +25 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +4 -9
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +2 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +28 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
- data/lib/rdoc/generator/template/darkfish/class.rhtml +138 -90
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +420 -358
- 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/index.rhtml +14 -12
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +59 -3
- data/lib/rdoc/generator/template/darkfish/js/search.js +15 -5
- data/lib/rdoc/generator/template/darkfish/page.rhtml +7 -6
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +12 -9
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +24 -21
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +35 -21
- data/lib/rdoc/generator/template/json_index/js/navigation.js +8 -8
- data/lib/rdoc/generator/template/json_index/js/searcher.js +48 -6
- data/lib/rdoc/generator.rb +6 -5
- data/lib/rdoc/i18n/text.rb +3 -3
- data/lib/rdoc/i18n.rb +1 -1
- data/lib/rdoc/known_classes.rb +5 -4
- data/lib/rdoc/markdown/entities.rb +0 -1
- data/lib/rdoc/markdown/literals.kpeg +0 -2
- data/lib/rdoc/markdown/literals.rb +0 -1
- data/lib/rdoc/markdown.kpeg +140 -62
- data/lib/rdoc/markdown.rb +1015 -873
- data/lib/rdoc/markup/blank_line.rb +25 -24
- data/lib/rdoc/markup/block_quote.rb +1 -2
- data/lib/rdoc/markup/document.rb +10 -11
- data/lib/rdoc/markup/element.rb +21 -0
- data/lib/rdoc/markup/formatter.rb +134 -115
- data/lib/rdoc/markup/hard_break.rb +30 -28
- data/lib/rdoc/markup/heading.rb +163 -72
- data/lib/rdoc/markup/include.rb +3 -4
- data/lib/rdoc/markup/indented_paragraph.rb +4 -5
- data/lib/rdoc/markup/inline_parser.rb +312 -0
- data/lib/rdoc/markup/list.rb +6 -7
- data/lib/rdoc/markup/list_item.rb +6 -7
- data/lib/rdoc/markup/paragraph.rb +2 -3
- data/lib/rdoc/markup/parser.rb +29 -19
- data/lib/rdoc/markup/pre_process.rb +39 -18
- data/lib/rdoc/markup/raw.rb +52 -56
- data/lib/rdoc/markup/rule.rb +2 -3
- data/lib/rdoc/markup/table.rb +49 -32
- data/lib/rdoc/markup/to_ansi.rb +58 -8
- data/lib/rdoc/markup/to_bs.rb +47 -38
- data/lib/rdoc/markup/to_html.rb +343 -105
- data/lib/rdoc/markup/to_html_crossref.rb +143 -58
- data/lib/rdoc/markup/to_html_snippet.rb +78 -76
- data/lib/rdoc/markup/to_joined_paragraph.rb +3 -9
- data/lib/rdoc/markup/to_label.rb +34 -25
- data/lib/rdoc/markup/to_markdown.rb +74 -51
- data/lib/rdoc/markup/to_rdoc.rb +141 -82
- data/lib/rdoc/markup/to_table_of_contents.rb +4 -5
- data/lib/rdoc/markup/to_test.rb +10 -3
- data/lib/rdoc/markup/to_tt_only.rb +17 -31
- data/lib/rdoc/markup/verbatim.rb +5 -6
- data/lib/rdoc/markup.rb +59 -707
- data/lib/rdoc/options.rb +228 -101
- data/lib/rdoc/parser/c.rb +186 -184
- data/lib/rdoc/parser/changelog.rb +57 -13
- data/lib/rdoc/parser/markdown.rb +0 -2
- data/lib/rdoc/parser/rbs.rb +275 -0
- data/lib/rdoc/parser/rd.rb +0 -1
- data/lib/rdoc/parser/ruby.rb +963 -2024
- data/lib/rdoc/parser/ruby_colorizer.rb +253 -0
- data/lib/rdoc/parser/simple.rb +6 -23
- data/lib/rdoc/parser/text.rb +0 -1
- data/lib/rdoc/parser.rb +35 -14
- data/lib/rdoc/rbs_helper.rb +186 -0
- data/lib/rdoc/rd/block_parser.rb +659 -11
- data/lib/rdoc/rd/block_parser.ry +13 -9
- data/lib/rdoc/rd/inline.rb +4 -5
- data/lib/rdoc/rd/inline_parser.rb +646 -2
- data/lib/rdoc/rd.rb +4 -5
- data/lib/rdoc/rdoc.rb +234 -90
- data/lib/rdoc/ri/driver.rb +172 -172
- data/lib/rdoc/ri/paths.rb +3 -3
- data/lib/rdoc/{servlet.rb → ri/servlet.rb} +28 -27
- data/lib/rdoc/ri/store.rb +0 -1
- data/lib/rdoc/ri/task.rb +3 -3
- data/lib/rdoc/ri.rb +5 -5
- data/lib/rdoc/rubygems_hook.rb +106 -25
- data/lib/rdoc/server.rb +460 -0
- data/lib/rdoc/stats/normal.rb +1 -1
- data/lib/rdoc/stats/quiet.rb +1 -2
- data/lib/rdoc/stats/verbose.rb +3 -5
- data/lib/rdoc/stats.rb +158 -136
- data/lib/rdoc/store.rb +267 -48
- data/lib/rdoc/task.rb +54 -28
- data/lib/rdoc/text.rb +60 -120
- data/lib/rdoc/token_stream.rb +30 -45
- data/lib/rdoc/tom_doc.rb +9 -15
- data/lib/rdoc/version.rb +3 -1
- data/lib/rdoc.rb +90 -52
- data/lib/rubygems_plugin.rb +14 -0
- data/man/ri.1 +2 -0
- data/rdoc-logo.svg +43 -0
- data/rdoc.gemspec +25 -200
- metadata +120 -53
- data/CONTRIBUTING.rdoc +0 -220
- data/ExampleMarkdown.md +0 -37
- data/ExampleRDoc.rdoc +0 -208
- data/Gemfile +0 -12
- data/README.rdoc +0 -129
- data/RI.rdoc +0 -57
- data/Rakefile +0 -101
- data/bin/console +0 -7
- data/bin/setup +0 -6
- data/lib/rdoc/anon_class.rb +0 -11
- data/lib/rdoc/context/section.rb +0 -232
- data/lib/rdoc/generator/template/darkfish/.document +0 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
- data/lib/rdoc/generator/template/json_index/.document +0 -1
- data/lib/rdoc/ghost_method.rb +0 -7
- data/lib/rdoc/markup/attr_changer.rb +0 -23
- data/lib/rdoc/markup/attr_span.rb +0 -36
- data/lib/rdoc/markup/attribute_manager.rb +0 -409
- data/lib/rdoc/markup/attributes.rb +0 -71
- data/lib/rdoc/markup/regexp_handling.rb +0 -41
- data/lib/rdoc/meta_method.rb +0 -7
- data/lib/rdoc/parser/ripper_state_lex.rb +0 -590
- data/lib/rdoc/parser/ruby_tools.rb +0 -167
|
@@ -9,7 +9,7 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
|
|
9
9
|
##
|
|
10
10
|
# Creates a new formatter that will output Markdown format text
|
|
11
11
|
|
|
12
|
-
def initialize
|
|
12
|
+
def initialize
|
|
13
13
|
super
|
|
14
14
|
|
|
15
15
|
@headings[1] = ['# ', '']
|
|
@@ -20,46 +20,29 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
|
|
20
20
|
@headings[6] = ['###### ', '']
|
|
21
21
|
|
|
22
22
|
add_regexp_handling_RDOCLINK
|
|
23
|
-
add_regexp_handling_TIDYLINK
|
|
24
23
|
|
|
25
24
|
@hard_break = " \n"
|
|
26
25
|
end
|
|
27
26
|
|
|
28
|
-
##
|
|
29
|
-
# Maps attributes to HTML sequences
|
|
30
|
-
|
|
31
|
-
def init_tags
|
|
32
|
-
add_tag :BOLD, '**', '**'
|
|
33
|
-
add_tag :EM, '*', '*'
|
|
34
|
-
add_tag :TT, '`', '`'
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
##
|
|
38
|
-
# Adds a newline to the output
|
|
39
|
-
|
|
40
|
-
def handle_regexp_HARD_BREAK target
|
|
41
|
-
" \n"
|
|
42
|
-
end
|
|
43
|
-
|
|
44
27
|
##
|
|
45
28
|
# Finishes consumption of `list`
|
|
46
29
|
|
|
47
|
-
def accept_list_end
|
|
48
|
-
@res << "\n"
|
|
49
|
-
|
|
30
|
+
def accept_list_end(list)
|
|
50
31
|
super
|
|
51
32
|
end
|
|
52
33
|
|
|
53
34
|
##
|
|
54
35
|
# Finishes consumption of `list_item`
|
|
55
36
|
|
|
56
|
-
def accept_list_item_end
|
|
37
|
+
def accept_list_item_end(list_item)
|
|
57
38
|
width = case @list_type.last
|
|
58
39
|
when :BULLET then
|
|
59
40
|
4
|
|
60
41
|
when :NOTE, :LABEL then
|
|
61
42
|
use_prefix
|
|
62
43
|
|
|
44
|
+
@res << "\n"
|
|
45
|
+
|
|
63
46
|
4
|
|
64
47
|
else
|
|
65
48
|
@list_index[-1] = @list_index.last.succ
|
|
@@ -72,7 +55,7 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
|
|
72
55
|
##
|
|
73
56
|
# Prepares the visitor for consuming `list_item`
|
|
74
57
|
|
|
75
|
-
def accept_list_item_start
|
|
58
|
+
def accept_list_item_start(list_item)
|
|
76
59
|
type = @list_type.last
|
|
77
60
|
|
|
78
61
|
case type
|
|
@@ -81,11 +64,11 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
|
|
81
64
|
attributes(label).strip
|
|
82
65
|
end.join "\n"
|
|
83
66
|
|
|
84
|
-
bullets << "\n
|
|
67
|
+
bullets << "\n" unless bullets.empty?
|
|
85
68
|
|
|
86
69
|
@prefix = ' ' * @indent
|
|
87
70
|
@indent += 4
|
|
88
|
-
@prefix << bullets
|
|
71
|
+
@prefix << bullets << ":" << (' ' * (@indent - 1))
|
|
89
72
|
else
|
|
90
73
|
bullet = type == :BULLET ? '*' : @list_index.last.to_s + '.'
|
|
91
74
|
@prefix = (' ' * @indent) + bullet.ljust(4)
|
|
@@ -94,10 +77,69 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
|
|
94
77
|
end
|
|
95
78
|
end
|
|
96
79
|
|
|
80
|
+
def add_tag(tag, simple_tag, content)
|
|
81
|
+
if content.match?(/\A[\w\s]+\z/)
|
|
82
|
+
emit_inline("#{simple_tag}#{content}#{simple_tag}")
|
|
83
|
+
else
|
|
84
|
+
emit_inline("<#{tag}>#{content}</#{tag}>")
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def handle_tag(nodes, simple_tag, tag)
|
|
89
|
+
if nodes.size == 1 && String === nodes[0]
|
|
90
|
+
content = apply_regexp_handling(nodes[0]).map do |text, converted|
|
|
91
|
+
converted ? text : convert_string(text)
|
|
92
|
+
end.join
|
|
93
|
+
add_tag(tag, simple_tag, content)
|
|
94
|
+
else
|
|
95
|
+
emit_inline("<#{tag}>")
|
|
96
|
+
traverse_inline_nodes(nodes)
|
|
97
|
+
emit_inline("</#{tag}>")
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def handle_TIDYLINK(label_part, url)
|
|
102
|
+
if url =~ /^rdoc-label:foot/ then
|
|
103
|
+
emit_inline(handle_rdoc_link(url))
|
|
104
|
+
else
|
|
105
|
+
emit_inline('[')
|
|
106
|
+
traverse_inline_nodes(label_part)
|
|
107
|
+
emit_inline("](#{url})")
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def handle_BOLD(nodes)
|
|
112
|
+
handle_tag(nodes, '**', 'strong')
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def handle_EM(nodes)
|
|
116
|
+
handle_tag(nodes, '*', 'em')
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def handle_BOLD_WORD(word)
|
|
120
|
+
add_tag('strong', '**', convert_string(word))
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def handle_EM_WORD(word)
|
|
124
|
+
add_tag('em', '*', convert_string(word))
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def handle_TT(text)
|
|
128
|
+
add_tag('code', '`', convert_string(text))
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def handle_STRIKE(nodes)
|
|
132
|
+
handle_tag(nodes, '~~', 's')
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def handle_HARD_BREAK
|
|
136
|
+
emit_inline(" \n")
|
|
137
|
+
end
|
|
138
|
+
|
|
97
139
|
##
|
|
98
140
|
# Prepares the visitor for consuming `list`
|
|
99
141
|
|
|
100
|
-
def accept_list_start
|
|
142
|
+
def accept_list_start(list)
|
|
101
143
|
case list.type
|
|
102
144
|
when :BULLET, :LABEL, :NOTE then
|
|
103
145
|
@list_index << nil
|
|
@@ -114,7 +156,7 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
|
|
114
156
|
##
|
|
115
157
|
# Adds `rule` to the output
|
|
116
158
|
|
|
117
|
-
def accept_rule
|
|
159
|
+
def accept_rule(rule)
|
|
118
160
|
use_prefix or @res << ' ' * @indent
|
|
119
161
|
@res << '-' * 3
|
|
120
162
|
@res << "\n"
|
|
@@ -123,7 +165,7 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
|
|
123
165
|
##
|
|
124
166
|
# Outputs `verbatim` indented 4 columns
|
|
125
167
|
|
|
126
|
-
def accept_verbatim
|
|
168
|
+
def accept_verbatim(verbatim)
|
|
127
169
|
indent = ' ' * (@indent + 4)
|
|
128
170
|
|
|
129
171
|
verbatim.parts.each do |part|
|
|
@@ -137,7 +179,7 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
|
|
137
179
|
##
|
|
138
180
|
# Creates a Markdown-style URL from +url+ with +text+.
|
|
139
181
|
|
|
140
|
-
def gen_url
|
|
182
|
+
def gen_url(url, text)
|
|
141
183
|
scheme, url, = parse_url url
|
|
142
184
|
|
|
143
185
|
"[#{text.sub(%r{^#{scheme}:/*}i, '')}](#{url})"
|
|
@@ -146,7 +188,7 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
|
|
146
188
|
##
|
|
147
189
|
# Handles <tt>rdoc-</tt> type links for footnotes.
|
|
148
190
|
|
|
149
|
-
def handle_rdoc_link
|
|
191
|
+
def handle_rdoc_link(url)
|
|
150
192
|
case url
|
|
151
193
|
when /^rdoc-ref:/ then
|
|
152
194
|
$'
|
|
@@ -163,30 +205,11 @@ class RDoc::Markup::ToMarkdown < RDoc::Markup::ToRdoc
|
|
|
163
205
|
end
|
|
164
206
|
end
|
|
165
207
|
|
|
166
|
-
##
|
|
167
|
-
# Converts the RDoc markup tidylink into a Markdown.style link.
|
|
168
|
-
|
|
169
|
-
def handle_regexp_TIDYLINK target
|
|
170
|
-
text = target.text
|
|
171
|
-
|
|
172
|
-
return text unless text =~ /\{(.*?)\}\[(.*?)\]/ or text =~ /(\S+)\[(.*?)\]/
|
|
173
|
-
|
|
174
|
-
label = $1
|
|
175
|
-
url = $2
|
|
176
|
-
|
|
177
|
-
if url =~ /^rdoc-label:foot/ then
|
|
178
|
-
handle_rdoc_link url
|
|
179
|
-
else
|
|
180
|
-
gen_url url, label
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
|
-
|
|
184
208
|
##
|
|
185
209
|
# Converts the rdoc-...: links into a Markdown.style links.
|
|
186
210
|
|
|
187
|
-
def handle_regexp_RDOCLINK
|
|
188
|
-
handle_rdoc_link
|
|
211
|
+
def handle_regexp_RDOCLINK(text)
|
|
212
|
+
handle_rdoc_link text
|
|
189
213
|
end
|
|
190
214
|
|
|
191
215
|
end
|
|
192
|
-
|
data/lib/rdoc/markup/to_rdoc.rb
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
# Outputs RDoc markup as RDoc markup! (mostly)
|
|
4
4
|
|
|
5
5
|
class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
6
|
+
DEFAULT_HEADINGS = {
|
|
7
|
+
1 => ['= ', ''],
|
|
8
|
+
2 => ['== ', ''],
|
|
9
|
+
3 => ['=== ', ''],
|
|
10
|
+
4 => ['==== ', ''],
|
|
11
|
+
5 => ['===== ', ''],
|
|
12
|
+
6 => ['====== ', '']
|
|
13
|
+
}
|
|
14
|
+
DEFAULT_HEADINGS.default = []
|
|
15
|
+
DEFAULT_HEADINGS.freeze
|
|
6
16
|
|
|
7
17
|
##
|
|
8
18
|
# Current indent amount for output in characters
|
|
@@ -42,46 +52,27 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
42
52
|
##
|
|
43
53
|
# Creates a new formatter that will output (mostly) \RDoc markup
|
|
44
54
|
|
|
45
|
-
def initialize
|
|
46
|
-
super
|
|
55
|
+
def initialize
|
|
56
|
+
super
|
|
47
57
|
|
|
48
58
|
@markup.add_regexp_handling(/\\\S/, :SUPPRESSED_CROSSREF)
|
|
49
59
|
@width = 78
|
|
50
|
-
init_tags
|
|
51
|
-
|
|
52
|
-
@headings = {}
|
|
53
|
-
@headings.default = []
|
|
54
|
-
|
|
55
|
-
@headings[1] = ['= ', '']
|
|
56
|
-
@headings[2] = ['== ', '']
|
|
57
|
-
@headings[3] = ['=== ', '']
|
|
58
|
-
@headings[4] = ['==== ', '']
|
|
59
|
-
@headings[5] = ['===== ', '']
|
|
60
|
-
@headings[6] = ['====== ', '']
|
|
61
60
|
|
|
61
|
+
@headings = DEFAULT_HEADINGS.dup
|
|
62
62
|
@hard_break = "\n"
|
|
63
63
|
end
|
|
64
64
|
|
|
65
|
-
##
|
|
66
|
-
# Maps attributes to HTML sequences
|
|
67
|
-
|
|
68
|
-
def init_tags
|
|
69
|
-
add_tag :BOLD, "<b>", "</b>"
|
|
70
|
-
add_tag :TT, "<tt>", "</tt>"
|
|
71
|
-
add_tag :EM, "<em>", "</em>"
|
|
72
|
-
end
|
|
73
|
-
|
|
74
65
|
##
|
|
75
66
|
# Adds +blank_line+ to the output
|
|
76
67
|
|
|
77
|
-
def accept_blank_line
|
|
68
|
+
def accept_blank_line(blank_line)
|
|
78
69
|
@res << "\n"
|
|
79
70
|
end
|
|
80
71
|
|
|
81
72
|
##
|
|
82
73
|
# Adds +paragraph+ to the output
|
|
83
74
|
|
|
84
|
-
def accept_block_quote
|
|
75
|
+
def accept_block_quote(block_quote)
|
|
85
76
|
@indent += 2
|
|
86
77
|
|
|
87
78
|
block_quote.parts.each do |part|
|
|
@@ -96,7 +87,7 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
96
87
|
##
|
|
97
88
|
# Adds +heading+ to the output
|
|
98
89
|
|
|
99
|
-
def accept_heading
|
|
90
|
+
def accept_heading(heading)
|
|
100
91
|
use_prefix or @res << ' ' * @indent
|
|
101
92
|
@res << @headings[heading.level][0]
|
|
102
93
|
@res << attributes(heading.text)
|
|
@@ -107,7 +98,7 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
107
98
|
##
|
|
108
99
|
# Finishes consumption of +list+
|
|
109
100
|
|
|
110
|
-
def accept_list_end
|
|
101
|
+
def accept_list_end(list)
|
|
111
102
|
@list_index.pop
|
|
112
103
|
@list_type.pop
|
|
113
104
|
@list_width.pop
|
|
@@ -116,7 +107,7 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
116
107
|
##
|
|
117
108
|
# Finishes consumption of +list_item+
|
|
118
109
|
|
|
119
|
-
def accept_list_item_end
|
|
110
|
+
def accept_list_item_end(list_item)
|
|
120
111
|
width = case @list_type.last
|
|
121
112
|
when :BULLET then
|
|
122
113
|
2
|
|
@@ -140,16 +131,24 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
140
131
|
##
|
|
141
132
|
# Prepares the visitor for consuming +list_item+
|
|
142
133
|
|
|
143
|
-
def accept_list_item_start
|
|
134
|
+
def accept_list_item_start(list_item)
|
|
144
135
|
type = @list_type.last
|
|
145
136
|
|
|
146
137
|
case type
|
|
147
138
|
when :NOTE, :LABEL then
|
|
148
|
-
|
|
139
|
+
stripped_labels = Array(list_item.label).map do |label|
|
|
149
140
|
attributes(label).strip
|
|
150
|
-
end
|
|
141
|
+
end
|
|
151
142
|
|
|
152
|
-
bullets
|
|
143
|
+
bullets = case type
|
|
144
|
+
when :NOTE
|
|
145
|
+
stripped_labels.map { |b| "#{b}::" }
|
|
146
|
+
when :LABEL
|
|
147
|
+
stripped_labels.map { |b| "[#{b}]" }
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
bullets = bullets.join("\n")
|
|
151
|
+
bullets << "\n" unless stripped_labels.empty?
|
|
153
152
|
|
|
154
153
|
@prefix = ' ' * @indent
|
|
155
154
|
@indent += 2
|
|
@@ -165,7 +164,7 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
165
164
|
##
|
|
166
165
|
# Prepares the visitor for consuming +list+
|
|
167
166
|
|
|
168
|
-
def accept_list_start
|
|
167
|
+
def accept_list_start(list)
|
|
169
168
|
case list.type
|
|
170
169
|
when :BULLET then
|
|
171
170
|
@list_index << nil
|
|
@@ -192,7 +191,7 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
192
191
|
##
|
|
193
192
|
# Adds +paragraph+ to the output
|
|
194
193
|
|
|
195
|
-
def accept_paragraph
|
|
194
|
+
def accept_paragraph(paragraph)
|
|
196
195
|
text = paragraph.text @hard_break
|
|
197
196
|
wrap attributes text
|
|
198
197
|
end
|
|
@@ -200,7 +199,7 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
200
199
|
##
|
|
201
200
|
# Adds +paragraph+ to the output
|
|
202
201
|
|
|
203
|
-
def accept_indented_paragraph
|
|
202
|
+
def accept_indented_paragraph(paragraph)
|
|
204
203
|
@indent += paragraph.indent
|
|
205
204
|
text = paragraph.text @hard_break
|
|
206
205
|
wrap attributes text
|
|
@@ -210,14 +209,14 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
210
209
|
##
|
|
211
210
|
# Adds +raw+ to the output
|
|
212
211
|
|
|
213
|
-
def accept_raw
|
|
212
|
+
def accept_raw(raw)
|
|
214
213
|
@res << raw.parts.join("\n")
|
|
215
214
|
end
|
|
216
215
|
|
|
217
216
|
##
|
|
218
217
|
# Adds +rule+ to the output
|
|
219
218
|
|
|
220
|
-
def accept_rule
|
|
219
|
+
def accept_rule(rule)
|
|
221
220
|
use_prefix or @res << ' ' * @indent
|
|
222
221
|
@res << '-' * (@width - @indent)
|
|
223
222
|
@res << "\n"
|
|
@@ -226,7 +225,7 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
226
225
|
##
|
|
227
226
|
# Outputs +verbatim+ indented 2 columns
|
|
228
227
|
|
|
229
|
-
def accept_verbatim
|
|
228
|
+
def accept_verbatim(verbatim)
|
|
230
229
|
indent = ' ' * (@indent + 2)
|
|
231
230
|
|
|
232
231
|
verbatim.parts.each do |part|
|
|
@@ -240,13 +239,15 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
240
239
|
##
|
|
241
240
|
# Adds +table+ to the output
|
|
242
241
|
|
|
243
|
-
def accept_table
|
|
244
|
-
|
|
245
|
-
|
|
242
|
+
def accept_table(header, body, aligns)
|
|
243
|
+
header = header.map { |h| attributes h }
|
|
244
|
+
body = body.map { |row| row.map { |t| attributes t } }
|
|
245
|
+
widths = header.zip(*body).map do |cols|
|
|
246
|
+
cols.compact.map { |col| calculate_text_width(col) }.max
|
|
246
247
|
end
|
|
247
248
|
aligns = aligns.map do |a|
|
|
248
249
|
case a
|
|
249
|
-
when nil
|
|
250
|
+
when nil, :center
|
|
250
251
|
:center
|
|
251
252
|
when :left
|
|
252
253
|
:ljust
|
|
@@ -254,23 +255,108 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
254
255
|
:rjust
|
|
255
256
|
end
|
|
256
257
|
end
|
|
257
|
-
@res << header.zip(widths, aligns) do |h, w, a|
|
|
258
|
-
h.
|
|
258
|
+
@res << header.zip(widths, aligns).map do |h, w, a|
|
|
259
|
+
extra_width = h.size - calculate_text_width(h)
|
|
260
|
+
h.__send__(a, w + extra_width)
|
|
259
261
|
end.join("|").rstrip << "\n"
|
|
260
262
|
@res << widths.map {|w| "-" * w }.join("|") << "\n"
|
|
261
263
|
body.each do |row|
|
|
262
|
-
@res <<
|
|
263
|
-
t
|
|
264
|
+
@res << widths.zip(aligns).each_with_index.map do |(w, a), i|
|
|
265
|
+
t = row[i] || ""
|
|
266
|
+
extra_width = t.size - calculate_text_width(t)
|
|
267
|
+
t.__send__(a, w + extra_width)
|
|
264
268
|
end.join("|").rstrip << "\n"
|
|
265
269
|
end
|
|
266
270
|
end
|
|
267
271
|
|
|
272
|
+
def calculate_text_width(text)
|
|
273
|
+
text.size
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
def handle_PLAIN_TEXT(text)
|
|
277
|
+
add_text(text)
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
def handle_REGEXP_HANDLING_TEXT(text)
|
|
281
|
+
add_text(text)
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
def handle_BOLD(target)
|
|
285
|
+
on(:BOLD)
|
|
286
|
+
super
|
|
287
|
+
off(:BOLD)
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
def handle_EM(target)
|
|
291
|
+
on(:EM)
|
|
292
|
+
super
|
|
293
|
+
off(:EM)
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
def handle_BOLD_WORD(word)
|
|
297
|
+
on(:BOLD)
|
|
298
|
+
super
|
|
299
|
+
off(:BOLD)
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
def handle_EM_WORD(word)
|
|
303
|
+
on(:EM)
|
|
304
|
+
super
|
|
305
|
+
off(:EM)
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
def handle_TT(code)
|
|
309
|
+
on(:TT)
|
|
310
|
+
super
|
|
311
|
+
off(:TT)
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
def handle_STRIKE(target)
|
|
315
|
+
on(:STRIKE)
|
|
316
|
+
super
|
|
317
|
+
off(:STRIKE)
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
def handle_HARD_BREAK
|
|
321
|
+
add_text("\n")
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
def handle_TIDYLINK(label_part, url)
|
|
325
|
+
super
|
|
326
|
+
add_text("( #{url} )")
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
def handle_inline(text, initial_attributes = [])
|
|
330
|
+
@attributes = Hash.new(0)
|
|
331
|
+
initial_attributes.each { |attr| on(attr) }
|
|
332
|
+
out = @inline_output = +''
|
|
333
|
+
super(text)
|
|
334
|
+
@inline_output = nil
|
|
335
|
+
out
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
def on(attr)
|
|
339
|
+
@attributes[attr] += 1
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
def off(attr)
|
|
343
|
+
@attributes[attr] -= 1
|
|
344
|
+
@attributes.delete(attr) if @attributes[attr] == 0
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
def add_text(text)
|
|
348
|
+
emit_inline(text)
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
def emit_inline(text)
|
|
352
|
+
@inline_output << text
|
|
353
|
+
end
|
|
354
|
+
|
|
268
355
|
##
|
|
269
|
-
# Applies attribute-specific markup to +text+ using RDoc::
|
|
356
|
+
# Applies attribute-specific markup to +text+ using RDoc::Markup::InlineParser
|
|
270
357
|
|
|
271
|
-
def attributes
|
|
272
|
-
|
|
273
|
-
convert_flow flow
|
|
358
|
+
def attributes(text)
|
|
359
|
+
handle_inline(text)
|
|
274
360
|
end
|
|
275
361
|
|
|
276
362
|
##
|
|
@@ -283,17 +369,8 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
283
369
|
##
|
|
284
370
|
# Removes preceding \\ from the suppressed crossref +target+
|
|
285
371
|
|
|
286
|
-
def handle_regexp_SUPPRESSED_CROSSREF
|
|
287
|
-
text
|
|
288
|
-
text = text.sub('\\', '') unless in_tt?
|
|
289
|
-
text
|
|
290
|
-
end
|
|
291
|
-
|
|
292
|
-
##
|
|
293
|
-
# Adds a newline to the output
|
|
294
|
-
|
|
295
|
-
def handle_regexp_HARD_BREAK target
|
|
296
|
-
"\n"
|
|
372
|
+
def handle_regexp_SUPPRESSED_CROSSREF(text)
|
|
373
|
+
text.sub('\\', '')
|
|
297
374
|
end
|
|
298
375
|
|
|
299
376
|
##
|
|
@@ -323,40 +400,22 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
323
400
|
##
|
|
324
401
|
# Wraps +text+ to #width
|
|
325
402
|
|
|
326
|
-
def wrap
|
|
403
|
+
def wrap(text)
|
|
327
404
|
return unless text && !text.empty?
|
|
328
405
|
|
|
329
406
|
text_len = @width - @indent
|
|
330
407
|
|
|
331
408
|
text_len = 20 if text_len < 20
|
|
332
409
|
|
|
333
|
-
re = /^(.{0,#{text_len}})[ \n]/
|
|
334
410
|
next_prefix = ' ' * @indent
|
|
335
411
|
|
|
336
412
|
prefix = @prefix || next_prefix
|
|
337
413
|
@prefix = nil
|
|
338
414
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
if text =~ re then
|
|
343
|
-
@res << $1
|
|
344
|
-
text.slice!(0, $&.length)
|
|
345
|
-
else
|
|
346
|
-
@res << text.slice!(0, text_len)
|
|
347
|
-
end
|
|
348
|
-
|
|
349
|
-
@res << "\n" << next_prefix
|
|
350
|
-
end
|
|
351
|
-
|
|
352
|
-
if text.empty? then
|
|
353
|
-
@res.pop
|
|
354
|
-
@res.pop
|
|
355
|
-
else
|
|
356
|
-
@res << text
|
|
357
|
-
@res << "\n"
|
|
415
|
+
text.scan(/\G(?:([^ \n]{#{text_len}})(?=[^ \n])|(.{1,#{text_len}})(?:[ \n]|\z))/) do
|
|
416
|
+
@res << prefix << ($1 || $2) << "\n"
|
|
417
|
+
prefix = next_prefix
|
|
358
418
|
end
|
|
359
419
|
end
|
|
360
420
|
|
|
361
421
|
end
|
|
362
|
-
|
|
@@ -25,7 +25,7 @@ class RDoc::Markup::ToTableOfContents < RDoc::Markup::Formatter
|
|
|
25
25
|
attr_accessor :omit_headings_below
|
|
26
26
|
|
|
27
27
|
def initialize # :nodoc:
|
|
28
|
-
super
|
|
28
|
+
super
|
|
29
29
|
|
|
30
30
|
@omit_headings_below = nil
|
|
31
31
|
end
|
|
@@ -33,7 +33,7 @@ class RDoc::Markup::ToTableOfContents < RDoc::Markup::Formatter
|
|
|
33
33
|
##
|
|
34
34
|
# Adds +document+ to the output, using its heading cutoff if present
|
|
35
35
|
|
|
36
|
-
def accept_document
|
|
36
|
+
def accept_document(document)
|
|
37
37
|
@omit_headings_below = document.omit_headings_below
|
|
38
38
|
|
|
39
39
|
super
|
|
@@ -42,7 +42,7 @@ class RDoc::Markup::ToTableOfContents < RDoc::Markup::Formatter
|
|
|
42
42
|
##
|
|
43
43
|
# Adds +heading+ to the table of contents
|
|
44
44
|
|
|
45
|
-
def accept_heading
|
|
45
|
+
def accept_heading(heading)
|
|
46
46
|
@res << heading unless suppressed? heading
|
|
47
47
|
end
|
|
48
48
|
|
|
@@ -64,7 +64,7 @@ class RDoc::Markup::ToTableOfContents < RDoc::Markup::Formatter
|
|
|
64
64
|
##
|
|
65
65
|
# Returns true if +heading+ is below the display threshold
|
|
66
66
|
|
|
67
|
-
def suppressed?
|
|
67
|
+
def suppressed?(heading)
|
|
68
68
|
return false unless @omit_headings_below
|
|
69
69
|
|
|
70
70
|
heading.level > @omit_headings_below
|
|
@@ -86,4 +86,3 @@ class RDoc::Markup::ToTableOfContents < RDoc::Markup::Formatter
|
|
|
86
86
|
# :startdoc:
|
|
87
87
|
|
|
88
88
|
end
|
|
89
|
-
|
data/lib/rdoc/markup/to_test.rb
CHANGED
|
@@ -18,11 +18,19 @@ class RDoc::Markup::ToTest < RDoc::Markup::Formatter
|
|
|
18
18
|
@res
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
def handle_PLAIN_TEXT(text)
|
|
22
|
+
@res << text
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def handle_REGEXP_HANDLING_TEXT(text)
|
|
26
|
+
@res << text
|
|
27
|
+
end
|
|
28
|
+
|
|
21
29
|
def accept_paragraph(paragraph)
|
|
22
|
-
|
|
30
|
+
handle_inline(paragraph.text)
|
|
23
31
|
end
|
|
24
32
|
|
|
25
|
-
def accept_raw
|
|
33
|
+
def accept_raw(raw)
|
|
26
34
|
@res << raw.parts.join
|
|
27
35
|
end
|
|
28
36
|
|
|
@@ -67,4 +75,3 @@ class RDoc::Markup::ToTest < RDoc::Markup::Formatter
|
|
|
67
75
|
# :startdoc:
|
|
68
76
|
|
|
69
77
|
end
|
|
70
|
-
|