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.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +3 -4
  3. data/LICENSE.rdoc +4 -0
  4. data/README.md +43 -2
  5. data/doc/markup_reference/markdown.md +104 -3
  6. data/lib/rdoc/code_object/alias.rb +2 -8
  7. data/lib/rdoc/code_object/any_method.rb +11 -6
  8. data/lib/rdoc/code_object/attr.rb +12 -6
  9. data/lib/rdoc/code_object/class_module.rb +62 -32
  10. data/lib/rdoc/code_object/constant.rb +29 -3
  11. data/lib/rdoc/code_object/context/section.rb +30 -43
  12. data/lib/rdoc/code_object/context.rb +53 -37
  13. data/lib/rdoc/code_object/method_attr.rb +9 -15
  14. data/lib/rdoc/code_object/mixin.rb +3 -0
  15. data/lib/rdoc/code_object/top_level.rb +11 -3
  16. data/lib/rdoc/code_object.rb +2 -4
  17. data/lib/rdoc/comment.rb +1 -66
  18. data/lib/rdoc/cross_reference.rb +8 -30
  19. data/lib/rdoc/encoding.rb +3 -3
  20. data/lib/rdoc/generator/aliki.rb +17 -0
  21. data/lib/rdoc/generator/darkfish.rb +12 -6
  22. data/lib/rdoc/generator/json_index.rb +2 -2
  23. data/lib/rdoc/generator/markup.rb +56 -31
  24. data/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
  25. data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +1 -1
  26. data/lib/rdoc/generator/template/aliki/_head.rhtml +6 -1
  27. data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +8 -6
  28. data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +8 -6
  29. data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +1 -1
  30. data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +2 -2
  31. data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +1 -1
  32. data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +1 -1
  33. data/lib/rdoc/generator/template/aliki/class.rhtml +61 -51
  34. data/lib/rdoc/generator/template/aliki/css/rdoc.css +365 -147
  35. data/lib/rdoc/generator/template/aliki/index.rhtml +1 -1
  36. data/lib/rdoc/generator/template/aliki/js/aliki.js +28 -20
  37. data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
  38. data/lib/rdoc/generator/template/aliki/js/search_controller.js +1 -1
  39. data/lib/rdoc/generator/template/aliki/page.rhtml +1 -1
  40. data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +1 -1
  41. data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +2 -2
  42. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +8 -6
  43. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +8 -6
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +1 -1
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +1 -1
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +1 -1
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +5 -5
  48. data/lib/rdoc/generator/template/darkfish/class.rhtml +18 -21
  49. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +0 -1
  50. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +3 -3
  51. data/lib/rdoc/i18n/text.rb +3 -3
  52. data/lib/rdoc/markdown.kpeg +36 -17
  53. data/lib/rdoc/markdown.rb +324 -125
  54. data/lib/rdoc/markup/document.rb +2 -2
  55. data/lib/rdoc/markup/formatter.rb +128 -115
  56. data/lib/rdoc/markup/heading.rb +3 -6
  57. data/lib/rdoc/markup/indented_paragraph.rb +1 -1
  58. data/lib/rdoc/markup/inline_parser.rb +312 -0
  59. data/lib/rdoc/markup/list.rb +2 -2
  60. data/lib/rdoc/markup/list_item.rb +2 -2
  61. data/lib/rdoc/markup/parser.rb +1 -1
  62. data/lib/rdoc/markup/pre_process.rb +0 -25
  63. data/lib/rdoc/markup/to_ansi.rb +52 -5
  64. data/lib/rdoc/markup/to_bs.rb +23 -43
  65. data/lib/rdoc/markup/to_html.rb +279 -226
  66. data/lib/rdoc/markup/to_html_crossref.rb +122 -136
  67. data/lib/rdoc/markup/to_html_snippet.rb +65 -65
  68. data/lib/rdoc/markup/to_joined_paragraph.rb +0 -5
  69. data/lib/rdoc/markup/to_label.rb +22 -23
  70. data/lib/rdoc/markup/to_markdown.rb +62 -38
  71. data/lib/rdoc/markup/to_rdoc.rb +88 -28
  72. data/lib/rdoc/markup/to_table_of_contents.rb +1 -1
  73. data/lib/rdoc/markup/to_test.rb +9 -1
  74. data/lib/rdoc/markup/to_tt_only.rb +10 -23
  75. data/lib/rdoc/markup/verbatim.rb +1 -1
  76. data/lib/rdoc/markup.rb +8 -30
  77. data/lib/rdoc/options.rb +36 -51
  78. data/lib/rdoc/parser/c.rb +7 -6
  79. data/lib/rdoc/parser/changelog.rb +21 -0
  80. data/lib/rdoc/parser/rbs.rb +275 -0
  81. data/lib/rdoc/parser/ruby.rb +955 -2067
  82. data/lib/rdoc/parser/ruby_colorizer.rb +253 -0
  83. data/lib/rdoc/parser.rb +3 -2
  84. data/lib/rdoc/rbs_helper.rb +186 -0
  85. data/lib/rdoc/rdoc.rb +196 -24
  86. data/lib/rdoc/ri/driver.rb +8 -2
  87. data/lib/rdoc/ri/paths.rb +1 -1
  88. data/lib/rdoc/{servlet.rb → ri/servlet.rb} +5 -5
  89. data/lib/rdoc/ri.rb +4 -3
  90. data/lib/rdoc/rubygems_hook.rb +11 -11
  91. data/lib/rdoc/server.rb +460 -0
  92. data/lib/rdoc/stats.rb +147 -124
  93. data/lib/rdoc/store.rb +212 -4
  94. data/lib/rdoc/task.rb +16 -15
  95. data/lib/rdoc/text.rb +24 -117
  96. data/lib/rdoc/token_stream.rb +11 -33
  97. data/lib/rdoc/version.rb +1 -1
  98. data/lib/rdoc.rb +35 -7
  99. data/lib/rubygems_plugin.rb +2 -11
  100. data/rdoc-logo.svg +43 -0
  101. data/rdoc.gemspec +6 -4
  102. metadata +37 -23
  103. data/lib/rdoc/code_object/anon_class.rb +0 -10
  104. data/lib/rdoc/code_object/ghost_method.rb +0 -6
  105. data/lib/rdoc/code_object/meta_method.rb +0 -6
  106. data/lib/rdoc/markup/attr_changer.rb +0 -22
  107. data/lib/rdoc/markup/attr_span.rb +0 -35
  108. data/lib/rdoc/markup/attribute_manager.rb +0 -432
  109. data/lib/rdoc/markup/attributes.rb +0 -70
  110. data/lib/rdoc/markup/regexp_handling.rb +0 -40
  111. data/lib/rdoc/parser/prism_ruby.rb +0 -1100
  112. data/lib/rdoc/parser/ripper_state_lex.rb +0 -302
  113. 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(markup = nil)
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(target)
188
- handle_rdoc_link target.text
211
+ def handle_regexp_RDOCLINK(text)
212
+ handle_rdoc_link text
189
213
  end
