rdoc 6.3.4.1 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +195 -0
- data/History.rdoc +65 -63
- data/LEGAL.rdoc +7 -1
- data/LICENSE.rdoc +6 -0
- data/README.md +236 -0
- data/RI.md +842 -0
- data/TODO.rdoc +8 -7
- data/doc/markup_reference/markdown.md +659 -0
- data/doc/markup_reference/rdoc.rdoc +1169 -0
- data/exe/rdoc +0 -1
- data/lib/rdoc/{alias.rb → code_object/alias.rb} +4 -18
- data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +50 -24
- data/lib/rdoc/{attr.rb → code_object/attr.rb} +16 -14
- data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +225 -58
- data/lib/rdoc/{constant.rb → code_object/constant.rb} +44 -10
- data/lib/rdoc/code_object/context/section.rb +182 -0
- data/lib/rdoc/{context.rb → code_object/context.rb} +78 -106
- data/lib/rdoc/{extend.rb → code_object/extend.rb} +0 -1
- data/lib/rdoc/{include.rb → code_object/include.rb} +0 -1
- data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +46 -48
- data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +6 -4
- data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +2 -3
- data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +2 -3
- data/lib/rdoc/{require.rb → code_object/require.rb} +1 -2
- data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +5 -1
- data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +60 -63
- data/lib/rdoc/code_object.rb +11 -39
- data/lib/rdoc/code_objects.rb +1 -2
- data/lib/rdoc/comment.rb +202 -99
- data/lib/rdoc/cross_reference.rb +75 -62
- data/lib/rdoc/encoding.rb +8 -24
- data/lib/rdoc/erb_partial.rb +1 -2
- data/lib/rdoc/erbio.rb +3 -8
- data/lib/rdoc/generator/aliki.rb +200 -0
- data/lib/rdoc/generator/darkfish.rb +156 -122
- data/lib/rdoc/generator/json_index.rb +8 -24
- data/lib/rdoc/generator/markup.rb +70 -34
- data/lib/rdoc/generator/pot/message_extractor.rb +7 -7
- data/lib/rdoc/generator/pot/po.rb +1 -1
- data/lib/rdoc/generator/pot/po_entry.rb +8 -8
- data/lib/rdoc/generator/pot.rb +1 -5
- data/lib/rdoc/generator/ri.rb +1 -2
- data/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
- data/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +8 -0
- data/lib/rdoc/generator/template/aliki/_footer.rhtml +23 -0
- data/lib/rdoc/generator/template/aliki/_head.rhtml +163 -0
- data/lib/rdoc/generator/template/aliki/_header.rhtml +56 -0
- data/lib/rdoc/generator/template/aliki/_icons.rhtml +208 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_ancestors.rhtml +16 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_classes.rhtml +15 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +27 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +27 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +16 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_methods.rhtml +41 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +67 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +15 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +21 -0
- data/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +3 -0
- data/lib/rdoc/generator/template/aliki/class.rhtml +230 -0
- data/lib/rdoc/generator/template/aliki/css/rdoc.css +2181 -0
- data/lib/rdoc/generator/template/aliki/index.rhtml +22 -0
- data/lib/rdoc/generator/template/aliki/js/aliki.js +513 -0
- data/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
- data/lib/rdoc/generator/template/aliki/js/c_highlighter.js +299 -0
- data/lib/rdoc/generator/template/aliki/js/search_controller.js +129 -0
- data/lib/rdoc/generator/template/aliki/js/search_navigation.js +105 -0
- data/lib/rdoc/generator/template/aliki/js/search_ranker.js +239 -0
- data/lib/rdoc/generator/template/aliki/js/theme-toggle.js +112 -0
- data/lib/rdoc/generator/template/aliki/page.rhtml +18 -0
- data/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +14 -0
- data/lib/rdoc/generator/template/aliki/servlet_root.rhtml +65 -0
- data/lib/rdoc/generator/template/darkfish/_footer.rhtml +3 -3
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +35 -14
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +11 -9
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +11 -9
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +7 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +20 -11
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +25 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +4 -9
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +2 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +28 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
- data/lib/rdoc/generator/template/darkfish/class.rhtml +138 -90
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +420 -358
- data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
- data/lib/rdoc/generator/template/darkfish/index.rhtml +14 -12
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +59 -3
- data/lib/rdoc/generator/template/darkfish/js/search.js +15 -5
- data/lib/rdoc/generator/template/darkfish/page.rhtml +7 -6
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +12 -9
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +24 -21
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +35 -21
- data/lib/rdoc/generator/template/json_index/js/navigation.js +8 -8
- data/lib/rdoc/generator/template/json_index/js/searcher.js +48 -6
- data/lib/rdoc/generator.rb +6 -5
- data/lib/rdoc/i18n/text.rb +3 -3
- data/lib/rdoc/i18n.rb +1 -1
- data/lib/rdoc/known_classes.rb +5 -4
- data/lib/rdoc/markdown/entities.rb +0 -1
- data/lib/rdoc/markdown/literals.kpeg +0 -2
- data/lib/rdoc/markdown/literals.rb +0 -1
- data/lib/rdoc/markdown.kpeg +140 -62
- data/lib/rdoc/markdown.rb +1015 -873
- data/lib/rdoc/markup/blank_line.rb +25 -24
- data/lib/rdoc/markup/block_quote.rb +1 -2
- data/lib/rdoc/markup/document.rb +10 -11
- data/lib/rdoc/markup/element.rb +21 -0
- data/lib/rdoc/markup/formatter.rb +134 -115
- data/lib/rdoc/markup/hard_break.rb +30 -28
- data/lib/rdoc/markup/heading.rb +163 -72
- data/lib/rdoc/markup/include.rb +3 -4
- data/lib/rdoc/markup/indented_paragraph.rb +4 -5
- data/lib/rdoc/markup/inline_parser.rb +312 -0
- data/lib/rdoc/markup/list.rb +6 -7
- data/lib/rdoc/markup/list_item.rb +6 -7
- data/lib/rdoc/markup/paragraph.rb +2 -3
- data/lib/rdoc/markup/parser.rb +29 -19
- data/lib/rdoc/markup/pre_process.rb +39 -18
- data/lib/rdoc/markup/raw.rb +52 -56
- data/lib/rdoc/markup/rule.rb +2 -3
- data/lib/rdoc/markup/table.rb +49 -32
- data/lib/rdoc/markup/to_ansi.rb +58 -8
- data/lib/rdoc/markup/to_bs.rb +47 -38
- data/lib/rdoc/markup/to_html.rb +343 -105
- data/lib/rdoc/markup/to_html_crossref.rb +143 -58
- data/lib/rdoc/markup/to_html_snippet.rb +78 -76
- data/lib/rdoc/markup/to_joined_paragraph.rb +3 -9
- data/lib/rdoc/markup/to_label.rb +34 -25
- data/lib/rdoc/markup/to_markdown.rb +74 -51
- data/lib/rdoc/markup/to_rdoc.rb +141 -82
- data/lib/rdoc/markup/to_table_of_contents.rb +4 -5
- data/lib/rdoc/markup/to_test.rb +10 -3
- data/lib/rdoc/markup/to_tt_only.rb +17 -31
- data/lib/rdoc/markup/verbatim.rb +5 -6
- data/lib/rdoc/markup.rb +59 -707
- data/lib/rdoc/options.rb +228 -101
- data/lib/rdoc/parser/c.rb +186 -184
- data/lib/rdoc/parser/changelog.rb +57 -13
- data/lib/rdoc/parser/markdown.rb +0 -2
- data/lib/rdoc/parser/rbs.rb +275 -0
- data/lib/rdoc/parser/rd.rb +0 -1
- data/lib/rdoc/parser/ruby.rb +963 -2024
- data/lib/rdoc/parser/ruby_colorizer.rb +253 -0
- data/lib/rdoc/parser/simple.rb +6 -23
- data/lib/rdoc/parser/text.rb +0 -1
- data/lib/rdoc/parser.rb +35 -14
- data/lib/rdoc/rbs_helper.rb +186 -0
- data/lib/rdoc/rd/block_parser.rb +659 -11
- data/lib/rdoc/rd/block_parser.ry +13 -9
- data/lib/rdoc/rd/inline.rb +4 -5
- data/lib/rdoc/rd/inline_parser.rb +646 -2
- data/lib/rdoc/rd.rb +4 -5
- data/lib/rdoc/rdoc.rb +234 -90
- data/lib/rdoc/ri/driver.rb +172 -172
- data/lib/rdoc/ri/paths.rb +3 -3
- data/lib/rdoc/{servlet.rb → ri/servlet.rb} +28 -27
- data/lib/rdoc/ri/store.rb +0 -1
- data/lib/rdoc/ri/task.rb +3 -3
- data/lib/rdoc/ri.rb +5 -5
- data/lib/rdoc/rubygems_hook.rb +106 -25
- data/lib/rdoc/server.rb +460 -0
- data/lib/rdoc/stats/normal.rb +1 -1
- data/lib/rdoc/stats/quiet.rb +1 -2
- data/lib/rdoc/stats/verbose.rb +3 -5
- data/lib/rdoc/stats.rb +158 -136
- data/lib/rdoc/store.rb +267 -48
- data/lib/rdoc/task.rb +54 -28
- data/lib/rdoc/text.rb +60 -120
- data/lib/rdoc/token_stream.rb +30 -45
- data/lib/rdoc/tom_doc.rb +9 -15
- data/lib/rdoc/version.rb +3 -1
- data/lib/rdoc.rb +90 -52
- data/lib/rubygems_plugin.rb +14 -0
- data/man/ri.1 +2 -0
- data/rdoc-logo.svg +43 -0
- data/rdoc.gemspec +25 -200
- metadata +120 -53
- data/CONTRIBUTING.rdoc +0 -220
- data/ExampleMarkdown.md +0 -37
- data/ExampleRDoc.rdoc +0 -208
- data/Gemfile +0 -12
- data/README.rdoc +0 -129
- data/RI.rdoc +0 -57
- data/Rakefile +0 -101
- data/bin/console +0 -7
- data/bin/setup +0 -6
- data/lib/rdoc/anon_class.rb +0 -11
- data/lib/rdoc/context/section.rb +0 -232
- data/lib/rdoc/generator/template/darkfish/.document +0 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
- data/lib/rdoc/generator/template/json_index/.document +0 -1
- data/lib/rdoc/ghost_method.rb +0 -7
- data/lib/rdoc/markup/attr_changer.rb +0 -23
- data/lib/rdoc/markup/attr_span.rb +0 -36
- data/lib/rdoc/markup/attribute_manager.rb +0 -409
- data/lib/rdoc/markup/attributes.rb +0 -71
- data/lib/rdoc/markup/regexp_handling.rb +0 -41
- data/lib/rdoc/meta_method.rb +0 -7
- data/lib/rdoc/parser/ripper_state_lex.rb +0 -590
- data/lib/rdoc/parser/ruby_tools.rb +0 -167
data/lib/rdoc/stats.rb
CHANGED
|
@@ -7,6 +7,19 @@ class RDoc::Stats
|
|
|
7
7
|
|
|
8
8
|
include RDoc::Text
|
|
9
9
|
|
|
10
|
+
##
|
|
11
|
+
# Display order for item types in the coverage report
|
|
12
|
+
|
|
13
|
+
TYPE_ORDER = %w[Class Module Constant Attribute Method].freeze
|
|
14
|
+
|
|
15
|
+
##
|
|
16
|
+
# Message displayed when all items are documented
|
|
17
|
+
|
|
18
|
+
GREAT_JOB_MESSAGE = <<~MSG
|
|
19
|
+
100% documentation!
|
|
20
|
+
Great Job!
|
|
21
|
+
MSG
|
|
22
|
+
|
|
10
23
|
##
|
|
11
24
|
# Output level for the coverage report
|
|
12
25
|
|
|
@@ -26,7 +39,7 @@ class RDoc::Stats
|
|
|
26
39
|
# Creates a new Stats that will have +num_files+. +verbosity+ defaults to 1
|
|
27
40
|
# which will create an RDoc::Stats::Normal outputter.
|
|
28
41
|
|
|
29
|
-
def initialize
|
|
42
|
+
def initialize(store, num_files, verbosity = 1)
|
|
30
43
|
@num_files = num_files
|
|
31
44
|
@store = store
|
|
32
45
|
|
|
@@ -39,38 +52,45 @@ class RDoc::Stats
|
|
|
39
52
|
@start = Time.now
|
|
40
53
|
@undoc_params = 0
|
|
41
54
|
|
|
55
|
+
self.verbosity = verbosity
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
##
|
|
59
|
+
# Sets the verbosity level, rebuilding the display outputter.
|
|
60
|
+
|
|
61
|
+
def verbosity=(verbosity)
|
|
42
62
|
@display = case verbosity
|
|
43
|
-
when 0 then Quiet.new num_files
|
|
44
|
-
when 1 then Normal.new num_files
|
|
45
|
-
else Verbose.new num_files
|
|
63
|
+
when 0 then Quiet.new @num_files
|
|
64
|
+
when 1 then Normal.new @num_files
|
|
65
|
+
else Verbose.new @num_files
|
|
46
66
|
end
|
|
47
67
|
end
|
|
48
68
|
|
|
49
69
|
##
|
|
50
70
|
# Records the parsing of an alias +as+.
|
|
51
71
|
|
|
52
|
-
def add_alias
|
|
72
|
+
def add_alias(as)
|
|
53
73
|
@display.print_alias as
|
|
54
74
|
end
|
|
55
75
|
|
|
56
76
|
##
|
|
57
77
|
# Records the parsing of an attribute +attribute+
|
|
58
78
|
|
|
59
|
-
def add_attribute
|
|
79
|
+
def add_attribute(attribute)
|
|
60
80
|
@display.print_attribute attribute
|
|
61
81
|
end
|
|
62
82
|
|
|
63
83
|
##
|
|
64
84
|
# Records the parsing of a class +klass+
|
|
65
85
|
|
|
66
|
-
def add_class
|
|
86
|
+
def add_class(klass)
|
|
67
87
|
@display.print_class klass
|
|
68
88
|
end
|
|
69
89
|
|
|
70
90
|
##
|
|
71
91
|
# Records the parsing of +constant+
|
|
72
92
|
|
|
73
|
-
def add_constant
|
|
93
|
+
def add_constant(constant)
|
|
74
94
|
@display.print_constant constant
|
|
75
95
|
end
|
|
76
96
|
|
|
@@ -155,7 +175,7 @@ class RDoc::Stats
|
|
|
155
175
|
# 0:: Classes, modules, constants, attributes, methods
|
|
156
176
|
# 1:: Level 0 + method parameters
|
|
157
177
|
|
|
158
|
-
def coverage_level=
|
|
178
|
+
def coverage_level=(level)
|
|
159
179
|
level = -1 unless level
|
|
160
180
|
|
|
161
181
|
@coverage_level = level
|
|
@@ -164,7 +184,7 @@ class RDoc::Stats
|
|
|
164
184
|
##
|
|
165
185
|
# Returns the length and number of undocumented items in +collection+.
|
|
166
186
|
|
|
167
|
-
def doc_stats
|
|
187
|
+
def doc_stats(collection)
|
|
168
188
|
visible = collection.select { |item| item.display? }
|
|
169
189
|
[visible.length, visible.count { |item| not item.documented? }]
|
|
170
190
|
end
|
|
@@ -186,18 +206,6 @@ class RDoc::Stats
|
|
|
186
206
|
@fully_documented
|
|
187
207
|
end
|
|
188
208
|
|
|
189
|
-
##
|
|
190
|
-
# A report that says you did a great job!
|
|
191
|
-
|
|
192
|
-
def great_job
|
|
193
|
-
report = RDoc::Markup::Document.new
|
|
194
|
-
|
|
195
|
-
report << RDoc::Markup::Paragraph.new('100% documentation!')
|
|
196
|
-
report << RDoc::Markup::Paragraph.new('Great Job!')
|
|
197
|
-
|
|
198
|
-
report
|
|
199
|
-
end
|
|
200
|
-
|
|
201
209
|
##
|
|
202
210
|
# Calculates the percentage of items documented.
|
|
203
211
|
|
|
@@ -223,48 +231,55 @@ class RDoc::Stats
|
|
|
223
231
|
if @coverage_level.zero? then
|
|
224
232
|
calculate
|
|
225
233
|
|
|
226
|
-
return
|
|
234
|
+
return GREAT_JOB_MESSAGE if @num_items == @doc_items
|
|
227
235
|
end
|
|
228
236
|
|
|
229
|
-
|
|
237
|
+
items, empty_classes = collect_undocumented_items
|
|
230
238
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
report << RDoc::Markup::BlankLine.new
|
|
234
|
-
|
|
235
|
-
ucm.sort.each do |cm|
|
|
236
|
-
body = report_class_module(cm) {
|
|
237
|
-
[
|
|
238
|
-
report_constants(cm),
|
|
239
|
-
report_attributes(cm),
|
|
240
|
-
report_methods(cm),
|
|
241
|
-
].compact
|
|
242
|
-
}
|
|
239
|
+
if @coverage_level > 0 then
|
|
240
|
+
calculate
|
|
243
241
|
|
|
244
|
-
|
|
242
|
+
return GREAT_JOB_MESSAGE if @num_items == @doc_items
|
|
245
243
|
end
|
|
246
244
|
|
|
247
|
-
|
|
248
|
-
|
|
245
|
+
report = +""
|
|
246
|
+
report << "The following items are not documented:\n\n"
|
|
249
247
|
|
|
250
|
-
|
|
248
|
+
# Referenced-but-empty classes
|
|
249
|
+
empty_classes.each do |cm|
|
|
250
|
+
report << "#{cm.full_name} is referenced but empty.\n"
|
|
251
|
+
report << "It probably came from another project. I'm sorry I'm holding it against you.\n\n"
|
|
251
252
|
end
|
|
252
253
|
|
|
253
|
-
|
|
254
|
-
|
|
254
|
+
# Group items by file, then by type
|
|
255
|
+
by_file = items.group_by { |item| item[:file] }
|
|
255
256
|
|
|
256
|
-
|
|
257
|
-
|
|
257
|
+
by_file.sort_by { |file, _| file }.each do |file, file_items|
|
|
258
|
+
report << "#{file}:\n"
|
|
258
259
|
|
|
259
|
-
|
|
260
|
-
return if cm.attributes.empty?
|
|
260
|
+
by_type = file_items.group_by { |item| item[:type] }
|
|
261
261
|
|
|
262
|
-
|
|
262
|
+
TYPE_ORDER.each do |type|
|
|
263
|
+
next unless by_type[type]
|
|
264
|
+
|
|
265
|
+
report << " #{type}:\n"
|
|
266
|
+
|
|
267
|
+
sorted = by_type[type].sort_by { |item| [item[:line] || 0, item[:name]] }
|
|
268
|
+
name_width = sorted.reduce(0) { |max, item| item[:line] && item[:name].length > max ? item[:name].length : max }
|
|
269
|
+
|
|
270
|
+
sorted.each do |item|
|
|
271
|
+
if item[:line]
|
|
272
|
+
report << " %-*s %s:%d\n" % [name_width, item[:name], item[:file], item[:line]]
|
|
273
|
+
else
|
|
274
|
+
report << " #{item[:name]}\n"
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
if item[:undoc_params]
|
|
278
|
+
report << " Undocumented params: #{item[:undoc_params].join(', ')}\n"
|
|
279
|
+
end
|
|
280
|
+
end
|
|
281
|
+
end
|
|
263
282
|
|
|
264
|
-
cm.each_attribute do |attr|
|
|
265
|
-
next if attr.documented?
|
|
266
|
-
line = attr.line ? ":#{attr.line}" : nil
|
|
267
|
-
report << " #{attr.definition} :#{attr.name} # in file #{attr.file.full_name}#{line}\n"
|
|
268
283
|
report << "\n"
|
|
269
284
|
end
|
|
270
285
|
|
|
@@ -272,115 +287,128 @@ class RDoc::Stats
|
|
|
272
287
|
end
|
|
273
288
|
|
|
274
289
|
##
|
|
275
|
-
#
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
return unless cm.display?
|
|
280
|
-
|
|
281
|
-
report = RDoc::Markup::Document.new
|
|
282
|
-
|
|
283
|
-
if cm.in_files.empty? then
|
|
284
|
-
report << RDoc::Markup::Paragraph.new("#{cm.definition} is referenced but empty.")
|
|
285
|
-
report << RDoc::Markup::Paragraph.new("It probably came from another project. I'm sorry I'm holding it against you.")
|
|
290
|
+
# Collects all undocumented items across all classes and modules.
|
|
291
|
+
# Returns [items, empty_classes] where items is an Array of Hashes
|
|
292
|
+
# with keys :type, :name, :file, :line, and empty_classes is an
|
|
293
|
+
# Array of ClassModule objects that are referenced but have no files.
|
|
286
294
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
klass = RDoc::Markup::Verbatim.new("#{cm.definition} # is documented\n")
|
|
291
|
-
else
|
|
292
|
-
report << RDoc::Markup::Paragraph.new('In files:')
|
|
295
|
+
def collect_undocumented_items
|
|
296
|
+
empty_classes = []
|
|
297
|
+
items = []
|
|
293
298
|
|
|
294
|
-
|
|
299
|
+
@store.unique_classes_and_modules.each do |class_module|
|
|
300
|
+
next unless class_module.display?
|
|
295
301
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
302
|
+
if class_module.in_files.empty?
|
|
303
|
+
empty_classes << class_module
|
|
304
|
+
next
|
|
299
305
|
end
|
|
300
306
|
|
|
301
|
-
|
|
302
|
-
|
|
307
|
+
unless class_module.documented? || class_module.full_name == 'Object'
|
|
308
|
+
collect_undocumented_class_module(class_module, items)
|
|
309
|
+
end
|
|
303
310
|
|
|
304
|
-
|
|
311
|
+
collect_undocumented_constants(class_module, items)
|
|
312
|
+
collect_undocumented_attributes(class_module, items)
|
|
313
|
+
collect_undocumented_methods(class_module, items)
|
|
305
314
|
end
|
|
306
315
|
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
body = yield.flatten # HACK remove #flatten
|
|
310
|
-
|
|
311
|
-
if body.empty? then
|
|
312
|
-
return if documented
|
|
316
|
+
[items, empty_classes]
|
|
317
|
+
end
|
|
313
318
|
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
319
|
+
##
|
|
320
|
+
# Collects undocumented classes or modules from +class_module+ into +items+.
|
|
321
|
+
# Reopened classes/modules are reported in every file they appear in.
|
|
322
|
+
|
|
323
|
+
def collect_undocumented_class_module(class_module, items)
|
|
324
|
+
class_module.in_files.map(&:full_name).uniq.each do |file|
|
|
325
|
+
items << {
|
|
326
|
+
type: class_module.type.capitalize,
|
|
327
|
+
name: class_module.full_name,
|
|
328
|
+
file: file,
|
|
329
|
+
line: nil,
|
|
330
|
+
}
|
|
317
331
|
end
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
##
|
|
335
|
+
# Collects undocumented constants from +class_module+ into +items+.
|
|
318
336
|
|
|
319
|
-
|
|
337
|
+
def collect_undocumented_constants(class_module, items)
|
|
338
|
+
class_module.constants.each do |constant|
|
|
339
|
+
next unless constant.display?
|
|
340
|
+
next if constant.documented? || constant.is_alias_for
|
|
320
341
|
|
|
321
|
-
|
|
342
|
+
file = constant.file&.full_name
|
|
343
|
+
next unless file
|
|
322
344
|
|
|
323
|
-
|
|
345
|
+
items << {
|
|
346
|
+
type: "Constant",
|
|
347
|
+
name: constant.full_name,
|
|
348
|
+
file: file,
|
|
349
|
+
line: constant.line,
|
|
350
|
+
}
|
|
351
|
+
end
|
|
324
352
|
end
|
|
325
353
|
|
|
326
354
|
##
|
|
327
|
-
#
|
|
328
|
-
|
|
329
|
-
def report_constants cm
|
|
330
|
-
return if cm.constants.empty?
|
|
355
|
+
# Collects undocumented attributes from +class_module+ into +items+.
|
|
331
356
|
|
|
332
|
-
|
|
357
|
+
def collect_undocumented_attributes(class_module, items)
|
|
358
|
+
class_module.attributes.each do |attr|
|
|
359
|
+
next unless attr.display?
|
|
360
|
+
next if attr.documented?
|
|
333
361
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
# figure out what to do here
|
|
337
|
-
next if constant.documented? || constant.is_alias_for
|
|
362
|
+
file = attr.file&.full_name
|
|
363
|
+
next unless file
|
|
338
364
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
365
|
+
scope = attr.singleton ? "." : "#"
|
|
366
|
+
items << {
|
|
367
|
+
type: "Attribute",
|
|
368
|
+
name: "#{class_module.full_name}#{scope}#{attr.name}",
|
|
369
|
+
file: file,
|
|
370
|
+
line: attr.line,
|
|
371
|
+
}
|
|
343
372
|
end
|
|
344
|
-
|
|
345
|
-
report
|
|
346
373
|
end
|
|
347
374
|
|
|
348
375
|
##
|
|
349
|
-
#
|
|
350
|
-
|
|
351
|
-
def report_methods cm
|
|
352
|
-
return if cm.method_list.empty?
|
|
376
|
+
# Collects undocumented methods from +class_module+ into +items+.
|
|
377
|
+
# At coverage level > 0, also counts undocumented parameters.
|
|
353
378
|
|
|
354
|
-
|
|
379
|
+
def collect_undocumented_methods(class_module, items)
|
|
380
|
+
class_module.each_method do |method|
|
|
381
|
+
next unless method.display?
|
|
382
|
+
next if method.documented? && @coverage_level.zero?
|
|
355
383
|
|
|
356
|
-
|
|
357
|
-
next if method.documented? and @coverage_level.zero?
|
|
384
|
+
undoc_param_names = nil
|
|
358
385
|
|
|
359
|
-
if @coverage_level > 0
|
|
386
|
+
if @coverage_level > 0
|
|
360
387
|
params, undoc = undoc_params method
|
|
361
|
-
|
|
362
388
|
@num_params += params
|
|
363
389
|
|
|
364
|
-
unless undoc.empty?
|
|
390
|
+
unless undoc.empty?
|
|
365
391
|
@undoc_params += undoc.length
|
|
366
|
-
|
|
367
|
-
undoc = undoc.map do |param| "+#{param}+" end
|
|
368
|
-
param_report = " # #{undoc.join ', '} is not documented\n"
|
|
392
|
+
undoc_param_names = undoc
|
|
369
393
|
end
|
|
370
394
|
end
|
|
371
395
|
|
|
372
|
-
next if method.documented?
|
|
396
|
+
next if method.documented? && !undoc_param_names
|
|
373
397
|
|
|
374
|
-
|
|
375
|
-
|
|
398
|
+
file = method.file&.full_name
|
|
399
|
+
next unless file
|
|
376
400
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
401
|
+
scope = method.singleton ? "." : "#"
|
|
402
|
+
item = {
|
|
403
|
+
type: "Method",
|
|
404
|
+
name: "#{class_module.full_name}#{scope}#{method.name}",
|
|
405
|
+
file: file,
|
|
406
|
+
line: method.line,
|
|
407
|
+
}
|
|
408
|
+
item[:undoc_params] = undoc_param_names if undoc_param_names
|
|
382
409
|
|
|
383
|
-
|
|
410
|
+
items << item
|
|
411
|
+
end
|
|
384
412
|
end
|
|
385
413
|
|
|
386
414
|
##
|
|
@@ -400,12 +428,10 @@ class RDoc::Stats
|
|
|
400
428
|
@undoc_params,
|
|
401
429
|
].max.to_s.length
|
|
402
430
|
|
|
403
|
-
report =
|
|
431
|
+
report = +""
|
|
404
432
|
|
|
405
433
|
report << "Files: %*d\n" % [num_width, @num_files]
|
|
406
|
-
|
|
407
434
|
report << "\n"
|
|
408
|
-
|
|
409
435
|
report << "Classes: %*d (%*d undocumented)\n" % [
|
|
410
436
|
num_width, @num_classes, undoc_width, @undoc_classes]
|
|
411
437
|
report << "Modules: %*d (%*d undocumented)\n" % [
|
|
@@ -419,24 +445,21 @@ class RDoc::Stats
|
|
|
419
445
|
report << "Parameters: %*d (%*d undocumented)\n" % [
|
|
420
446
|
num_width, @num_params, undoc_width, @undoc_params] if
|
|
421
447
|
@coverage_level > 0
|
|
422
|
-
|
|
423
448
|
report << "\n"
|
|
424
|
-
|
|
425
449
|
report << "Total: %*d (%*d undocumented)\n" % [
|
|
426
450
|
num_width, @num_items, undoc_width, @undoc_items]
|
|
427
|
-
|
|
428
451
|
report << "%6.2f%% documented\n" % percent_doc
|
|
429
452
|
report << "\n"
|
|
430
453
|
report << "Elapsed: %0.1fs\n" % (Time.now - @start)
|
|
431
454
|
|
|
432
|
-
|
|
455
|
+
report
|
|
433
456
|
end
|
|
434
457
|
|
|
435
458
|
##
|
|
436
459
|
# Determines which parameters in +method+ were not documented. Returns a
|
|
437
460
|
# total parameter count and an Array of undocumented methods.
|
|
438
461
|
|
|
439
|
-
def undoc_params
|
|
462
|
+
def undoc_params(method)
|
|
440
463
|
@formatter ||= RDoc::Markup::ToTtOnly.new
|
|
441
464
|
|
|
442
465
|
params = method.param_list
|
|
@@ -454,9 +477,8 @@ class RDoc::Stats
|
|
|
454
477
|
[params.length, undoc]
|
|
455
478
|
end
|
|
456
479
|
|
|
457
|
-
autoload :Quiet,
|
|
458
|
-
autoload :Normal,
|
|
459
|
-
autoload :Verbose,
|
|
480
|
+
autoload :Quiet, "#{__dir__}/stats/quiet"
|
|
481
|
+
autoload :Normal, "#{__dir__}/stats/normal"
|
|
482
|
+
autoload :Verbose, "#{__dir__}/stats/verbose"
|
|
460
483
|
|
|
461
484
|
end
|
|
462
|
-
|