rdoc 6.4.0 → 6.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|