rdoc 7.1.0 → 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 +3 -4
- data/LICENSE.rdoc +4 -0
- data/README.md +43 -2
- data/doc/markup_reference/markdown.md +104 -3
- data/lib/rdoc/code_object/alias.rb +2 -8
- data/lib/rdoc/code_object/any_method.rb +11 -6
- data/lib/rdoc/code_object/attr.rb +12 -6
- data/lib/rdoc/code_object/class_module.rb +62 -32
- data/lib/rdoc/code_object/constant.rb +29 -3
- data/lib/rdoc/code_object/context/section.rb +30 -43
- data/lib/rdoc/code_object/context.rb +53 -37
- data/lib/rdoc/code_object/method_attr.rb +9 -15
- data/lib/rdoc/code_object/mixin.rb +3 -0
- data/lib/rdoc/code_object/top_level.rb +11 -3
- data/lib/rdoc/code_object.rb +2 -4
- data/lib/rdoc/comment.rb +1 -66
- data/lib/rdoc/cross_reference.rb +8 -30
- data/lib/rdoc/encoding.rb +3 -3
- data/lib/rdoc/generator/aliki.rb +17 -0
- data/lib/rdoc/generator/darkfish.rb +12 -6
- data/lib/rdoc/generator/json_index.rb +2 -2
- data/lib/rdoc/generator/markup.rb +56 -31
- data/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
- data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/_head.rhtml +6 -1
- data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +8 -6
- data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +8 -6
- data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +2 -2
- data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/class.rhtml +61 -51
- data/lib/rdoc/generator/template/aliki/css/rdoc.css +365 -147
- data/lib/rdoc/generator/template/aliki/index.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/js/aliki.js +28 -20
- data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
- data/lib/rdoc/generator/template/aliki/js/search_controller.js +1 -1
- data/lib/rdoc/generator/template/aliki/page.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +1 -1
- data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +8 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +8 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/class.rhtml +18 -21
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +0 -1
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +3 -3
- data/lib/rdoc/i18n/text.rb +3 -3
- data/lib/rdoc/markdown.kpeg +36 -17
- data/lib/rdoc/markdown.rb +324 -125
- data/lib/rdoc/markup/document.rb +2 -2
- data/lib/rdoc/markup/formatter.rb +128 -115
- data/lib/rdoc/markup/heading.rb +3 -6
- data/lib/rdoc/markup/indented_paragraph.rb +1 -1
- data/lib/rdoc/markup/inline_parser.rb +312 -0
- data/lib/rdoc/markup/list.rb +2 -2
- data/lib/rdoc/markup/list_item.rb +2 -2
- data/lib/rdoc/markup/parser.rb +1 -1
- data/lib/rdoc/markup/pre_process.rb +0 -25
- data/lib/rdoc/markup/to_ansi.rb +52 -5
- data/lib/rdoc/markup/to_bs.rb +23 -43
- data/lib/rdoc/markup/to_html.rb +279 -226
- data/lib/rdoc/markup/to_html_crossref.rb +122 -136
- data/lib/rdoc/markup/to_html_snippet.rb +65 -65
- data/lib/rdoc/markup/to_joined_paragraph.rb +0 -5
- data/lib/rdoc/markup/to_label.rb +22 -23
- data/lib/rdoc/markup/to_markdown.rb +62 -38
- data/lib/rdoc/markup/to_rdoc.rb +88 -28
- data/lib/rdoc/markup/to_table_of_contents.rb +1 -1
- data/lib/rdoc/markup/to_test.rb +9 -1
- data/lib/rdoc/markup/to_tt_only.rb +10 -23
- data/lib/rdoc/markup/verbatim.rb +1 -1
- data/lib/rdoc/markup.rb +8 -30
- data/lib/rdoc/options.rb +36 -51
- data/lib/rdoc/parser/c.rb +7 -6
- data/lib/rdoc/parser/changelog.rb +21 -0
- data/lib/rdoc/parser/rbs.rb +275 -0
- data/lib/rdoc/parser/ruby.rb +955 -2067
- data/lib/rdoc/parser/ruby_colorizer.rb +253 -0
- data/lib/rdoc/parser.rb +3 -2
- data/lib/rdoc/rbs_helper.rb +186 -0
- data/lib/rdoc/rdoc.rb +196 -24
- data/lib/rdoc/ri/driver.rb +8 -2
- data/lib/rdoc/ri/paths.rb +1 -1
- data/lib/rdoc/{servlet.rb → ri/servlet.rb} +5 -5
- data/lib/rdoc/ri.rb +4 -3
- data/lib/rdoc/rubygems_hook.rb +11 -11
- data/lib/rdoc/server.rb +460 -0
- data/lib/rdoc/stats.rb +147 -124
- data/lib/rdoc/store.rb +212 -4
- data/lib/rdoc/task.rb +16 -15
- data/lib/rdoc/text.rb +24 -117
- data/lib/rdoc/token_stream.rb +11 -33
- data/lib/rdoc/version.rb +1 -1
- data/lib/rdoc.rb +35 -7
- data/lib/rubygems_plugin.rb +2 -11
- data/rdoc-logo.svg +43 -0
- data/rdoc.gemspec +6 -4
- metadata +37 -23
- data/lib/rdoc/code_object/anon_class.rb +0 -10
- data/lib/rdoc/code_object/ghost_method.rb +0 -6
- data/lib/rdoc/code_object/meta_method.rb +0 -6
- data/lib/rdoc/markup/attr_changer.rb +0 -22
- data/lib/rdoc/markup/attr_span.rb +0 -35
- data/lib/rdoc/markup/attribute_manager.rb +0 -432
- data/lib/rdoc/markup/attributes.rb +0 -70
- data/lib/rdoc/markup/regexp_handling.rb +0 -40
- data/lib/rdoc/parser/prism_ruby.rb +0 -1100
- data/lib/rdoc/parser/ripper_state_lex.rb +0 -302
- data/lib/rdoc/parser/ruby_tools.rb +0 -163
|
@@ -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,27 +20,10 @@ 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
|
|
|
@@ -94,6 +77,65 @@ 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
|
|
|
@@ -163,29 +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
|
data/lib/rdoc/markup/to_rdoc.rb
CHANGED
|
@@ -52,26 +52,16 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
52
52
|
##
|
|
53
53
|
# Creates a new formatter that will output (mostly) \RDoc markup
|
|
54
54
|
|
|
55
|
-
def initialize
|
|
56
|
-
super
|
|
55
|
+
def initialize
|
|
56
|
+
super
|
|
57
57
|
|
|
58
58
|
@markup.add_regexp_handling(/\\\S/, :SUPPRESSED_CROSSREF)
|
|
59
59
|
@width = 78
|
|
60
|
-
init_tags
|
|
61
60
|
|
|
62
61
|
@headings = DEFAULT_HEADINGS.dup
|
|
63
62
|
@hard_break = "\n"
|
|
64
63
|
end
|
|
65
64
|
|
|
66
|
-
##
|
|
67
|
-
# Maps attributes to HTML sequences
|
|
68
|
-
|
|
69
|
-
def init_tags
|
|
70
|
-
add_tag :BOLD, "<b>", "</b>"
|
|
71
|
-
add_tag :TT, "<tt>", "</tt>"
|
|
72
|
-
add_tag :EM, "<em>", "</em>"
|
|
73
|
-
end
|
|
74
|
-
|
|
75
65
|
##
|
|
76
66
|
# Adds +blank_line+ to the output
|
|
77
67
|
|
|
@@ -253,7 +243,7 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
253
243
|
header = header.map { |h| attributes h }
|
|
254
244
|
body = body.map { |row| row.map { |t| attributes t } }
|
|
255
245
|
widths = header.zip(*body).map do |cols|
|
|
256
|
-
cols.map { |col| calculate_text_width(col) }.max
|
|
246
|
+
cols.compact.map { |col| calculate_text_width(col) }.max
|
|
257
247
|
end
|
|
258
248
|
aligns = aligns.map do |a|
|
|
259
249
|
case a
|
|
@@ -271,7 +261,8 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
271
261
|
end.join("|").rstrip << "\n"
|
|
272
262
|
@res << widths.map {|w| "-" * w }.join("|") << "\n"
|
|
273
263
|
body.each do |row|
|
|
274
|
-
@res <<
|
|
264
|
+
@res << widths.zip(aligns).each_with_index.map do |(w, a), i|
|
|
265
|
+
t = row[i] || ""
|
|
275
266
|
extra_width = t.size - calculate_text_width(t)
|
|
276
267
|
t.__send__(a, w + extra_width)
|
|
277
268
|
end.join("|").rstrip << "\n"
|
|
@@ -282,12 +273,90 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
282
273
|
text.size
|
|
283
274
|
end
|
|
284
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
|
+
|
|
285
355
|
##
|
|
286
|
-
# Applies attribute-specific markup to +text+ using RDoc::
|
|
356
|
+
# Applies attribute-specific markup to +text+ using RDoc::Markup::InlineParser
|
|
287
357
|
|
|
288
358
|
def attributes(text)
|
|
289
|
-
|
|
290
|
-
convert_flow flow
|
|
359
|
+
handle_inline(text)
|
|
291
360
|
end
|
|
292
361
|
|
|
293
362
|
##
|
|
@@ -300,17 +369,8 @@ class RDoc::Markup::ToRdoc < RDoc::Markup::Formatter
|
|
|
300
369
|
##
|
|
301
370
|
# Removes preceding \\ from the suppressed crossref +target+
|
|
302
371
|
|
|
303
|
-
def handle_regexp_SUPPRESSED_CROSSREF(
|
|
304
|
-
text
|
|
305
|
-
text = text.sub('\\', '') unless in_tt?
|
|
306
|
-
text
|
|
307
|
-
end
|
|
308
|
-
|
|
309
|
-
##
|
|
310
|
-
# Adds a newline to the output
|
|
311
|
-
|
|
312
|
-
def handle_regexp_HARD_BREAK(target)
|
|
313
|
-
"\n"
|
|
372
|
+
def handle_regexp_SUPPRESSED_CROSSREF(text)
|
|
373
|
+
text.sub('\\', '')
|
|
314
374
|
end
|
|
315
375
|
|
|
316
376
|
##
|
data/lib/rdoc/markup/to_test.rb
CHANGED
|
@@ -18,8 +18,16 @@ 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
33
|
def accept_raw(raw)
|
|
@@ -15,15 +15,6 @@ class RDoc::Markup::ToTtOnly < RDoc::Markup::Formatter
|
|
|
15
15
|
|
|
16
16
|
attr_reader :res
|
|
17
17
|
|
|
18
|
-
##
|
|
19
|
-
# Creates a new tt-only formatter.
|
|
20
|
-
|
|
21
|
-
def initialize(markup = nil)
|
|
22
|
-
super nil, markup
|
|
23
|
-
|
|
24
|
-
add_tag :TT, nil, nil
|
|
25
|
-
end
|
|
26
|
-
|
|
27
18
|
##
|
|
28
19
|
# Adds tts from +block_quote+ to the output
|
|
29
20
|
|
|
@@ -82,22 +73,18 @@ class RDoc::Markup::ToTtOnly < RDoc::Markup::Formatter
|
|
|
82
73
|
# Extracts tt sections from +text+
|
|
83
74
|
|
|
84
75
|
def tt_sections(text)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
off_tags res, item
|
|
93
|
-
on_tags res, item
|
|
94
|
-
when RDoc::Markup::RegexpHandling then
|
|
95
|
-
@res << convert_regexp_handling(item) if in_tt? # TODO can this happen?
|
|
76
|
+
parsed = RDoc::Markup::InlineParser.new(text).parse
|
|
77
|
+
traverse = -> node {
|
|
78
|
+
next if String === node
|
|
79
|
+
if node[:type] == :TT
|
|
80
|
+
res << nil
|
|
81
|
+
res << node[:children][0] || ''
|
|
82
|
+
res << nil
|
|
96
83
|
else
|
|
97
|
-
|
|
84
|
+
node[:children].each(&traverse)
|
|
98
85
|
end
|
|
99
|
-
|
|
100
|
-
|
|
86
|
+
}
|
|
87
|
+
parsed.each(&traverse)
|
|
101
88
|
res
|
|
102
89
|
end
|
|
103
90
|
|
data/lib/rdoc/markup/verbatim.rb
CHANGED
data/lib/rdoc/markup.rb
CHANGED
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
#
|
|
80
80
|
# class WikiHtml < RDoc::Markup::ToHtml
|
|
81
81
|
# def handle_regexp_WIKIWORD(target)
|
|
82
|
-
# "<font color=red>" + target
|
|
82
|
+
# "<font color=red>" + target + "</font>"
|
|
83
83
|
# end
|
|
84
84
|
# end
|
|
85
85
|
#
|
|
@@ -110,10 +110,10 @@
|
|
|
110
110
|
|
|
111
111
|
class RDoc::Markup
|
|
112
112
|
|
|
113
|
-
|
|
114
|
-
#
|
|
113
|
+
# Array of regexp handling pattern and its name. A regexp handling
|
|
114
|
+
# sequence is something like a WikiWord
|
|
115
115
|
|
|
116
|
-
attr_reader :
|
|
116
|
+
attr_reader :regexp_handlings
|
|
117
117
|
|
|
118
118
|
##
|
|
119
119
|
# Parses +str+ into an RDoc::Markup::Document.
|
|
@@ -148,27 +148,11 @@ https://github.com/ruby/rdoc/issues
|
|
|
148
148
|
# structure (paragraphs, lists, and so on). Invoke an event handler as we
|
|
149
149
|
# identify significant chunks.
|
|
150
150
|
|
|
151
|
-
def initialize
|
|
152
|
-
@
|
|
151
|
+
def initialize
|
|
152
|
+
@regexp_handlings = []
|
|
153
153
|
@output = nil
|
|
154
154
|
end
|
|
155
155
|
|
|
156
|
-
##
|
|
157
|
-
# Add to the sequences used to add formatting to an individual word (such
|
|
158
|
-
# as *bold*). Matching entries will generate attributes that the output
|
|
159
|
-
# formatters can recognize by their +name+.
|
|
160
|
-
|
|
161
|
-
def add_word_pair(start, stop, name)
|
|
162
|
-
@attribute_manager.add_word_pair(start, stop, name)
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
##
|
|
166
|
-
# Add to the sequences recognized as general markup.
|
|
167
|
-
|
|
168
|
-
def add_html(tag, name)
|
|
169
|
-
@attribute_manager.add_html(tag, name)
|
|
170
|
-
end
|
|
171
|
-
|
|
172
156
|
##
|
|
173
157
|
# Add to other inline sequences. For example, we could add WikiWords using
|
|
174
158
|
# something like:
|
|
@@ -178,7 +162,7 @@ https://github.com/ruby/rdoc/issues
|
|
|
178
162
|
# Each wiki word will be presented to the output formatter.
|
|
179
163
|
|
|
180
164
|
def add_regexp_handling(pattern, name)
|
|
181
|
-
@
|
|
165
|
+
@regexp_handlings << [pattern, name]
|
|
182
166
|
end
|
|
183
167
|
|
|
184
168
|
##
|
|
@@ -197,15 +181,9 @@ https://github.com/ruby/rdoc/issues
|
|
|
197
181
|
end
|
|
198
182
|
|
|
199
183
|
autoload :Parser, "#{__dir__}/markup/parser"
|
|
184
|
+
autoload :InlineParser, "#{__dir__}/markup/inline_parser"
|
|
200
185
|
autoload :PreProcess, "#{__dir__}/markup/pre_process"
|
|
201
186
|
|
|
202
|
-
# Inline markup classes
|
|
203
|
-
autoload :AttrChanger, "#{__dir__}/markup/attr_changer"
|
|
204
|
-
autoload :AttrSpan, "#{__dir__}/markup/attr_span"
|
|
205
|
-
autoload :Attributes, "#{__dir__}/markup/attributes"
|
|
206
|
-
autoload :AttributeManager, "#{__dir__}/markup/attribute_manager"
|
|
207
|
-
autoload :RegexpHandling, "#{__dir__}/markup/regexp_handling"
|
|
208
|
-
|
|
209
187
|
# RDoc::Markup AST
|
|
210
188
|
autoload :BlankLine, "#{__dir__}/markup/blank_line"
|
|
211
189
|
autoload :BlockQuote, "#{__dir__}/markup/block_quote"
|
data/lib/rdoc/options.rb
CHANGED
|
@@ -74,23 +74,6 @@ require 'pathname'
|
|
|
74
74
|
|
|
75
75
|
class RDoc::Options
|
|
76
76
|
|
|
77
|
-
##
|
|
78
|
-
# The deprecated options.
|
|
79
|
-
|
|
80
|
-
DEPRECATED = {
|
|
81
|
-
'--accessor' => 'support discontinued',
|
|
82
|
-
'--diagram' => 'support discontinued',
|
|
83
|
-
'--help-output' => 'support discontinued',
|
|
84
|
-
'--image-format' => 'was an option for --diagram',
|
|
85
|
-
'--inline-source' => 'source code is now always inlined',
|
|
86
|
-
'--merge' => 'ri now always merges class information',
|
|
87
|
-
'--one-file' => 'support discontinued',
|
|
88
|
-
'--op-name' => 'support discontinued',
|
|
89
|
-
'--opname' => 'support discontinued',
|
|
90
|
-
'--promiscuous' => 'files always only document their content',
|
|
91
|
-
'--ri-system' => 'Ruby installers use other techniques',
|
|
92
|
-
}
|
|
93
|
-
|
|
94
77
|
##
|
|
95
78
|
# RDoc options ignored (or handled specially) by --write-options
|
|
96
79
|
|
|
@@ -112,8 +95,8 @@ class RDoc::Options
|
|
|
112
95
|
pipe
|
|
113
96
|
rdoc_include
|
|
114
97
|
root
|
|
98
|
+
server_port
|
|
115
99
|
static_path
|
|
116
|
-
stylesheet_url
|
|
117
100
|
template
|
|
118
101
|
template_dir
|
|
119
102
|
update_output_dir
|
|
@@ -346,6 +329,13 @@ class RDoc::Options
|
|
|
346
329
|
|
|
347
330
|
attr_reader :visibility
|
|
348
331
|
|
|
332
|
+
##
|
|
333
|
+
# When set to a port number, starts a live-reloading server instead of
|
|
334
|
+
# writing files. Defaults to +false+ (no server). Set via
|
|
335
|
+
# <tt>--server[=PORT]</tt>.
|
|
336
|
+
|
|
337
|
+
attr_reader :server_port
|
|
338
|
+
|
|
349
339
|
##
|
|
350
340
|
# Indicates if files of test suites should be skipped
|
|
351
341
|
attr_accessor :skip_tests
|
|
@@ -428,9 +418,9 @@ class RDoc::Options
|
|
|
428
418
|
@output_decoration = true
|
|
429
419
|
@rdoc_include = []
|
|
430
420
|
@root = Pathname(Dir.pwd)
|
|
421
|
+
@server_port = false
|
|
431
422
|
@show_hash = false
|
|
432
423
|
@static_path = []
|
|
433
|
-
@stylesheet_url = nil # TODO remove in RDoc 4
|
|
434
424
|
@tab_width = 8
|
|
435
425
|
@template = nil
|
|
436
426
|
@template_dir = nil
|
|
@@ -609,7 +599,12 @@ class RDoc::Options
|
|
|
609
599
|
ivars.sort.each do |ivar|
|
|
610
600
|
yaml[ivar] = instance_variable_get("@#{ivar}")
|
|
611
601
|
end
|
|
612
|
-
|
|
602
|
+
|
|
603
|
+
if yaml.respond_to?(:to_yaml)
|
|
604
|
+
yaml.to_yaml
|
|
605
|
+
else
|
|
606
|
+
RDoc.yaml_serializer.dump(yaml)
|
|
607
|
+
end
|
|
613
608
|
end
|
|
614
609
|
|
|
615
610
|
##
|
|
@@ -769,14 +764,6 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
769
764
|
end
|
|
770
765
|
opt.banner += " - TomDoc: Only in ruby files\n"
|
|
771
766
|
|
|
772
|
-
opt.banner += "\n The following options are deprecated:\n\n"
|
|
773
|
-
|
|
774
|
-
name_length = DEPRECATED.keys.sort_by { |k| k.length }.last.length
|
|
775
|
-
|
|
776
|
-
DEPRECATED.sort_by { |k,| k }.each do |name, reason|
|
|
777
|
-
opt.banner += " %*1$2$s %3$s\n" % [-name_length, name, reason]
|
|
778
|
-
end
|
|
779
|
-
|
|
780
767
|
opt.accept Template do |template|
|
|
781
768
|
template_dir = template_dir_for template
|
|
782
769
|
|
|
@@ -913,7 +900,7 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
913
900
|
|
|
914
901
|
opt.separator nil
|
|
915
902
|
|
|
916
|
-
opt.on("--visibility=VISIBILITY",
|
|
903
|
+
opt.on("--visibility=VISIBILITY", RDoc::VISIBILITIES + [:nodoc],
|
|
917
904
|
"Minimum visibility to document a method.",
|
|
918
905
|
"One of 'public', 'protected' (the default),",
|
|
919
906
|
"'private' or 'nodoc' (show everything)") do |value|
|
|
@@ -1013,14 +1000,6 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
1013
1000
|
@op_dir = value
|
|
1014
1001
|
end
|
|
1015
1002
|
|
|
1016
|
-
opt.separator nil
|
|
1017
|
-
|
|
1018
|
-
opt.on("-d",
|
|
1019
|
-
"Deprecated --diagram option.",
|
|
1020
|
-
"Prevents firing debug mode",
|
|
1021
|
-
"with legacy invocation.") do |value|
|
|
1022
|
-
end
|
|
1023
|
-
|
|
1024
1003
|
opt.separator nil
|
|
1025
1004
|
opt.separator 'HTML generator options:'
|
|
1026
1005
|
opt.separator nil
|
|
@@ -1158,6 +1137,15 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
1158
1137
|
opt.separator "Generic options:"
|
|
1159
1138
|
opt.separator nil
|
|
1160
1139
|
|
|
1140
|
+
opt.on("--server[=PORT]", Integer,
|
|
1141
|
+
"Start a web server to preview",
|
|
1142
|
+
"documentation with live reload.",
|
|
1143
|
+
"Defaults to port 4000.") do |port|
|
|
1144
|
+
@server_port = port || 4000
|
|
1145
|
+
end
|
|
1146
|
+
|
|
1147
|
+
opt.separator nil
|
|
1148
|
+
|
|
1161
1149
|
opt.on("--write-options",
|
|
1162
1150
|
"Write .rdoc_options to the current",
|
|
1163
1151
|
"directory with the given options. Not all",
|
|
@@ -1230,15 +1218,12 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
1230
1218
|
opt.separator nil
|
|
1231
1219
|
end
|
|
1232
1220
|
|
|
1233
|
-
deprecated = []
|
|
1234
1221
|
invalid = []
|
|
1235
1222
|
|
|
1236
1223
|
begin
|
|
1237
1224
|
opts.parse! argv
|
|
1238
1225
|
rescue OptionParser::ParseError => e
|
|
1239
|
-
if
|
|
1240
|
-
deprecated << e.args.first
|
|
1241
|
-
elsif %w[--format --ri -r --ri-site -R].include? e.args.first then
|
|
1226
|
+
if %w[--format --ri -r --ri-site -R].include? e.args.first then
|
|
1242
1227
|
raise
|
|
1243
1228
|
else
|
|
1244
1229
|
invalid << e.args.join(' ')
|
|
@@ -1254,12 +1239,6 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
1254
1239
|
invalid << '-p (with files)'
|
|
1255
1240
|
end
|
|
1256
1241
|
|
|
1257
|
-
unless quiet then
|
|
1258
|
-
deprecated.each do |opt|
|
|
1259
|
-
$stderr.puts 'option ' + opt + ' is deprecated: ' + DEPRECATED[opt]
|
|
1260
|
-
end
|
|
1261
|
-
end
|
|
1262
|
-
|
|
1263
1242
|
unless invalid.empty? then
|
|
1264
1243
|
invalid = "invalid options: #{invalid.join ', '}"
|
|
1265
1244
|
|
|
@@ -1405,10 +1384,16 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
1405
1384
|
|
|
1406
1385
|
RDoc.load_yaml
|
|
1407
1386
|
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1387
|
+
content = File.read('.rdoc_options')
|
|
1388
|
+
|
|
1389
|
+
if defined?(Psych)
|
|
1390
|
+
begin
|
|
1391
|
+
options = Psych.safe_load content, permitted_classes: [RDoc::Options, Symbol]
|
|
1392
|
+
rescue Psych::SyntaxError
|
|
1393
|
+
raise RDoc::Error, "#{options_file} is not a valid rdoc options file"
|
|
1394
|
+
end
|
|
1395
|
+
else
|
|
1396
|
+
options = RDoc.yaml_serializer.load(content)
|
|
1412
1397
|
end
|
|
1413
1398
|
|
|
1414
1399
|
return RDoc::Options.new unless options # Allow empty file.
|
data/lib/rdoc/parser/c.rb
CHANGED
|
@@ -248,7 +248,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
248
248
|
# method that reference the same function.
|
|
249
249
|
|
|
250
250
|
def add_alias(var_name, class_obj, old_name, new_name, comment)
|
|
251
|
-
al = RDoc::Alias.new
|
|
251
|
+
al = RDoc::Alias.new old_name, new_name, comment, singleton: @singleton_classes.key?(var_name)
|
|
252
252
|
al.record_location @top_level
|
|
253
253
|
class_obj.add_alias al
|
|
254
254
|
@stats.add_alias al
|
|
@@ -683,6 +683,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
683
683
|
container.name = base_name if base_name
|
|
684
684
|
|
|
685
685
|
container.record_location @top_level
|
|
686
|
+
@top_level.add_to_classes_or_modules container
|
|
686
687
|
@classes[raw_name] = container
|
|
687
688
|
end
|
|
688
689
|
@classes[raw_name]
|
|
@@ -847,7 +848,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
847
848
|
|
|
848
849
|
name = attr_name.gsub(/rb_intern(?:_const)?\("([^"]+)"\)/, '\1')
|
|
849
850
|
|
|
850
|
-
attr = RDoc::Attr.new
|
|
851
|
+
attr = RDoc::Attr.new name, rw, comment
|
|
851
852
|
|
|
852
853
|
attr.record_location @top_level
|
|
853
854
|
class_obj.add_attribute attr
|
|
@@ -898,6 +899,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
898
899
|
end
|
|
899
900
|
|
|
900
901
|
cm.record_location enclosure.top_level
|
|
902
|
+
enclosure.top_level.add_to_classes_or_modules cm
|
|
901
903
|
|
|
902
904
|
find_class_comment cm.full_name, cm
|
|
903
905
|
|
|
@@ -1005,7 +1007,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
1005
1007
|
end
|
|
1006
1008
|
|
|
1007
1009
|
singleton = singleton || %w[singleton_method module_function].include?(type)
|
|
1008
|
-
meth_obj = RDoc::AnyMethod.new
|
|
1010
|
+
meth_obj = RDoc::AnyMethod.new meth_name, singleton: singleton
|
|
1009
1011
|
meth_obj.c_function = function
|
|
1010
1012
|
|
|
1011
1013
|
p_count = Integer(param_count) rescue -1
|
|
@@ -1014,7 +1016,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
1014
1016
|
file_name = File.join @file_dir, source_file
|
|
1015
1017
|
|
|
1016
1018
|
if File.exist? file_name then
|
|
1017
|
-
file_content =
|
|
1019
|
+
file_content = RDoc::Encoding.read_file file_name, @options.encoding
|
|
1018
1020
|
else
|
|
1019
1021
|
@options.warn "unknown source #{source_file} for #{meth_name} in #{@file_name}"
|
|
1020
1022
|
end
|
|
@@ -1089,11 +1091,10 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
1089
1091
|
# Look for directives in a normal comment block:
|
|
1090
1092
|
#
|
|
1091
1093
|
# /*
|
|
1092
|
-
# * :
|
|
1094
|
+
# * :nodoc:
|
|
1093
1095
|
# */
|
|
1094
1096
|
#
|
|
1095
1097
|
# This method modifies the +comment+
|
|
1096
|
-
# Both :main: and :title: directives are deprecated and will be removed in RDoc 7.
|
|
1097
1098
|
|
|
1098
1099
|
def look_for_directives_in(context, comment)
|
|
1099
1100
|
comment.text, format = @preprocess.run_pre_processes(comment.text, context, comment.line || 1, :c)
|