rdoc 6.10.0 → 6.12.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/lib/rdoc/code_object/any_method.rb +3 -3
- data/lib/rdoc/code_object/attr.rb +1 -1
- data/lib/rdoc/code_object/class_module.rb +14 -11
- data/lib/rdoc/code_object/constant.rb +1 -1
- data/lib/rdoc/code_object/context/section.rb +10 -68
- data/lib/rdoc/code_object/top_level.rb +1 -1
- data/lib/rdoc/code_object.rb +0 -1
- data/lib/rdoc/comment.rb +11 -1
- data/lib/rdoc/generator/darkfish.rb +8 -12
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +4 -4
- data/lib/rdoc/markup/to_html_crossref.rb +2 -0
- data/lib/rdoc/options.rb +41 -8
- data/lib/rdoc/parser/c.rb +1 -1
- data/lib/rdoc/parser/changelog.rb +3 -2
- data/lib/rdoc/parser/prism_ruby.rb +104 -31
- data/lib/rdoc/parser/ruby.rb +1 -1
- data/lib/rdoc/parser/simple.rb +1 -1
- data/lib/rdoc/parser.rb +3 -3
- data/lib/rdoc/ri/driver.rb +17 -16
- data/lib/rdoc/rubygems_hook.rb +18 -2
- data/lib/rdoc/version.rb +1 -1
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7a81c2ecc4bf154e3dd627e46fb8128cd9b953b2d5108c95fab803049a45fe1
|
4
|
+
data.tar.gz: 6307f1c96724b63e01642814567c798f8a2f5e268c105429cf64c92581bec632
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3aa0ba6de344876c71c6a749795d81854718397741fe5c9c910b9f43da039cf383130451a6ea779575069b61c5b618f9dae40c8fdc9fddec7bc90a36e1ae8b55
|
7
|
+
data.tar.gz: ff19a385007977c9a7234e87181982d5a96c3c80bc5f8b79e5ae95aeda6a75348ece0a76c8d18ea21b55826a7c2471307bfd1eb4d6f15fcee49812ed3458b66d
|
@@ -198,7 +198,7 @@ class RDoc::AnyMethod < RDoc::MethodAttr
|
|
198
198
|
@full_name = array[2]
|
199
199
|
@singleton = array[3]
|
200
200
|
@visibility = array[4]
|
201
|
-
@comment = array[5]
|
201
|
+
@comment = RDoc::Comment.from_document array[5]
|
202
202
|
@call_seq = array[6]
|
203
203
|
@block_params = array[7]
|
204
204
|
# 8 handled below
|
@@ -210,8 +210,8 @@ class RDoc::AnyMethod < RDoc::MethodAttr
|
|
210
210
|
@section_title = array[14]
|
211
211
|
@is_alias_for = array[15]
|
212
212
|
|
213
|
-
array[8].each do |new_name,
|
214
|
-
add_alias RDoc::Alias.new(nil, @name, new_name,
|
213
|
+
array[8].each do |new_name, document|
|
214
|
+
add_alias RDoc::Alias.new(nil, @name, new_name, RDoc::Comment.from_document(document), @singleton)
|
215
215
|
end
|
216
216
|
|
217
217
|
@parent_name ||= if @full_name =~ /#/ then
|
@@ -136,7 +136,7 @@ class RDoc::Attr < RDoc::MethodAttr
|
|
136
136
|
@full_name = array[2]
|
137
137
|
@rw = array[3]
|
138
138
|
@visibility = array[4]
|
139
|
-
@comment = array[5]
|
139
|
+
@comment = RDoc::Comment.from_document array[5]
|
140
140
|
@singleton = array[6] || false # MARSHAL_VERSION == 0
|
141
141
|
# 7 handled below
|
142
142
|
@parent_name = array[8]
|
@@ -359,12 +359,14 @@ class RDoc::ClassModule < RDoc::Context
|
|
359
359
|
@name = array[1]
|
360
360
|
@full_name = array[2]
|
361
361
|
@superclass = array[3]
|
362
|
-
|
362
|
+
document = array[4]
|
363
363
|
|
364
|
-
@
|
365
|
-
|
364
|
+
@comment = RDoc::Comment.from_document document
|
365
|
+
|
366
|
+
@comment_location = if RDoc::Markup::Document === document.parts.first then
|
367
|
+
document
|
366
368
|
else
|
367
|
-
RDoc::Markup::Document.new
|
369
|
+
RDoc::Markup::Document.new document
|
368
370
|
end
|
369
371
|
|
370
372
|
array[5].each do |name, rw, visibility, singleton, file|
|
@@ -378,18 +380,18 @@ class RDoc::ClassModule < RDoc::Context
|
|
378
380
|
attr.record_location RDoc::TopLevel.new file
|
379
381
|
end
|
380
382
|
|
381
|
-
array[6].each do |constant,
|
383
|
+
array[6].each do |constant, document, file|
|
382
384
|
case constant
|
383
385
|
when RDoc::Constant then
|
384
386
|
add_constant constant
|
385
387
|
else
|
386
|
-
constant = add_constant RDoc::Constant.new(constant, nil,
|
388
|
+
constant = add_constant RDoc::Constant.new(constant, nil, RDoc::Comment.from_document(document))
|
387
389
|
constant.record_location RDoc::TopLevel.new file
|
388
390
|
end
|
389
391
|
end
|
390
392
|
|
391
|
-
array[7].each do |name,
|
392
|
-
incl = add_include RDoc::Include.new(name,
|
393
|
+
array[7].each do |name, document, file|
|
394
|
+
incl = add_include RDoc::Include.new(name, RDoc::Comment.from_document(document))
|
393
395
|
incl.record_location RDoc::TopLevel.new file
|
394
396
|
end
|
395
397
|
|
@@ -406,8 +408,8 @@ class RDoc::ClassModule < RDoc::Context
|
|
406
408
|
end
|
407
409
|
end
|
408
410
|
|
409
|
-
array[9].each do |name,
|
410
|
-
ext = add_extend RDoc::Extend.new(name,
|
411
|
+
array[9].each do |name, document, file|
|
412
|
+
ext = add_extend RDoc::Extend.new(name, RDoc::Comment.from_document(document))
|
411
413
|
ext.record_location RDoc::TopLevel.new file
|
412
414
|
end if array[9] # Support Marshal version 1
|
413
415
|
|
@@ -444,7 +446,8 @@ class RDoc::ClassModule < RDoc::Context
|
|
444
446
|
|
445
447
|
document = document.merge other_document
|
446
448
|
|
447
|
-
@comment =
|
449
|
+
@comment = RDoc::Comment.from_document(document)
|
450
|
+
@comment_location = document
|
448
451
|
end
|
449
452
|
|
450
453
|
cm = class_module
|
@@ -133,7 +133,7 @@ class RDoc::Constant < RDoc::CodeObject
|
|
133
133
|
# * #parent_name
|
134
134
|
|
135
135
|
def marshal_load array
|
136
|
-
initialize array[1], nil, array[5]
|
136
|
+
initialize array[1], nil, RDoc::Comment.from_document(array[5])
|
137
137
|
|
138
138
|
@full_name = array[2]
|
139
139
|
@visibility = array[3] || :public
|
@@ -61,19 +61,10 @@ class RDoc::Context::Section
|
|
61
61
|
# Adds +comment+ to this section
|
62
62
|
|
63
63
|
def add_comment comment
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
case comment
|
69
|
-
when RDoc::Comment then
|
70
|
-
@comments << comment
|
71
|
-
when RDoc::Markup::Document then
|
72
|
-
@comments.concat comment.parts
|
73
|
-
when Array then
|
74
|
-
@comments.concat comment
|
75
|
-
else
|
76
|
-
raise TypeError, "unknown comment type: #{comment.inspect}"
|
64
|
+
comments = Array(comment)
|
65
|
+
comments.each do |c|
|
66
|
+
extracted_comment = extract_comment(c)
|
67
|
+
@comments << extracted_comment unless extracted_comment.empty?
|
77
68
|
end
|
78
69
|
end
|
79
70
|
|
@@ -97,10 +88,6 @@ class RDoc::Context::Section
|
|
97
88
|
|
98
89
|
def extract_comment comment
|
99
90
|
case comment
|
100
|
-
when Array then
|
101
|
-
comment.map do |c|
|
102
|
-
extract_comment c
|
103
|
-
end
|
104
91
|
when nil
|
105
92
|
RDoc::Comment.new ''
|
106
93
|
when RDoc::Comment then
|
@@ -115,8 +102,6 @@ class RDoc::Context::Section
|
|
115
102
|
end
|
116
103
|
end
|
117
104
|
|
118
|
-
comment
|
119
|
-
when RDoc::Markup::Document then
|
120
105
|
comment
|
121
106
|
else
|
122
107
|
raise TypeError, "unknown comment #{comment.inspect}"
|
@@ -135,20 +120,7 @@ class RDoc::Context::Section
|
|
135
120
|
# The files comments in this section come from
|
136
121
|
|
137
122
|
def in_files
|
138
|
-
|
139
|
-
|
140
|
-
case @comments
|
141
|
-
when Array then
|
142
|
-
@comments.map do |comment|
|
143
|
-
comment.file
|
144
|
-
end
|
145
|
-
when RDoc::Markup::Document then
|
146
|
-
@comment.parts.map do |document|
|
147
|
-
document.file
|
148
|
-
end
|
149
|
-
else
|
150
|
-
raise RDoc::Error, "BUG: unknown comment class #{@comments.class}"
|
151
|
-
end
|
123
|
+
@comments.map(&:file)
|
152
124
|
end
|
153
125
|
|
154
126
|
##
|
@@ -170,7 +142,7 @@ class RDoc::Context::Section
|
|
170
142
|
@parent = nil
|
171
143
|
|
172
144
|
@title = array[1]
|
173
|
-
@comments = array[2]
|
145
|
+
@comments = array[2].parts.map { |doc| RDoc::Comment.from_document(doc) }
|
174
146
|
end
|
175
147
|
|
176
148
|
##
|
@@ -178,26 +150,7 @@ class RDoc::Context::Section
|
|
178
150
|
# multiple RDoc::Markup::Documents with their file set.
|
179
151
|
|
180
152
|
def parse
|
181
|
-
|
182
|
-
when String then
|
183
|
-
super
|
184
|
-
when Array then
|
185
|
-
docs = @comments.map do |comment, location|
|
186
|
-
doc = super comment
|
187
|
-
doc.file = location if location
|
188
|
-
doc
|
189
|
-
end
|
190
|
-
|
191
|
-
RDoc::Markup::Document.new(*docs)
|
192
|
-
when RDoc::Comment then
|
193
|
-
doc = super @comments.text, comments.format
|
194
|
-
doc.file = @comments.location
|
195
|
-
doc
|
196
|
-
when RDoc::Markup::Document then
|
197
|
-
return @comments
|
198
|
-
else
|
199
|
-
raise ArgumentError, "unknown comment class #{comments.class}"
|
200
|
-
end
|
153
|
+
RDoc::Markup::Document.new(*@comments.map(&:parse))
|
201
154
|
end
|
202
155
|
|
203
156
|
##
|
@@ -213,20 +166,9 @@ class RDoc::Context::Section
|
|
213
166
|
# Removes a comment from this section if it is from the same file as
|
214
167
|
# +comment+
|
215
168
|
|
216
|
-
def remove_comment
|
217
|
-
|
218
|
-
|
219
|
-
case @comments
|
220
|
-
when Array then
|
221
|
-
@comments.delete_if do |my_comment|
|
222
|
-
my_comment.file == comment.file
|
223
|
-
end
|
224
|
-
when RDoc::Markup::Document then
|
225
|
-
@comments.parts.delete_if do |document|
|
226
|
-
document.file == comment.file.name
|
227
|
-
end
|
228
|
-
else
|
229
|
-
raise RDoc::Error, "BUG: unknown comment class #{@comments.class}"
|
169
|
+
def remove_comment target_comment
|
170
|
+
@comments.delete_if do |stored_comment|
|
171
|
+
stored_comment.file == target_comment.file
|
230
172
|
end
|
231
173
|
end
|
232
174
|
|
data/lib/rdoc/code_object.rb
CHANGED
data/lib/rdoc/comment.rb
CHANGED
@@ -126,7 +126,7 @@ class RDoc::Comment
|
|
126
126
|
# A comment is empty if its text String is empty.
|
127
127
|
|
128
128
|
def empty?
|
129
|
-
@text.empty?
|
129
|
+
@text.empty? && (@document.nil? || @document.empty?)
|
130
130
|
end
|
131
131
|
|
132
132
|
##
|
@@ -226,4 +226,14 @@ class RDoc::Comment
|
|
226
226
|
@format == 'tomdoc'
|
227
227
|
end
|
228
228
|
|
229
|
+
##
|
230
|
+
# Create a new parsed comment from a document
|
231
|
+
|
232
|
+
def self.from_document(document) # :nodoc:
|
233
|
+
comment = RDoc::Comment.new('')
|
234
|
+
comment.document = document
|
235
|
+
comment.location = RDoc::TopLevel.new(document.file) if document.file
|
236
|
+
comment
|
237
|
+
end
|
238
|
+
|
229
239
|
end
|
@@ -316,11 +316,14 @@ class RDoc::Generator::Darkfish
|
|
316
316
|
asset_rel_prefix = rel_prefix + @asset_rel_path
|
317
317
|
|
318
318
|
@title = @options.title
|
319
|
+
@main_page = @files.find { |f| f.full_name == @options.main_page }
|
319
320
|
|
320
321
|
render_template template_file, out_file do |io|
|
321
322
|
here = binding
|
322
323
|
# suppress 1.9.3 warning
|
323
324
|
here.local_variable_set(:asset_rel_prefix, asset_rel_prefix)
|
325
|
+
# some partials rely on the presence of current variable to render
|
326
|
+
here.local_variable_set(:current, @main_page) if @main_page
|
324
327
|
here
|
325
328
|
end
|
326
329
|
rescue => e
|
@@ -780,20 +783,13 @@ class RDoc::Generator::Darkfish
|
|
780
783
|
template
|
781
784
|
end
|
782
785
|
|
783
|
-
# Returns an excerpt of the
|
784
|
-
def excerpt(
|
785
|
-
text = case
|
786
|
+
# Returns an excerpt of the comment for usage in meta description tags
|
787
|
+
def excerpt(comment)
|
788
|
+
text = case comment
|
786
789
|
when RDoc::Comment
|
787
|
-
|
788
|
-
when RDoc::Markup::Document
|
789
|
-
# This case is for page files that are not markdown nor rdoc
|
790
|
-
# We convert them to markdown for now as it's easier to extract the text
|
791
|
-
formatter = RDoc::Markup::ToMarkdown.new
|
792
|
-
formatter.start_accepting
|
793
|
-
formatter.accept_document(content)
|
794
|
-
formatter.end_accepting
|
790
|
+
comment.text
|
795
791
|
else
|
796
|
-
|
792
|
+
comment
|
797
793
|
end
|
798
794
|
|
799
795
|
# Match from a capital letter to the first period, discarding any links, so
|
@@ -18,6 +18,7 @@
|
|
18
18
|
solo = top.one? {|klass| klass.display?}
|
19
19
|
traverse = proc do |klasses| -%>
|
20
20
|
<ul class="link-list">
|
21
|
+
<%- klasses.uniq!(&:full_name) -%>
|
21
22
|
<%- klasses.each do |index_klass| -%>
|
22
23
|
<%- if children = all_classes[index_klass.full_name] -%>
|
23
24
|
<li><details<% if solo; solo = false %> open<% end %>><summary><% link.call(index_klass) %></summary>
|
@@ -7,6 +7,7 @@
|
|
7
7
|
<%= render '_sidebar_search.rhtml' %>
|
8
8
|
</div>
|
9
9
|
|
10
|
+
<%= render '_sidebar_table_of_contents.rhtml' if defined?(current) %>
|
10
11
|
<%= render '_sidebar_pages.rhtml' %>
|
11
12
|
<%= render '_sidebar_classes.rhtml' %>
|
12
13
|
|
@@ -14,10 +15,9 @@
|
|
14
15
|
</nav>
|
15
16
|
|
16
17
|
<main role="main">
|
17
|
-
<%- if @
|
18
|
-
|
19
|
-
<%= main_page.description %>
|
18
|
+
<%- if @main_page %>
|
19
|
+
<%= @main_page.description %>
|
20
20
|
<%- else -%>
|
21
|
-
<p>This is the API documentation for <%= h @title %>.
|
21
|
+
<p>This is the API documentation for <%= h @title %>.
|
22
22
|
<%- end -%>
|
23
23
|
</main>
|
@@ -83,6 +83,8 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
|
|
83
83
|
def handle_regexp_CROSSREF(target)
|
84
84
|
name = target.text
|
85
85
|
|
86
|
+
return name if @options.autolink_excluded_words&.include?(name)
|
87
|
+
|
86
88
|
return name if name =~ /@[\w-]+\.[\w-]/ # labels that look like emails
|
87
89
|
|
88
90
|
unless @hyperlink_all then
|
data/lib/rdoc/options.rb
CHANGED
@@ -355,18 +355,29 @@ class RDoc::Options
|
|
355
355
|
# +--[no-]embed-mixins+ (Default is +false+.)
|
356
356
|
attr_accessor :embed_mixins
|
357
357
|
|
358
|
+
##
|
359
|
+
# Exclude the default patterns as well if true.
|
360
|
+
attr_reader :apply_default_exclude
|
361
|
+
|
362
|
+
##
|
363
|
+
# Words to be ignored in autolink cross-references
|
364
|
+
attr_accessor :autolink_excluded_words
|
365
|
+
|
358
366
|
def initialize loaded_options = nil # :nodoc:
|
359
367
|
init_ivars
|
360
368
|
override loaded_options if loaded_options
|
361
369
|
end
|
362
370
|
|
371
|
+
DEFAULT_EXCLUDE = %w[
|
372
|
+
~\z \.orig\z \.rej\z \.bak\z
|
373
|
+
\.gemspec\z
|
374
|
+
]
|
375
|
+
|
363
376
|
def init_ivars # :nodoc:
|
377
|
+
@autolink_excluded_words = []
|
364
378
|
@dry_run = false
|
365
379
|
@embed_mixins = false
|
366
|
-
@exclude =
|
367
|
-
~\z \.orig\z \.rej\z \.bak\z
|
368
|
-
\.gemspec\z
|
369
|
-
]
|
380
|
+
@exclude = []
|
370
381
|
@files = nil
|
371
382
|
@force_output = false
|
372
383
|
@force_update = true
|
@@ -399,12 +410,13 @@ class RDoc::Options
|
|
399
410
|
@update_output_dir = true
|
400
411
|
@verbosity = 1
|
401
412
|
@visibility = :protected
|
402
|
-
@warn_missing_rdoc_ref =
|
413
|
+
@warn_missing_rdoc_ref = true
|
403
414
|
@webcvs = nil
|
404
415
|
@write_options = false
|
405
416
|
@encoding = Encoding::UTF_8
|
406
417
|
@charset = @encoding.name
|
407
418
|
@skip_tests = true
|
419
|
+
@apply_default_exclude = true
|
408
420
|
end
|
409
421
|
|
410
422
|
def init_with map # :nodoc:
|
@@ -431,6 +443,9 @@ class RDoc::Options
|
|
431
443
|
@visibility = map['visibility']
|
432
444
|
@webcvs = map['webcvs']
|
433
445
|
|
446
|
+
@apply_default_exclude = map['apply_default_exclude']
|
447
|
+
@autolink_excluded_words = map['autolink_excluded_words']
|
448
|
+
|
434
449
|
@rdoc_include = sanitize_path map['rdoc_include']
|
435
450
|
@static_path = sanitize_path map['static_path']
|
436
451
|
end
|
@@ -463,6 +478,8 @@ class RDoc::Options
|
|
463
478
|
@title = map['title'] if map.has_key?('title')
|
464
479
|
@visibility = map['visibility'] if map.has_key?('visibility')
|
465
480
|
@webcvs = map['webcvs'] if map.has_key?('webcvs')
|
481
|
+
@autolink_excluded_words = map['autolink_excluded_words'] if map.has_key?('autolink_excluded_words')
|
482
|
+
@apply_default_exclude = map['apply_default_exclude'] if map.has_key?('apply_default_exclude')
|
466
483
|
|
467
484
|
@warn_missing_rdoc_ref = map['warn_missing_rdoc_ref'] if map.has_key?('warn_missing_rdoc_ref')
|
468
485
|
|
@@ -493,7 +510,9 @@ class RDoc::Options
|
|
493
510
|
@template == other.template and
|
494
511
|
@title == other.title and
|
495
512
|
@visibility == other.visibility and
|
496
|
-
@webcvs == other.webcvs
|
513
|
+
@webcvs == other.webcvs and
|
514
|
+
@apply_default_exclude == other.apply_default_exclude and
|
515
|
+
@autolink_excluded_words == other.autolink_excluded_words
|
497
516
|
end
|
498
517
|
|
499
518
|
##
|
@@ -564,10 +583,12 @@ class RDoc::Options
|
|
564
583
|
if @exclude.nil? or Regexp === @exclude then
|
565
584
|
# done, #finish is being re-run
|
566
585
|
@exclude
|
567
|
-
elsif @exclude.empty? then
|
586
|
+
elsif !@apply_default_exclude and @exclude.empty? then
|
568
587
|
nil
|
569
588
|
else
|
570
|
-
|
589
|
+
exclude = @exclude
|
590
|
+
exclude |= DEFAULT_EXCLUDE if @apply_default_exclude
|
591
|
+
Regexp.new(exclude.join("|"))
|
571
592
|
end
|
572
593
|
end
|
573
594
|
|
@@ -801,6 +822,11 @@ Usage: #{opt.program_name} [options] [names...]
|
|
801
822
|
@exclude << value
|
802
823
|
end
|
803
824
|
|
825
|
+
opt.on("--[no-]apply-default-exclude",
|
826
|
+
"Use default PATTERN to exclude.") do |value|
|
827
|
+
@apply_default_exclude = value
|
828
|
+
end
|
829
|
+
|
804
830
|
opt.separator nil
|
805
831
|
|
806
832
|
opt.on("--no-skipping-tests", nil,
|
@@ -972,6 +998,13 @@ Usage: #{opt.program_name} [options] [names...]
|
|
972
998
|
|
973
999
|
opt.separator nil
|
974
1000
|
|
1001
|
+
opt.on("--autolink-excluded-words=WORDS", Array,
|
1002
|
+
"Words to be ignored in autolink cross-references") do |value|
|
1003
|
+
@autolink_excluded_words.concat value
|
1004
|
+
end
|
1005
|
+
|
1006
|
+
opt.separator nil
|
1007
|
+
|
975
1008
|
opt.on("--hyperlink-all", "-A",
|
976
1009
|
"Generate hyperlinks for all words that",
|
977
1010
|
"correspond to known methods, even if they",
|
data/lib/rdoc/parser/c.rb
CHANGED
@@ -168,7 +168,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
168
168
|
# Prepares for parsing a C file. See RDoc::Parser#initialize for details on
|
169
169
|
# the arguments.
|
170
170
|
|
171
|
-
def initialize top_level,
|
171
|
+
def initialize top_level, content, options, stats
|
172
172
|
super
|
173
173
|
|
174
174
|
@known_classes = RDoc::KNOWN_CLASSES.dup
|
@@ -210,8 +210,9 @@ class RDoc::Parser::ChangeLog < RDoc::Parser
|
|
210
210
|
grouped_entries = group_entries entries
|
211
211
|
|
212
212
|
doc = create_document grouped_entries
|
213
|
-
|
214
|
-
|
213
|
+
comment = RDoc::Comment.new(@content)
|
214
|
+
comment.document = doc
|
215
|
+
@top_level.comment = comment
|
215
216
|
|
216
217
|
@top_level
|
217
218
|
end
|
@@ -18,7 +18,7 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
18
18
|
attr_accessor :visibility
|
19
19
|
attr_reader :container, :singleton
|
20
20
|
|
21
|
-
def initialize(top_level,
|
21
|
+
def initialize(top_level, content, options, stats)
|
22
22
|
super
|
23
23
|
|
24
24
|
content = handle_tab_width(content)
|
@@ -31,10 +31,21 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
31
31
|
@track_visibility = :nodoc != @options.visibility
|
32
32
|
@encoding = @options.encoding
|
33
33
|
|
34
|
-
@module_nesting = [top_level]
|
34
|
+
@module_nesting = [[top_level, false]]
|
35
35
|
@container = top_level
|
36
36
|
@visibility = :public
|
37
37
|
@singleton = false
|
38
|
+
@in_proc_block = false
|
39
|
+
end
|
40
|
+
|
41
|
+
# Suppress `extend` and `include` within block
|
42
|
+
# because they might be a metaprogramming block
|
43
|
+
# example: `Module.new { include M }` `M.module_eval { include N }`
|
44
|
+
|
45
|
+
def with_in_proc_block
|
46
|
+
@in_proc_block = true
|
47
|
+
yield
|
48
|
+
@in_proc_block = false
|
38
49
|
end
|
39
50
|
|
40
51
|
# Dive into another container
|
@@ -43,22 +54,24 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
43
54
|
old_container = @container
|
44
55
|
old_visibility = @visibility
|
45
56
|
old_singleton = @singleton
|
57
|
+
old_in_proc_block = @in_proc_block
|
46
58
|
@visibility = :public
|
47
59
|
@container = container
|
48
60
|
@singleton = singleton
|
61
|
+
@in_proc_block = false
|
49
62
|
unless singleton
|
50
|
-
@module_nesting.push container
|
51
|
-
|
52
63
|
# Need to update module parent chain to emulate Module.nesting.
|
53
64
|
# This mechanism is inaccurate and needs to be fixed.
|
54
65
|
container.parent = old_container
|
55
66
|
end
|
67
|
+
@module_nesting.push([container, singleton])
|
56
68
|
yield container
|
57
69
|
ensure
|
58
70
|
@container = old_container
|
59
71
|
@visibility = old_visibility
|
60
72
|
@singleton = old_singleton
|
61
|
-
@
|
73
|
+
@in_proc_block = old_in_proc_block
|
74
|
+
@module_nesting.pop
|
62
75
|
end
|
63
76
|
|
64
77
|
# Records the location of this +container+ in the file for this parser and
|
@@ -204,6 +217,10 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
204
217
|
@stats.add_method meth
|
205
218
|
end
|
206
219
|
|
220
|
+
def has_modifier_nodoc?(line_no) # :nodoc:
|
221
|
+
@modifier_comments[line_no]&.text&.match?(/\A#\s*:nodoc:/)
|
222
|
+
end
|
223
|
+
|
207
224
|
def handle_modifier_directive(code_object, line_no) # :nodoc:
|
208
225
|
comment = @modifier_comments[line_no]
|
209
226
|
@preprocess.handle(comment.text, code_object) if comment
|
@@ -467,6 +484,7 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
467
484
|
end
|
468
485
|
|
469
486
|
def add_includes_extends(names, rdoc_class, line_no) # :nodoc:
|
487
|
+
return if @in_proc_block
|
470
488
|
comment = consecutive_comment(line_no)
|
471
489
|
handle_consecutive_comment_directive(@container, comment)
|
472
490
|
names.each do |name|
|
@@ -492,7 +510,9 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
492
510
|
|
493
511
|
# Adds a method defined by `def` syntax
|
494
512
|
|
495
|
-
def add_method(name, receiver_name:, receiver_fallback_type:, visibility:, singleton:, params:, calls_super:, block_params:, tokens:, start_line:, end_line:)
|
513
|
+
def add_method(name, receiver_name:, receiver_fallback_type:, visibility:, singleton:, params:, calls_super:, block_params:, tokens:, start_line:, args_end_line:, end_line:)
|
514
|
+
return if @in_proc_block
|
515
|
+
|
496
516
|
receiver = receiver_name ? find_or_create_module_path(receiver_name, receiver_fallback_type) : @container
|
497
517
|
meth = RDoc::AnyMethod.new(nil, name)
|
498
518
|
if (comment = consecutive_comment(start_line))
|
@@ -504,20 +524,10 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
504
524
|
meth.comment = comment
|
505
525
|
end
|
506
526
|
handle_modifier_directive(meth, start_line)
|
527
|
+
handle_modifier_directive(meth, args_end_line)
|
507
528
|
handle_modifier_directive(meth, end_line)
|
508
529
|
return unless should_document?(meth)
|
509
530
|
|
510
|
-
|
511
|
-
if meth.name == 'initialize' && !singleton
|
512
|
-
if meth.dont_rename_initialize
|
513
|
-
visibility = :protected
|
514
|
-
else
|
515
|
-
meth.name = 'new'
|
516
|
-
singleton = true
|
517
|
-
visibility = :public
|
518
|
-
end
|
519
|
-
end
|
520
|
-
|
521
531
|
internal_add_method(
|
522
532
|
receiver,
|
523
533
|
meth,
|
@@ -529,6 +539,18 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
529
539
|
block_params: block_params,
|
530
540
|
tokens: tokens
|
531
541
|
)
|
542
|
+
|
543
|
+
# Rename after add_method to register duplicated 'new' and 'initialize'
|
544
|
+
# defined in c and ruby just like the old parser did.
|
545
|
+
if meth.name == 'initialize' && !singleton
|
546
|
+
if meth.dont_rename_initialize
|
547
|
+
meth.visibility = :protected
|
548
|
+
else
|
549
|
+
meth.name = 'new'
|
550
|
+
meth.singleton = true
|
551
|
+
meth.visibility = :public
|
552
|
+
end
|
553
|
+
end
|
532
554
|
end
|
533
555
|
|
534
556
|
private def internal_add_method(container, meth, line_no:, visibility:, singleton:, params:, calls_super:, block_params:, tokens:) # :nodoc:
|
@@ -565,12 +587,17 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
565
587
|
if root_name.empty?
|
566
588
|
mod = @top_level
|
567
589
|
else
|
568
|
-
@module_nesting.reverse_each do |nesting|
|
590
|
+
@module_nesting.reverse_each do |nesting, singleton|
|
591
|
+
next if singleton
|
569
592
|
mod = nesting.find_module_named(root_name)
|
570
593
|
break if mod
|
594
|
+
# If a constant is found and it is not a module or class, RDoc can't document about it.
|
595
|
+
# Return an anonymous module to avoid wrong document creation.
|
596
|
+
return RDoc::NormalModule.new(nil) if nesting.find_constant_named(root_name)
|
571
597
|
end
|
572
|
-
|
573
|
-
mod
|
598
|
+
last_nesting, = @module_nesting.reverse_each.find { |_, singleton| !singleton }
|
599
|
+
return mod || add_module.call(last_nesting, root_name, create_mode) unless name
|
600
|
+
mod ||= add_module.call(last_nesting, root_name, :module)
|
574
601
|
end
|
575
602
|
path.each do |name|
|
576
603
|
mod = mod.find_module_named(name) || add_module.call(mod, name, :module)
|
@@ -584,7 +611,8 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
584
611
|
owner_name, path = constant_path.split('::', 2)
|
585
612
|
return constant_path if owner_name.empty? # ::Foo, ::Foo::Bar
|
586
613
|
mod = nil
|
587
|
-
@module_nesting.reverse_each do |nesting|
|
614
|
+
@module_nesting.reverse_each do |nesting, singleton|
|
615
|
+
next if singleton
|
588
616
|
mod = nesting.find_module_named(owner_name)
|
589
617
|
break if mod
|
590
618
|
end
|
@@ -598,7 +626,10 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
598
626
|
def find_or_create_constant_owner_name(constant_path)
|
599
627
|
const_path, colon, name = constant_path.rpartition('::')
|
600
628
|
if colon.empty? # class Foo
|
601
|
-
|
629
|
+
# Within `class C` or `module C`, owner is C(== current container)
|
630
|
+
# Within `class <<C`, owner is C.singleton_class
|
631
|
+
# but RDoc don't track constants of a singleton class of module
|
632
|
+
[(@singleton ? nil : @container), name]
|
602
633
|
elsif const_path.empty? # class ::Foo
|
603
634
|
[@top_level, name]
|
604
635
|
else # `class Foo::Bar` or `class ::Foo::Bar`
|
@@ -612,6 +643,8 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
612
643
|
comment = consecutive_comment(start_line)
|
613
644
|
handle_consecutive_comment_directive(@container, comment)
|
614
645
|
owner, name = find_or_create_constant_owner_name(constant_name)
|
646
|
+
return unless owner
|
647
|
+
|
615
648
|
constant = RDoc::Constant.new(name, rhs_name, comment)
|
616
649
|
constant.store = @store
|
617
650
|
constant.line = start_line
|
@@ -635,24 +668,29 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
635
668
|
|
636
669
|
# Adds module or class
|
637
670
|
|
638
|
-
def add_module_or_class(module_name, start_line, end_line, is_class: false, superclass_name: nil)
|
671
|
+
def add_module_or_class(module_name, start_line, end_line, is_class: false, superclass_name: nil, superclass_expr: nil)
|
639
672
|
comment = consecutive_comment(start_line)
|
640
673
|
handle_consecutive_comment_directive(@container, comment)
|
641
674
|
return unless @container.document_children
|
642
675
|
|
643
676
|
owner, name = find_or_create_constant_owner_name(module_name)
|
644
|
-
|
645
|
-
mod = owner.classes_hash[name] || owner.add_class(RDoc::NormalClass, name, superclass_name || '::Object')
|
677
|
+
return unless owner
|
646
678
|
|
679
|
+
if is_class
|
647
680
|
# RDoc::NormalClass resolves superclass name despite of the lack of module nesting information.
|
648
681
|
# We need to fix it when RDoc::NormalClass resolved to a wrong constant name
|
649
682
|
if superclass_name
|
650
683
|
superclass_full_path = resolve_constant_path(superclass_name)
|
651
684
|
superclass = @store.find_class_or_module(superclass_full_path) if superclass_full_path
|
652
685
|
superclass_full_path ||= superclass_name
|
686
|
+
superclass_full_path = superclass_full_path.sub(/^::/, '')
|
687
|
+
end
|
688
|
+
# add_class should be done after resolving superclass
|
689
|
+
mod = owner.classes_hash[name] || owner.add_class(RDoc::NormalClass, name, superclass_name || superclass_expr || '::Object')
|
690
|
+
if superclass_name
|
653
691
|
if superclass
|
654
692
|
mod.superclass = superclass
|
655
|
-
elsif mod.superclass.is_a?(String) && mod.superclass != superclass_full_path
|
693
|
+
elsif (mod.superclass.is_a?(String) || mod.superclass.name == 'Object') && mod.superclass != superclass_full_path
|
656
694
|
mod.superclass = superclass_full_path
|
657
695
|
end
|
658
696
|
end
|
@@ -676,6 +714,20 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
676
714
|
@store = store
|
677
715
|
end
|
678
716
|
|
717
|
+
def visit_if_node(node)
|
718
|
+
if node.end_keyword
|
719
|
+
super
|
720
|
+
else
|
721
|
+
# Visit with the order in text representation to handle this method comment
|
722
|
+
# # comment
|
723
|
+
# def f
|
724
|
+
# end if call_node
|
725
|
+
node.statements.accept(self)
|
726
|
+
node.predicate.accept(self)
|
727
|
+
end
|
728
|
+
end
|
729
|
+
alias visit_unless_node visit_if_node
|
730
|
+
|
679
731
|
def visit_call_node(node)
|
680
732
|
@scanner.process_comments_until(node.location.start_line - 1)
|
681
733
|
if node.receiver.nil?
|
@@ -713,6 +765,7 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
713
765
|
when :private_class_method
|
714
766
|
_visit_call_public_private_class_method(node, :private) { super }
|
715
767
|
else
|
768
|
+
node.arguments&.accept(self)
|
716
769
|
super
|
717
770
|
end
|
718
771
|
else
|
@@ -720,6 +773,13 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
720
773
|
end
|
721
774
|
end
|
722
775
|
|
776
|
+
def visit_block_node(node)
|
777
|
+
@scanner.with_in_proc_block do
|
778
|
+
# include, extend and method definition inside block are not documentable
|
779
|
+
super
|
780
|
+
end
|
781
|
+
end
|
782
|
+
|
723
783
|
def visit_alias_method_node(node)
|
724
784
|
@scanner.process_comments_until(node.location.start_line - 1)
|
725
785
|
return unless node.old_name.is_a?(Prism::SymbolNode) && node.new_name.is_a?(Prism::SymbolNode)
|
@@ -727,12 +787,13 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
727
787
|
end
|
728
788
|
|
729
789
|
def visit_module_node(node)
|
790
|
+
node.constant_path.accept(self)
|
730
791
|
@scanner.process_comments_until(node.location.start_line - 1)
|
731
792
|
module_name = constant_path_string(node.constant_path)
|
732
793
|
mod = @scanner.add_module_or_class(module_name, node.location.start_line, node.location.end_line) if module_name
|
733
794
|
if mod
|
734
795
|
@scanner.with_container(mod) do
|
735
|
-
|
796
|
+
node.body&.accept(self)
|
736
797
|
@scanner.process_comments_until(node.location.end_line)
|
737
798
|
end
|
738
799
|
else
|
@@ -741,13 +802,16 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
741
802
|
end
|
742
803
|
|
743
804
|
def visit_class_node(node)
|
805
|
+
node.constant_path.accept(self)
|
806
|
+
node.superclass&.accept(self)
|
744
807
|
@scanner.process_comments_until(node.location.start_line - 1)
|
745
808
|
superclass_name = constant_path_string(node.superclass) if node.superclass
|
809
|
+
superclass_expr = node.superclass.slice if node.superclass && !superclass_name
|
746
810
|
class_name = constant_path_string(node.constant_path)
|
747
|
-
klass = @scanner.add_module_or_class(class_name, node.location.start_line, node.location.end_line, is_class: true, superclass_name: superclass_name) if class_name
|
811
|
+
klass = @scanner.add_module_or_class(class_name, node.location.start_line, node.location.end_line, is_class: true, superclass_name: superclass_name, superclass_expr: superclass_expr) if class_name
|
748
812
|
if klass
|
749
813
|
@scanner.with_container(klass) do
|
750
|
-
|
814
|
+
node.body&.accept(self)
|
751
815
|
@scanner.process_comments_until(node.location.end_line)
|
752
816
|
end
|
753
817
|
else
|
@@ -758,6 +822,12 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
758
822
|
def visit_singleton_class_node(node)
|
759
823
|
@scanner.process_comments_until(node.location.start_line - 1)
|
760
824
|
|
825
|
+
if @scanner.has_modifier_nodoc?(node.location.start_line)
|
826
|
+
# Skip visiting inside the singleton class. Also skips creation of node.expression as a module
|
827
|
+
@scanner.skip_comments_until(node.location.end_line)
|
828
|
+
return
|
829
|
+
end
|
830
|
+
|
761
831
|
expression = node.expression
|
762
832
|
expression = expression.body.body.first if expression.is_a?(Prism::ParenthesesNode) && expression.body&.body&.size == 1
|
763
833
|
|
@@ -772,9 +842,10 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
772
842
|
when Prism::SelfNode
|
773
843
|
mod = @scanner.container if @scanner.container != @top_level
|
774
844
|
end
|
845
|
+
expression.accept(self)
|
775
846
|
if mod
|
776
847
|
@scanner.with_container(mod, singleton: true) do
|
777
|
-
|
848
|
+
node.body&.accept(self)
|
778
849
|
@scanner.process_comments_until(node.location.end_line)
|
779
850
|
end
|
780
851
|
else
|
@@ -784,6 +855,7 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
784
855
|
|
785
856
|
def visit_def_node(node)
|
786
857
|
start_line = node.location.start_line
|
858
|
+
args_end_line = node.parameters&.location&.end_line || start_line
|
787
859
|
end_line = node.location.end_line
|
788
860
|
@scanner.process_comments_until(start_line - 1)
|
789
861
|
|
@@ -834,6 +906,7 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
834
906
|
calls_super: calls_super,
|
835
907
|
tokens: tokens,
|
836
908
|
start_line: start_line,
|
909
|
+
args_end_line: args_end_line,
|
837
910
|
end_line: end_line
|
838
911
|
)
|
839
912
|
ensure
|
@@ -942,7 +1015,7 @@ class RDoc::Parser::PrismRuby < RDoc::Parser
|
|
942
1015
|
@scanner.visibility = visibility
|
943
1016
|
else # `public :foo, :bar`, `private def foo; end`
|
944
1017
|
yield
|
945
|
-
names = visibility_method_arguments(call_node, singleton:
|
1018
|
+
names = visibility_method_arguments(call_node, singleton: false)
|
946
1019
|
@scanner.change_method_visibility(names, visibility) if names
|
947
1020
|
end
|
948
1021
|
end
|
data/lib/rdoc/parser/ruby.rb
CHANGED
@@ -170,7 +170,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
170
170
|
##
|
171
171
|
# Creates a new Ruby parser.
|
172
172
|
|
173
|
-
def initialize(top_level,
|
173
|
+
def initialize(top_level, content, options, stats)
|
174
174
|
super
|
175
175
|
|
176
176
|
content = handle_tab_width(content)
|
data/lib/rdoc/parser/simple.rb
CHANGED
@@ -14,7 +14,7 @@ class RDoc::Parser::Simple < RDoc::Parser
|
|
14
14
|
##
|
15
15
|
# Prepare to parse a plain file
|
16
16
|
|
17
|
-
def initialize(top_level,
|
17
|
+
def initialize(top_level, content, options, stats)
|
18
18
|
super
|
19
19
|
|
20
20
|
preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include
|
data/lib/rdoc/parser.rb
CHANGED
@@ -191,7 +191,7 @@ class RDoc::Parser
|
|
191
191
|
|
192
192
|
content = remove_modeline content
|
193
193
|
|
194
|
-
parser.new top_level,
|
194
|
+
parser.new top_level, content, options, stats
|
195
195
|
rescue SystemCallError
|
196
196
|
nil
|
197
197
|
end
|
@@ -252,12 +252,12 @@ class RDoc::Parser
|
|
252
252
|
# RDoc::Markup::PreProcess object is created which allows processing of
|
253
253
|
# directives.
|
254
254
|
|
255
|
-
def initialize top_level,
|
255
|
+
def initialize top_level, content, options, stats
|
256
256
|
@top_level = top_level
|
257
257
|
@top_level.parser = self.class
|
258
258
|
@store = @top_level.store
|
259
259
|
|
260
|
-
@file_name =
|
260
|
+
@file_name = top_level.absolute_name
|
261
261
|
@content = content
|
262
262
|
@options = options
|
263
263
|
@stats = stats
|
data/lib/rdoc/ri/driver.rb
CHANGED
@@ -518,7 +518,7 @@ or the PAGER environment variable.
|
|
518
518
|
with.each do |incl|
|
519
519
|
out << RDoc::Markup::Paragraph.new(incl.name)
|
520
520
|
out << RDoc::Markup::BlankLine.new
|
521
|
-
out << incl.comment
|
521
|
+
out << incl.comment.parse
|
522
522
|
end
|
523
523
|
|
524
524
|
unless wout.empty? then
|
@@ -542,7 +542,7 @@ or the PAGER environment variable.
|
|
542
542
|
|
543
543
|
if include.comment then
|
544
544
|
out << RDoc::Markup::BlankLine.new
|
545
|
-
out << include.comment
|
545
|
+
out << include.comment.parse
|
546
546
|
end
|
547
547
|
end
|
548
548
|
|
@@ -657,12 +657,12 @@ or the PAGER environment variable.
|
|
657
657
|
##
|
658
658
|
# Adds the class +comment+ to +out+.
|
659
659
|
|
660
|
-
def class_document_comment out,
|
661
|
-
unless
|
660
|
+
def class_document_comment out, document # :nodoc:
|
661
|
+
unless document.empty? then
|
662
662
|
out << RDoc::Markup::Rule.new(1)
|
663
663
|
|
664
|
-
if
|
665
|
-
parts =
|
664
|
+
if document.merged? then
|
665
|
+
parts = document.parts
|
666
666
|
parts = parts.zip [RDoc::Markup::BlankLine.new] * parts.length
|
667
667
|
parts.flatten!
|
668
668
|
parts.pop
|
@@ -687,7 +687,7 @@ or the PAGER environment variable.
|
|
687
687
|
constants = klass.constants.sort_by { |constant| constant.name }
|
688
688
|
|
689
689
|
list.items.concat constants.map { |constant|
|
690
|
-
parts = constant.comment.parts
|
690
|
+
parts = constant.comment.parse.parts
|
691
691
|
parts << RDoc::Markup::Paragraph.new('[not documented]') if
|
692
692
|
parts.empty?
|
693
693
|
|
@@ -906,7 +906,7 @@ or the PAGER environment variable.
|
|
906
906
|
|
907
907
|
page = store.load_page page_name
|
908
908
|
|
909
|
-
display page.comment
|
909
|
+
display page.comment.parse
|
910
910
|
end
|
911
911
|
|
912
912
|
##
|
@@ -1207,7 +1207,8 @@ or the PAGER environment variable.
|
|
1207
1207
|
|
1208
1208
|
store.load_method klass, "#{type}#{method}"
|
1209
1209
|
rescue RDoc::Store::MissingFileError => e
|
1210
|
-
comment = RDoc::Comment.new("missing documentation at #{e.file}")
|
1210
|
+
comment = RDoc::Comment.new("missing documentation at #{e.file}")
|
1211
|
+
comment.parse
|
1211
1212
|
|
1212
1213
|
method = RDoc::AnyMethod.new nil, name
|
1213
1214
|
method.comment = comment
|
@@ -1367,13 +1368,13 @@ or the PAGER environment variable.
|
|
1367
1368
|
# documentable items the class is added to +also_in+ instead.
|
1368
1369
|
|
1369
1370
|
def render_class out, store, klass, also_in # :nodoc:
|
1370
|
-
|
1371
|
+
document = klass.comment.parse
|
1371
1372
|
# TODO the store's cache should always return an empty Array
|
1372
1373
|
class_methods = store.class_methods[klass.full_name] || []
|
1373
1374
|
instance_methods = store.instance_methods[klass.full_name] || []
|
1374
1375
|
attributes = store.attributes[klass.full_name] || []
|
1375
1376
|
|
1376
|
-
if
|
1377
|
+
if document.empty? and
|
1377
1378
|
instance_methods.empty? and class_methods.empty? then
|
1378
1379
|
also_in << store
|
1379
1380
|
return
|
@@ -1381,7 +1382,7 @@ or the PAGER environment variable.
|
|
1381
1382
|
|
1382
1383
|
add_from out, store
|
1383
1384
|
|
1384
|
-
class_document_comment out,
|
1385
|
+
class_document_comment out, document
|
1385
1386
|
|
1386
1387
|
if class_methods or instance_methods or not klass.constants.empty? then
|
1387
1388
|
out << RDoc::Markup::Rule.new(1)
|
@@ -1429,16 +1430,16 @@ or the PAGER environment variable.
|
|
1429
1430
|
if alias_for
|
1430
1431
|
unless method.comment.nil? or method.comment.empty?
|
1431
1432
|
out << RDoc::Markup::BlankLine.new
|
1432
|
-
out << method.comment
|
1433
|
+
out << method.comment.parse
|
1433
1434
|
end
|
1434
1435
|
out << RDoc::Markup::BlankLine.new
|
1435
1436
|
out << RDoc::Markup::Paragraph.new("(This method is an alias for #{alias_for.full_name}.)")
|
1436
1437
|
out << RDoc::Markup::BlankLine.new
|
1437
|
-
out << alias_for.comment
|
1438
|
+
out << alias_for.comment.parse
|
1438
1439
|
out << RDoc::Markup::BlankLine.new
|
1439
1440
|
else
|
1440
1441
|
out << RDoc::Markup::BlankLine.new
|
1441
|
-
out << method.comment
|
1442
|
+
out << method.comment.parse
|
1442
1443
|
out << RDoc::Markup::BlankLine.new
|
1443
1444
|
end
|
1444
1445
|
end
|
@@ -1551,7 +1552,7 @@ or the PAGER environment variable.
|
|
1551
1552
|
found_pages.each do |page|
|
1552
1553
|
out << RDoc::Markup::Heading.new(4, "Expanded from #{page.full_name}")
|
1553
1554
|
out << RDoc::Markup::BlankLine.new
|
1554
|
-
out << page.comment
|
1555
|
+
out << page.comment.parse
|
1555
1556
|
end
|
1556
1557
|
end
|
1557
1558
|
end
|
data/lib/rdoc/rubygems_hook.rb
CHANGED
@@ -181,10 +181,10 @@ class RDoc::RubyGemsHook
|
|
181
181
|
options = ::RDoc::Options.new
|
182
182
|
options.default_title = "#{@spec.full_name} Documentation"
|
183
183
|
options.parse args
|
184
|
+
options.quiet = !Gem.configuration.really_verbose
|
185
|
+
options.finish
|
184
186
|
end
|
185
187
|
|
186
|
-
options.quiet = !Gem.configuration.really_verbose
|
187
|
-
|
188
188
|
@rdoc = new_rdoc
|
189
189
|
@rdoc.options = options
|
190
190
|
|
@@ -310,5 +310,21 @@ module RDoc
|
|
310
310
|
# Generate document for compatibility if this is a default gem.
|
311
311
|
RubyGemsHook.generate(installer, specs)
|
312
312
|
end
|
313
|
+
|
314
|
+
def self.load_rdoc
|
315
|
+
RubyGemsHook.load_rdoc
|
316
|
+
end
|
317
|
+
|
318
|
+
def self.rdoc_version
|
319
|
+
RubyGemsHook.rdoc_version
|
320
|
+
end
|
321
|
+
|
322
|
+
def rdoc_installed?
|
323
|
+
RubyGemsHook.new(@spec).rdoc_installed?
|
324
|
+
end
|
325
|
+
|
326
|
+
def ri_installed?
|
327
|
+
RubyGemsHook.new(@spec).ri_installed?
|
328
|
+
end
|
313
329
|
end
|
314
330
|
end
|
data/lib/rdoc/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Hodel
|
@@ -11,10 +11,9 @@ authors:
|
|
11
11
|
- Zachary Scott
|
12
12
|
- Hiroshi SHIBATA
|
13
13
|
- ITOYANAGI Sakura
|
14
|
-
autorequire:
|
15
14
|
bindir: exe
|
16
15
|
cert_chain: []
|
17
|
-
date:
|
16
|
+
date: 2025-02-06 00:00:00.000000000 Z
|
18
17
|
dependencies:
|
19
18
|
- !ruby/object:Gem::Dependency
|
20
19
|
name: psych
|
@@ -254,7 +253,6 @@ metadata:
|
|
254
253
|
homepage_uri: https://ruby.github.io/rdoc
|
255
254
|
source_code_uri: https://github.com/ruby/rdoc
|
256
255
|
changelog_uri: https://github.com/ruby/rdoc/releases
|
257
|
-
post_install_message:
|
258
256
|
rdoc_options:
|
259
257
|
- "--main"
|
260
258
|
- README.rdoc
|
@@ -271,8 +269,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
271
269
|
- !ruby/object:Gem::Version
|
272
270
|
version: '2.2'
|
273
271
|
requirements: []
|
274
|
-
rubygems_version: 3.
|
275
|
-
signing_key:
|
272
|
+
rubygems_version: 3.6.2
|
276
273
|
specification_version: 4
|
277
274
|
summary: RDoc produces HTML and command-line documentation for Ruby projects
|
278
275
|
test_files: []
|