190
214
 
191
215
  end
@@ -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(markup = nil)
56
- super nil, markup
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 << row.zip(widths, aligns).map do |t, w, a|
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::AttributeManager
356
+ # Applies attribute-specific markup to +text+ using RDoc::Markup::InlineParser
287
357
 
288
358
  def attributes(text)
289
- flow = @am.flow text.dup
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(target)
304
- text = target.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
  ##
@@ -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 nil
28
+ super
29
29
 
30
30
  @omit_headings_below = nil
31
31
  end
@@ -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
- @res << convert_flow(@am.flow(paragraph.text))
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
- flow = @am.flow text.dup
86
-
87
- flow.each do |item|
88
- case item
89
- when String then
90
- @res << item if in_tt?
91
- when RDoc::Markup::AttrChanger then
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
- raise "Unknown flow element: #{item.inspect}"
84
+ node[:children].each(&traverse)
98
85
  end
99
- end
100
-
86
+ }
87
+ parsed.each(&traverse)
101
88
  res
102
89
  end
103
90
 
@@ -9,7 +9,7 @@ class RDoc::Markup::Verbatim < RDoc::Markup::Raw
9
9
 
10
10
  attr_accessor :format
11
11
 
12
- def initialize *parts # :nodoc:
12
+ def initialize(*parts) # :nodoc:
13
13
  super
14
14
 
15
15
  @format = nil
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.text + "</font>"
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
- # An AttributeManager which handles inline markup.
113
+ # Array of regexp handling pattern and its name. A regexp handling
114
+ # sequence is something like a WikiWord
115
115
 
116
- attr_reader :attribute_manager
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(attribute_manager = nil)
152
- @attribute_manager = attribute_manager || RDoc::Markup::AttributeManager.new
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
- @attribute_manager.add_regexp_handling(pattern, name)
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
- yaml.to_yaml
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", "-V", RDoc::VISIBILITIES + [:nodoc],
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 DEPRECATED[e.args.first] then
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
- begin
1409
- options = YAML.safe_load File.read('.rdoc_options'), permitted_classes: [RDoc::Options, Symbol]
1410
- rescue Psych::SyntaxError
1411
- raise RDoc::Error, "#{options_file} is not a valid rdoc options file"
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 '', old_name, new_name, comment, singleton: @singleton_classes.key?(var_name)
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 '', name, rw, comment
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 '', meth_name, singleton: singleton
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 = File.read file_name
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
- # * :title: My Awesome Project
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)