rdoc 6.4.0 → 6.6.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.rdoc +1 -2
- data/LEGAL.rdoc +1 -1
- data/README.rdoc +2 -2
- data/TODO.rdoc +1 -1
- data/exe/rdoc +0 -1
- data/lib/rdoc/alias.rb +0 -1
- data/lib/rdoc/anon_class.rb +0 -1
- data/lib/rdoc/any_method.rb +17 -2
- data/lib/rdoc/attr.rb +0 -1
- data/lib/rdoc/class_module.rb +0 -1
- data/lib/rdoc/code_objects.rb +1 -2
- data/lib/rdoc/comment.rb +20 -41
- data/lib/rdoc/constant.rb +0 -1
- data/lib/rdoc/context/section.rb +2 -1
- data/lib/rdoc/context.rb +1 -3
- data/lib/rdoc/cross_reference.rb +17 -2
- data/lib/rdoc/encoding.rb +1 -6
- data/lib/rdoc/erb_partial.rb +0 -1
- data/lib/rdoc/erbio.rb +2 -7
- data/lib/rdoc/extend.rb +0 -1
- data/lib/rdoc/generator/darkfish.rb +2 -6
- data/lib/rdoc/generator/json_index.rb +2 -2
- data/lib/rdoc/generator/markup.rb +1 -2
- data/lib/rdoc/generator/ri.rb +0 -1
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +10 -10
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +27 -3
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +22 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +25 -4
- data/lib/rdoc/generator/template/darkfish/class.rhtml +28 -20
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +44 -7
- data/lib/rdoc/generator/template/darkfish/index.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +14 -1
- data/lib/rdoc/generator/template/darkfish/js/search.js +4 -4
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +7 -6
- data/lib/rdoc/generator/template/json_index/js/navigation.js +8 -8
- data/lib/rdoc/generator.rb +5 -5
- data/lib/rdoc/ghost_method.rb +0 -1
- data/lib/rdoc/i18n.rb +1 -1
- data/lib/rdoc/include.rb +0 -1
- data/lib/rdoc/known_classes.rb +5 -4
- data/lib/rdoc/markdown/entities.rb +0 -1
- data/lib/rdoc/markdown/literals.rb +98 -40
- data/lib/rdoc/markdown.kpeg +26 -19
- data/lib/rdoc/markdown.rb +326 -227
- data/lib/rdoc/markup/attr_changer.rb +0 -1
- data/lib/rdoc/markup/attr_span.rb +0 -1
- data/lib/rdoc/markup/attribute_manager.rb +29 -36
- data/lib/rdoc/markup/attributes.rb +0 -1
- data/lib/rdoc/markup/blank_line.rb +0 -1
- data/lib/rdoc/markup/block_quote.rb +0 -1
- data/lib/rdoc/markup/document.rb +0 -1
- data/lib/rdoc/markup/formatter.rb +0 -1
- data/lib/rdoc/markup/hard_break.rb +0 -1
- data/lib/rdoc/markup/heading.rb +0 -1
- data/lib/rdoc/markup/include.rb +0 -1
- data/lib/rdoc/markup/indented_paragraph.rb +0 -1
- data/lib/rdoc/markup/list.rb +0 -1
- data/lib/rdoc/markup/list_item.rb +0 -1
- data/lib/rdoc/markup/paragraph.rb +0 -1
- data/lib/rdoc/markup/parser.rb +12 -6
- data/lib/rdoc/markup/raw.rb +0 -1
- data/lib/rdoc/markup/regexp_handling.rb +0 -1
- data/lib/rdoc/markup/rule.rb +0 -1
- data/lib/rdoc/markup/to_ansi.rb +0 -1
- data/lib/rdoc/markup/to_html.rb +21 -16
- data/lib/rdoc/markup/to_html_crossref.rb +0 -1
- data/lib/rdoc/markup/to_html_snippet.rb +0 -1
- data/lib/rdoc/markup/to_joined_paragraph.rb +2 -3
- data/lib/rdoc/markup/to_label.rb +1 -2
- data/lib/rdoc/markup/to_markdown.rb +0 -1
- data/lib/rdoc/markup/to_rdoc.rb +3 -21
- data/lib/rdoc/markup/to_table_of_contents.rb +0 -1
- data/lib/rdoc/markup/to_test.rb +0 -1
- data/lib/rdoc/markup/to_tt_only.rb +0 -1
- data/lib/rdoc/markup/verbatim.rb +0 -1
- data/lib/rdoc/markup.rb +35 -667
- data/lib/rdoc/meta_method.rb +0 -1
- data/lib/rdoc/method_attr.rb +1 -2
- data/lib/rdoc/mixin.rb +0 -1
- data/lib/rdoc/normal_class.rb +1 -2
- data/lib/rdoc/normal_module.rb +1 -2
- data/lib/rdoc/options.rb +36 -20
- data/lib/rdoc/parser/c.rb +89 -101
- data/lib/rdoc/parser/changelog.rb +0 -1
- data/lib/rdoc/parser/markdown.rb +0 -2
- data/lib/rdoc/parser/rd.rb +0 -1
- data/lib/rdoc/parser/ripper_state_lex.rb +1 -1
- data/lib/rdoc/parser/ruby.rb +29 -14
- data/lib/rdoc/parser/ruby_tools.rb +0 -2
- data/lib/rdoc/parser/text.rb +0 -1
- data/lib/rdoc/parser.rb +19 -2
- data/lib/rdoc/rd/block_parser.rb +666 -12
- data/lib/rdoc/rd/block_parser.ry +13 -9
- data/lib/rdoc/rd/inline.rb +0 -1
- data/lib/rdoc/rd/inline_parser.rb +3 -1
- data/lib/rdoc/rd.rb +3 -4
- data/lib/rdoc/rdoc.rb +19 -7
- data/lib/rdoc/require.rb +0 -1
- data/lib/rdoc/ri/driver.rb +20 -86
- data/lib/rdoc/ri/store.rb +0 -1
- data/lib/rdoc/ri.rb +4 -5
- data/lib/rdoc/rubygems_hook.rb +1 -1
- data/lib/rdoc/servlet.rb +1 -1
- data/lib/rdoc/single_class.rb +5 -1
- data/lib/rdoc/stats/quiet.rb +0 -1
- data/lib/rdoc/stats/verbose.rb +0 -2
- data/lib/rdoc/stats.rb +3 -4
- data/lib/rdoc/store.rb +4 -4
- data/lib/rdoc/task.rb +31 -5
- data/lib/rdoc/token_stream.rb +0 -1
- data/lib/rdoc/top_level.rb +0 -1
- data/lib/rdoc/version.rb +3 -1
- data/lib/rdoc.rb +46 -46
- metadata +9 -11
- data/Gemfile +0 -12
- data/Rakefile +0 -107
- data/bin/console +0 -7
- data/bin/setup +0 -6
- data/rdoc.gemspec +0 -249
data/lib/rdoc/meta_method.rb
CHANGED
data/lib/rdoc/method_attr.rb
CHANGED
|
@@ -289,7 +289,7 @@ class RDoc::MethodAttr < RDoc::CodeObject
|
|
|
289
289
|
# HTML id-friendly method/attribute name
|
|
290
290
|
|
|
291
291
|
def html_name
|
|
292
|
-
require 'cgi'
|
|
292
|
+
require 'cgi/util'
|
|
293
293
|
|
|
294
294
|
CGI.escape(@name.gsub('-', '-2D')).gsub('%','-').sub(/^-/, '')
|
|
295
295
|
end
|
|
@@ -416,4 +416,3 @@ class RDoc::MethodAttr < RDoc::CodeObject
|
|
|
416
416
|
end
|
|
417
417
|
|
|
418
418
|
end
|
|
419
|
-
|
data/lib/rdoc/mixin.rb
CHANGED
data/lib/rdoc/normal_class.rb
CHANGED
|
@@ -56,7 +56,7 @@ class RDoc::NormalClass < RDoc::ClassModule
|
|
|
56
56
|
def pretty_print q # :nodoc:
|
|
57
57
|
superclass = @superclass ? " < #{@superclass}" : nil
|
|
58
58
|
|
|
59
|
-
q.group 2, "[class #{full_name}#{superclass}
|
|
59
|
+
q.group 2, "[class #{full_name}#{superclass}", "]" do
|
|
60
60
|
q.breakable
|
|
61
61
|
q.text "includes:"
|
|
62
62
|
q.breakable
|
|
@@ -90,4 +90,3 @@ class RDoc::NormalClass < RDoc::ClassModule
|
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
end
|
|
93
|
-
|
data/lib/rdoc/normal_module.rb
CHANGED
|
@@ -30,7 +30,7 @@ class RDoc::NormalModule < RDoc::ClassModule
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def pretty_print q # :nodoc:
|
|
33
|
-
q.group 2, "[module #{full_name}:
|
|
33
|
+
q.group 2, "[module #{full_name}:", "]" do
|
|
34
34
|
q.breakable
|
|
35
35
|
q.text "includes:"
|
|
36
36
|
q.breakable
|
|
@@ -71,4 +71,3 @@ class RDoc::NormalModule < RDoc::ClassModule
|
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
end
|
|
74
|
-
|
data/lib/rdoc/options.rb
CHANGED
|
@@ -106,6 +106,7 @@ class RDoc::Options
|
|
|
106
106
|
generator_options
|
|
107
107
|
generators
|
|
108
108
|
op_dir
|
|
109
|
+
page_dir
|
|
109
110
|
option_parser
|
|
110
111
|
pipe
|
|
111
112
|
rdoc_include
|
|
@@ -338,6 +339,10 @@ class RDoc::Options
|
|
|
338
339
|
|
|
339
340
|
attr_reader :visibility
|
|
340
341
|
|
|
342
|
+
##
|
|
343
|
+
# Indicates if files of test suites should be skipped
|
|
344
|
+
attr_accessor :skip_tests
|
|
345
|
+
|
|
341
346
|
def initialize loaded_options = nil # :nodoc:
|
|
342
347
|
init_ivars
|
|
343
348
|
override loaded_options if loaded_options
|
|
@@ -385,6 +390,7 @@ class RDoc::Options
|
|
|
385
390
|
@write_options = false
|
|
386
391
|
@encoding = Encoding::UTF_8
|
|
387
392
|
@charset = @encoding.name
|
|
393
|
+
@skip_tests = true
|
|
388
394
|
end
|
|
389
395
|
|
|
390
396
|
def init_with map # :nodoc:
|
|
@@ -434,6 +440,7 @@ class RDoc::Options
|
|
|
434
440
|
@main_page = map['main_page'] if map.has_key?('main_page')
|
|
435
441
|
@markup = map['markup'] if map.has_key?('markup')
|
|
436
442
|
@op_dir = map['op_dir'] if map.has_key?('op_dir')
|
|
443
|
+
@page_dir = map['page_dir'] if map.has_key?('page_dir')
|
|
437
444
|
@show_hash = map['show_hash'] if map.has_key?('show_hash')
|
|
438
445
|
@tab_width = map['tab_width'] if map.has_key?('tab_width')
|
|
439
446
|
@template_dir = map['template_dir'] if map.has_key?('template_dir')
|
|
@@ -513,19 +520,22 @@ class RDoc::Options
|
|
|
513
520
|
##
|
|
514
521
|
# For dumping YAML
|
|
515
522
|
|
|
516
|
-
def
|
|
523
|
+
def to_yaml(*options) # :nodoc:
|
|
517
524
|
encoding = @encoding ? @encoding.name : nil
|
|
518
525
|
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
526
|
+
yaml = {}
|
|
527
|
+
yaml['encoding'] = encoding
|
|
528
|
+
yaml['static_path'] = sanitize_path(@static_path)
|
|
529
|
+
yaml['rdoc_include'] = sanitize_path(@rdoc_include)
|
|
530
|
+
yaml['page_dir'] = (sanitize_path([@page_dir]).first if @page_dir)
|
|
522
531
|
|
|
523
532
|
ivars = instance_variables.map { |ivar| ivar.to_s[1..-1] }
|
|
524
533
|
ivars -= SPECIAL
|
|
525
534
|
|
|
526
535
|
ivars.sort.each do |ivar|
|
|
527
|
-
|
|
536
|
+
yaml[ivar] = instance_variable_get("@#{ivar}")
|
|
528
537
|
end
|
|
538
|
+
yaml.to_yaml
|
|
529
539
|
end
|
|
530
540
|
|
|
531
541
|
##
|
|
@@ -548,11 +558,17 @@ class RDoc::Options
|
|
|
548
558
|
# #template.
|
|
549
559
|
|
|
550
560
|
def finish
|
|
561
|
+
if @write_options then
|
|
562
|
+
write_options
|
|
563
|
+
exit
|
|
564
|
+
end
|
|
565
|
+
|
|
551
566
|
@op_dir ||= 'doc'
|
|
552
567
|
|
|
553
|
-
@rdoc_include << "." if @rdoc_include.empty?
|
|
554
568
|
root = @root.to_s
|
|
555
|
-
@rdoc_include
|
|
569
|
+
if @rdoc_include.empty? || !@rdoc_include.include?(root)
|
|
570
|
+
@rdoc_include << root
|
|
571
|
+
end
|
|
556
572
|
|
|
557
573
|
@exclude = self.exclude
|
|
558
574
|
|
|
@@ -585,14 +601,14 @@ class RDoc::Options
|
|
|
585
601
|
def finish_page_dir
|
|
586
602
|
return unless @page_dir
|
|
587
603
|
|
|
588
|
-
@files << @page_dir
|
|
604
|
+
@files << @page_dir
|
|
589
605
|
|
|
590
|
-
page_dir =
|
|
606
|
+
page_dir = Pathname(@page_dir)
|
|
591
607
|
begin
|
|
592
|
-
page_dir =
|
|
608
|
+
page_dir = page_dir.expand_path.relative_path_from @root
|
|
593
609
|
rescue ArgumentError
|
|
594
610
|
# On Windows, sometimes crosses different drive letters.
|
|
595
|
-
page_dir =
|
|
611
|
+
page_dir = page_dir.expand_path
|
|
596
612
|
end
|
|
597
613
|
|
|
598
614
|
@page_dir = page_dir
|
|
@@ -768,6 +784,13 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
768
784
|
|
|
769
785
|
opt.separator nil
|
|
770
786
|
|
|
787
|
+
opt.on("--no-skipping-tests", nil,
|
|
788
|
+
"Don't skip generating documentation for test and spec files") do |value|
|
|
789
|
+
@skip_tests = false
|
|
790
|
+
end
|
|
791
|
+
|
|
792
|
+
opt.separator nil
|
|
793
|
+
|
|
771
794
|
opt.on("--extension=NEW=OLD", "-E",
|
|
772
795
|
"Treat files ending with .new as if they",
|
|
773
796
|
"ended with .old. Using '-E cgi=rb' will",
|
|
@@ -847,7 +870,7 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
847
870
|
"such files at your project root.",
|
|
848
871
|
"NOTE: Do not use the same file name in",
|
|
849
872
|
"the page dir and the root of your project") do |page_dir|
|
|
850
|
-
@page_dir =
|
|
873
|
+
@page_dir = page_dir
|
|
851
874
|
end
|
|
852
875
|
|
|
853
876
|
opt.separator nil
|
|
@@ -1159,13 +1182,6 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
1159
1182
|
|
|
1160
1183
|
@files = argv.dup
|
|
1161
1184
|
|
|
1162
|
-
finish
|
|
1163
|
-
|
|
1164
|
-
if @write_options then
|
|
1165
|
-
write_options
|
|
1166
|
-
exit
|
|
1167
|
-
end
|
|
1168
|
-
|
|
1169
1185
|
self
|
|
1170
1186
|
end
|
|
1171
1187
|
|
|
@@ -1278,7 +1294,7 @@ Usage: #{opt.program_name} [options] [names...]
|
|
|
1278
1294
|
File.open '.rdoc_options', 'w' do |io|
|
|
1279
1295
|
io.set_encoding Encoding::UTF_8
|
|
1280
1296
|
|
|
1281
|
-
|
|
1297
|
+
io.print to_yaml
|
|
1282
1298
|
end
|
|
1283
1299
|
end
|
|
1284
1300
|
|
data/lib/rdoc/parser/c.rb
CHANGED
|
@@ -122,6 +122,11 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
122
122
|
|
|
123
123
|
include RDoc::Text
|
|
124
124
|
|
|
125
|
+
# :stopdoc:
|
|
126
|
+
BOOL_ARG_PATTERN = /\s*+\b([01]|Q?(?:true|false)|TRUE|FALSE)\b\s*/
|
|
127
|
+
TRUE_VALUES = ['1', 'TRUE', 'true', 'Qtrue'].freeze
|
|
128
|
+
# :startdoc:
|
|
129
|
+
|
|
125
130
|
##
|
|
126
131
|
# Maps C variable names to names of Ruby classes or modules
|
|
127
132
|
|
|
@@ -259,18 +264,18 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
259
264
|
@content.scan(/rb_attr\s*\(
|
|
260
265
|
\s*(\w+),
|
|
261
266
|
\s*([\w"()]+),
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
\s*\w+\);/
|
|
267
|
+
#{BOOL_ARG_PATTERN},
|
|
268
|
+
#{BOOL_ARG_PATTERN},
|
|
269
|
+
\s*\w+\);/xmo) do |var_name, attr_name, read, write|
|
|
265
270
|
handle_attr var_name, attr_name, read, write
|
|
266
271
|
end
|
|
267
272
|
|
|
268
273
|
@content.scan(%r%rb_define_attr\(
|
|
269
274
|
\s*([\w\.]+),
|
|
270
275
|
\s*"([^"]+)",
|
|
271
|
-
|
|
272
|
-
\
|
|
273
|
-
%
|
|
276
|
+
#{BOOL_ARG_PATTERN},
|
|
277
|
+
#{BOOL_ARG_PATTERN}\);
|
|
278
|
+
%xmo) do |var_name, attr_name, read, write|
|
|
274
279
|
handle_attr var_name, attr_name, read, write
|
|
275
280
|
end
|
|
276
281
|
end
|
|
@@ -295,94 +300,92 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
295
300
|
|
|
296
301
|
@content.scan(
|
|
297
302
|
%r(
|
|
303
|
+
(?<open>\s*\(\s*) {0}
|
|
304
|
+
(?<close>\s*\)\s*) {0}
|
|
305
|
+
(?<name>\s*"(?<class_name>\w+)") {0}
|
|
306
|
+
(?<parent>\s*(?:
|
|
307
|
+
(?<parent_name>[\w\*\s\(\)\.\->]+) |
|
|
308
|
+
rb_path2class\s*\(\s*"(?<path>[\w:]+)"\s*\)
|
|
309
|
+
)) {0}
|
|
310
|
+
(?<under>\w+) {0}
|
|
311
|
+
|
|
298
312
|
(?<var_name>[\w\.]+)\s* =
|
|
299
313
|
\s*rb_(?:
|
|
300
314
|
define_(?:
|
|
301
|
-
class(?: # rb_define_class(
|
|
302
|
-
\s
|
|
303
|
-
\
|
|
304
|
-
\
|
|
305
|
-
\)
|
|
306
|
-
|
|
|
307
|
-
_under\s*\( # rb_define_class_under(class_under, class_name2, parent_name2...)
|
|
308
|
-
\s* (?<class_under>\w+),
|
|
309
|
-
\s* "(?<class_name_2>\w+)",
|
|
310
|
-
\s*
|
|
311
|
-
(?:
|
|
312
|
-
(?<parent_name_2>[\w\*\s\(\)\.\->]+) |
|
|
313
|
-
rb_path2class\("(?<path>[\w:]+)"\)
|
|
314
|
-
)
|
|
315
|
+
class(?: # rb_define_class(name, parent_name)
|
|
316
|
+
\(\s*
|
|
317
|
+
\g<name>,
|
|
318
|
+
\g<parent>
|
|
315
319
|
\s*\)
|
|
320
|
+
|
|
|
321
|
+
_under\g<open> # rb_define_class_under(under, name, parent_name...)
|
|
322
|
+
\g<under>,
|
|
323
|
+
\g<name>,
|
|
324
|
+
\g<parent>
|
|
325
|
+
\g<close>
|
|
316
326
|
)
|
|
317
327
|
|
|
|
318
|
-
module
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
328
|
+
(?<module>)
|
|
329
|
+
module(?: # rb_define_module(name)
|
|
330
|
+
\g<open>
|
|
331
|
+
\g<name>
|
|
332
|
+
\g<close>
|
|
322
333
|
|
|
|
323
|
-
_under\
|
|
324
|
-
\
|
|
325
|
-
\
|
|
326
|
-
\
|
|
334
|
+
_under\g<open> # rb_define_module_under(under, name)
|
|
335
|
+
\g<under>,
|
|
336
|
+
\g<name>
|
|
337
|
+
\g<close>
|
|
327
338
|
)
|
|
328
339
|
)
|
|
329
340
|
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
\
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
\
|
|
336
|
-
|
|
341
|
+
(?<attributes>(?:\s*"\w+",)*\s*NULL\s*) {0}
|
|
342
|
+
struct_define(?:
|
|
343
|
+
\g<open> # rb_struct_define(name, ...)
|
|
344
|
+
\g<name>,
|
|
345
|
+
|
|
|
346
|
+
_under\g<open> # rb_struct_define_under(under, name, ...)
|
|
347
|
+
\g<under>,
|
|
348
|
+
\g<name>,
|
|
349
|
+
|
|
|
350
|
+
_without_accessor(?:
|
|
351
|
+
\g<open> # rb_struct_define_without_accessor(name, parent_name, ...)
|
|
352
|
+
|
|
|
353
|
+
_under\g<open> # rb_struct_define_without_accessor_under(under, name, parent_name, ...)
|
|
354
|
+
\g<under>,
|
|
355
|
+
)
|
|
356
|
+
\g<name>,
|
|
357
|
+
\g<parent>,
|
|
358
|
+
\s*\w+, # Allocation function
|
|
359
|
+
)
|
|
360
|
+
\g<attributes>
|
|
361
|
+
\g<close>
|
|
337
362
|
|
|
|
338
|
-
singleton_class\
|
|
339
|
-
|
|
340
|
-
\
|
|
363
|
+
singleton_class\g<open> # rb_singleton_class(target_class_name)
|
|
364
|
+
(?<target_class_name>\w+)
|
|
365
|
+
\g<close>
|
|
341
366
|
)
|
|
342
367
|
)mx
|
|
343
368
|
) do
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
parent_name = $~[:parent_name_1]
|
|
349
|
-
#under = nil
|
|
350
|
-
else
|
|
351
|
-
class_name = $~[:class_name_2]
|
|
352
|
-
if class_name
|
|
353
|
-
# rb_define_class_under(class_under, class_name2, parent_name2...)
|
|
354
|
-
parent_name = $~[:parent_name_2] || $~[:path]
|
|
355
|
-
under = $~[:class_under]
|
|
356
|
-
else
|
|
357
|
-
class_name = $~[:class_name_3]
|
|
358
|
-
if class_name
|
|
359
|
-
# rb_struct_define_without_accessor(class_name_3, parent_name_3, ...)
|
|
360
|
-
parent_name = $~[:parent_name_3]
|
|
361
|
-
#under = nil
|
|
362
|
-
else
|
|
363
|
-
type = :module
|
|
364
|
-
class_name = $~[:module_name_1]
|
|
365
|
-
#parent_name = nil
|
|
366
|
-
if class_name
|
|
367
|
-
# rb_define_module(module_name_1)
|
|
368
|
-
#under = nil
|
|
369
|
-
else
|
|
370
|
-
class_name = $~[:module_name_2]
|
|
371
|
-
if class_name
|
|
372
|
-
# rb_define_module_under(module_under, module_name_1)
|
|
373
|
-
under = $~[:module_under]
|
|
374
|
-
else
|
|
375
|
-
# rb_singleton_class(target_class_name)
|
|
376
|
-
target_class_name = $~[:target_class_name]
|
|
377
|
-
handle_singleton $~[:var_name], target_class_name
|
|
378
|
-
next
|
|
379
|
-
end
|
|
380
|
-
end
|
|
381
|
-
end
|
|
382
|
-
end
|
|
369
|
+
if target_class_name = $~[:target_class_name]
|
|
370
|
+
# rb_singleton_class(target_class_name)
|
|
371
|
+
handle_singleton $~[:var_name], target_class_name
|
|
372
|
+
next
|
|
383
373
|
end
|
|
384
374
|
|
|
385
|
-
|
|
375
|
+
var_name = $~[:var_name]
|
|
376
|
+
type = $~[:module] ? :module : :class
|
|
377
|
+
class_name = $~[:class_name]
|
|
378
|
+
parent_name = $~[:parent_name] || $~[:path]
|
|
379
|
+
under = $~[:under]
|
|
380
|
+
attributes = $~[:attributes]
|
|
381
|
+
|
|
382
|
+
handle_class_module(var_name, type, class_name, parent_name, under)
|
|
383
|
+
if attributes and !parent_name # rb_struct_define *not* without_accessor
|
|
384
|
+
true_flag = 'Qtrue'
|
|
385
|
+
attributes.scan(/"\K\w+(?=")/) do |attr_name|
|
|
386
|
+
handle_attr var_name, attr_name, true_flag, true_flag
|
|
387
|
+
end
|
|
388
|
+
end
|
|
386
389
|
end
|
|
387
390
|
end
|
|
388
391
|
|
|
@@ -677,13 +680,14 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
677
680
|
##
|
|
678
681
|
# Finds a RDoc::NormalClass or RDoc::NormalModule for +raw_name+
|
|
679
682
|
|
|
680
|
-
def find_class(raw_name, name)
|
|
683
|
+
def find_class(raw_name, name, base_name = nil)
|
|
681
684
|
unless @classes[raw_name]
|
|
682
685
|
if raw_name =~ /^rb_m/
|
|
683
686
|
container = @top_level.add_module RDoc::NormalModule, name
|
|
684
687
|
else
|
|
685
688
|
container = @top_level.add_class RDoc::NormalClass, name
|
|
686
689
|
end
|
|
690
|
+
container.name = base_name if base_name
|
|
687
691
|
|
|
688
692
|
container.record_location @top_level
|
|
689
693
|
@classes[raw_name] = container
|
|
@@ -724,7 +728,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
724
728
|
((?>/\*.*?\*/\s+))
|
|
725
729
|
(static\s+)?
|
|
726
730
|
void\s+
|
|
727
|
-
|
|
731
|
+
Init(?:VM)?_(?i:#{class_name})\s*(?:_\(\s*)?\(\s*(?:void\s*)?\)%xm then
|
|
728
732
|
comment = $1.sub(%r%Document-(?:class|module):\s+#{class_name}%, '')
|
|
729
733
|
elsif @content =~ %r%Document-(?:class|module):\s+#{class_name}\s*?
|
|
730
734
|
(?:<\s+[:,\w]+)?\n((?>.*?\*/))%xm then
|
|
@@ -824,8 +828,8 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
824
828
|
|
|
825
829
|
def handle_attr(var_name, attr_name, read, write)
|
|
826
830
|
rw = ''
|
|
827
|
-
rw += 'R' if
|
|
828
|
-
rw += 'W' if
|
|
831
|
+
rw += 'R' if TRUE_VALUES.include?(read)
|
|
832
|
+
rw += 'W' if TRUE_VALUES.include?(write)
|
|
829
833
|
|
|
830
834
|
class_name = @known_classes[var_name]
|
|
831
835
|
|
|
@@ -921,7 +925,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
921
925
|
|
|
922
926
|
return unless class_name
|
|
923
927
|
|
|
924
|
-
class_obj = find_class var_name, class_name
|
|
928
|
+
class_obj = find_class var_name, class_name, class_name[/::\K[^:]+\z/]
|
|
925
929
|
|
|
926
930
|
unless class_obj then
|
|
927
931
|
@options.warn 'Enclosing class or module %p is not known' % [const_name]
|
|
@@ -1025,7 +1029,8 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
1025
1029
|
elsif p_count == -1 then # argc, argv
|
|
1026
1030
|
rb_scan_args body
|
|
1027
1031
|
else
|
|
1028
|
-
|
|
1032
|
+
args = (1..p_count).map { |i| "p#{i}" }
|
|
1033
|
+
"(#{args.join ', '})"
|
|
1029
1034
|
end
|
|
1030
1035
|
|
|
1031
1036
|
|
|
@@ -1052,23 +1057,6 @@ class RDoc::Parser::C < RDoc::Parser
|
|
|
1052
1057
|
@singleton_classes[sclass_var] = class_name
|
|
1053
1058
|
end
|
|
1054
1059
|
|
|
1055
|
-
##
|
|
1056
|
-
# Normalizes tabs in +body+
|
|
1057
|
-
|
|
1058
|
-
def handle_tab_width(body)
|
|
1059
|
-
if /\t/ =~ body
|
|
1060
|
-
tab_width = @options.tab_width
|
|
1061
|
-
body.split(/\n/).map do |line|
|
|
1062
|
-
1 while line.gsub!(/\t+/) do
|
|
1063
|
-
' ' * (tab_width * $&.length - $`.length % tab_width)
|
|
1064
|
-
end && $~
|
|
1065
|
-
line
|
|
1066
|
-
end.join "\n"
|
|
1067
|
-
else
|
|
1068
|
-
body
|
|
1069
|
-
end
|
|
1070
|
-
end
|
|
1071
|
-
|
|
1072
1060
|
##
|
|
1073
1061
|
# Loads the variable map with the given +name+ from the RDoc::Store, if
|
|
1074
1062
|
# present.
|
data/lib/rdoc/parser/markdown.rb
CHANGED
data/lib/rdoc/parser/rd.rb
CHANGED
|
@@ -368,7 +368,7 @@ class RDoc::Parser::RipperStateLex
|
|
|
368
368
|
private def get_symbol_tk(tk)
|
|
369
369
|
is_symbol = true
|
|
370
370
|
symbol_tk = Token.new(tk.line_no, tk.char_no, :on_symbol)
|
|
371
|
-
if ":'" == tk[:text] or ':"' == tk[:text]
|
|
371
|
+
if ":'" == tk[:text] or ':"' == tk[:text] or tk[:text].start_with?('%s')
|
|
372
372
|
tk1 = get_string_tk(tk)
|
|
373
373
|
symbol_tk[:text] = tk1[:text]
|
|
374
374
|
symbol_tk[:state] = tk1[:state]
|
data/lib/rdoc/parser/ruby.rb
CHANGED
|
@@ -8,6 +8,9 @@
|
|
|
8
8
|
# by Keiju ISHITSUKA (Nippon Rational Inc.)
|
|
9
9
|
#
|
|
10
10
|
|
|
11
|
+
require 'ripper'
|
|
12
|
+
require_relative 'ripper_state_lex'
|
|
13
|
+
|
|
11
14
|
##
|
|
12
15
|
# Extracts code elements from a source file returning a TopLevel object
|
|
13
16
|
# containing the constituent file elements.
|
|
@@ -138,9 +141,6 @@
|
|
|
138
141
|
# Note that by default, the :method: directive will be ignored if there is a
|
|
139
142
|
# standard rdocable item following it.
|
|
140
143
|
|
|
141
|
-
require 'ripper'
|
|
142
|
-
require_relative 'ripper_state_lex'
|
|
143
|
-
|
|
144
144
|
class RDoc::Parser::Ruby < RDoc::Parser
|
|
145
145
|
|
|
146
146
|
parse_files_matching(/\.rbw?$/)
|
|
@@ -164,15 +164,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
|
164
164
|
def initialize(top_level, file_name, content, options, stats)
|
|
165
165
|
super
|
|
166
166
|
|
|
167
|
-
|
|
168
|
-
tab_width = @options.tab_width
|
|
169
|
-
content = content.split(/\n/).map do |line|
|
|
170
|
-
1 while line.gsub!(/\t+/) {
|
|
171
|
-
' ' * (tab_width*$&.length - $`.length % tab_width)
|
|
172
|
-
} && $~
|
|
173
|
-
line
|
|
174
|
-
end.join("\n")
|
|
175
|
-
end
|
|
167
|
+
content = handle_tab_width(content)
|
|
176
168
|
|
|
177
169
|
@size = 0
|
|
178
170
|
@token_listeners = nil
|
|
@@ -399,6 +391,29 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
|
399
391
|
return [container, name_t, given_name, new_modules]
|
|
400
392
|
end
|
|
401
393
|
|
|
394
|
+
##
|
|
395
|
+
# Skip opening parentheses and yield the block.
|
|
396
|
+
# Skip closing parentheses too when exists.
|
|
397
|
+
|
|
398
|
+
def skip_parentheses(&block)
|
|
399
|
+
left_tk = peek_tk
|
|
400
|
+
|
|
401
|
+
if :on_lparen == left_tk[:kind]
|
|
402
|
+
get_tk
|
|
403
|
+
|
|
404
|
+
ret = skip_parentheses(&block)
|
|
405
|
+
|
|
406
|
+
right_tk = peek_tk
|
|
407
|
+
if :on_rparen == right_tk[:kind]
|
|
408
|
+
get_tk
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
ret
|
|
412
|
+
else
|
|
413
|
+
yield
|
|
414
|
+
end
|
|
415
|
+
end
|
|
416
|
+
|
|
402
417
|
##
|
|
403
418
|
# Return a superclass, which can be either a constant of an expression
|
|
404
419
|
|
|
@@ -833,7 +848,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
|
833
848
|
cls = parse_class_regular container, declaration_context, single,
|
|
834
849
|
name_t, given_name, comment
|
|
835
850
|
elsif name_t[:kind] == :on_op && name_t[:text] == '<<'
|
|
836
|
-
case name = get_class_specification
|
|
851
|
+
case name = skip_parentheses { get_class_specification }
|
|
837
852
|
when 'self', container.name
|
|
838
853
|
read_documentation_modifiers cls, RDoc::CLASS_MODIFIERS
|
|
839
854
|
parse_statements container, SINGLE
|
|
@@ -2119,7 +2134,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
|
2119
2134
|
if :on_nl == tk[:kind] or (:on_kw == tk[:kind] && 'def' == tk[:text]) then
|
|
2120
2135
|
return
|
|
2121
2136
|
elsif :on_comment == tk[:kind] or :on_embdoc == tk[:kind] then
|
|
2122
|
-
return unless tk[:text] =~
|
|
2137
|
+
return unless tk[:text] =~ /:?\b([\w-]+):\s*(.*)/
|
|
2123
2138
|
|
|
2124
2139
|
directive = $1.downcase
|
|
2125
2140
|
|
data/lib/rdoc/parser/text.rb
CHANGED
data/lib/rdoc/parser.rb
CHANGED
|
@@ -263,9 +263,26 @@ class RDoc::Parser
|
|
|
263
263
|
@preprocess.options = @options
|
|
264
264
|
end
|
|
265
265
|
|
|
266
|
-
autoload :RubyTools,
|
|
267
|
-
autoload :Text,
|
|
266
|
+
autoload :RubyTools, "#{__dir__}/parser/ruby_tools"
|
|
267
|
+
autoload :Text, "#{__dir__}/parser/text"
|
|
268
268
|
|
|
269
|
+
##
|
|
270
|
+
# Normalizes tabs in +body+
|
|
271
|
+
|
|
272
|
+
def handle_tab_width(body)
|
|
273
|
+
if /\t/ =~ body
|
|
274
|
+
tab_width = @options.tab_width
|
|
275
|
+
body.split(/\n/).map do |line|
|
|
276
|
+
1 while line.gsub!(/\t+/) do
|
|
277
|
+
b, e = $~.offset(0)
|
|
278
|
+
' ' * (tab_width * (e-b) - b % tab_width)
|
|
279
|
+
end
|
|
280
|
+
line
|
|
281
|
+
end.join "\n"
|
|
282
|
+
else
|
|
283
|
+
body
|
|
284
|
+
end
|
|
285
|
+
end
|
|
269
286
|
end
|
|
270
287
|
|
|
271
288
|
# simple must come first in order to show up last in the parsers list
|