rdoc 6.1.2 → 6.2.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of rdoc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +9 -0
- data/README.rdoc +0 -1
- data/Rakefile +1 -1
- data/lib/rdoc/class_module.rb +1 -1
- data/lib/rdoc/comment.rb +7 -1
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +13 -5
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +0 -1
- data/lib/rdoc/markup.rb +0 -2
- data/lib/rdoc/markup/parser.rb +58 -42
- data/lib/rdoc/markup/to_html_crossref.rb +5 -1
- data/lib/rdoc/options.rb +4 -1
- data/lib/rdoc/parser/c.rb +116 -126
- data/lib/rdoc/parser/ripper_state_lex.rb +2 -1
- data/lib/rdoc/parser/ruby.rb +3 -3
- data/lib/rdoc/rdoc.rb +1 -1
- data/lib/rdoc/ri/paths.rb +1 -1
- data/lib/rdoc/servlet.rb +10 -7
- data/lib/rdoc/store.rb +4 -12
- data/lib/rdoc/task.rb +1 -1
- data/lib/rdoc/text.rb +8 -2
- data/lib/rdoc/token_stream.rb +8 -3
- data/lib/rdoc/tom_doc.rb +6 -7
- data/lib/rdoc/version.rb +1 -1
- data/rdoc.gemspec +1 -7
- metadata +2 -76
- data/.travis.yml +0 -21
- data/appveyor.yml +0 -36
- data/lib/rdoc/markup/formatter_test_case.rb +0 -764
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -115
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c71da0922078855b23bba9eb9f3671d5f04abb40c690eab20382c812b1b6aacc
|
4
|
+
data.tar.gz: bf58da8ba529883aa44e4ddc5e7c88a9671e508993bfd62142813cc661bbe62c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f343d3101a0fbd05fc6d8675d9a72cc2aed5ff794258fc3fbe9f8658032857d61a68350ea09e29b84c02789cec3f0f8a6e83faf29faf41d2a00e6cbad07435c5
|
7
|
+
data.tar.gz: f0f506c54e2ebc80b69d0d26104c44ae3ecc5cefcaa90a6cd4364f8e4660fc8021e6c7426bd63363519a217728a8c3ac0be217f4d28b6b3f1c4e9b1ff6f34c26
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
home :: https://github.com/ruby/rdoc
|
4
4
|
rdoc :: https://ruby.github.io/rdoc
|
5
5
|
bugs :: https://github.com/ruby/rdoc/issues
|
6
|
-
build status :: {<img src="https://travis-ci.org/ruby/rdoc.svg?branch=master" alt="Build Status on Travis CI" />}[https://travis-ci.org/ruby/rdoc] {<img src="https://ci.appveyor.com/api/projects/status/github/ruby/rdoc?branch=master&svg=true" alt="Build Status on AppVeyor" />}[https://ci.appveyor.com/project/ruby/rdoc]
|
7
6
|
code quality :: {<img src="https://codeclimate.com/github/ruby/rdoc/badges/gpa.svg" alt="Code Climate">}[https://codeclimate.com/github/ruby/rdoc]
|
8
7
|
|
9
8
|
== Description
|
data/Rakefile
CHANGED
data/lib/rdoc/class_module.rb
CHANGED
@@ -210,7 +210,7 @@ class RDoc::ClassModule < RDoc::Context
|
|
210
210
|
normalize_comment comment
|
211
211
|
end
|
212
212
|
|
213
|
-
comment = "#{@comment}\n---\n#{comment}" unless @comment.empty?
|
213
|
+
comment = "#{@comment.to_s}\n---\n#{comment.to_s}" unless @comment.empty?
|
214
214
|
|
215
215
|
super comment
|
216
216
|
end
|
data/lib/rdoc/comment.rb
CHANGED
@@ -33,6 +33,11 @@ class RDoc::Comment
|
|
33
33
|
|
34
34
|
attr_reader :text
|
35
35
|
|
36
|
+
##
|
37
|
+
# Alias for text
|
38
|
+
|
39
|
+
alias to_s text
|
40
|
+
|
36
41
|
##
|
37
42
|
# Overrides the content returned by #parse. Use when there is no #text
|
38
43
|
# source for this comment
|
@@ -43,9 +48,10 @@ class RDoc::Comment
|
|
43
48
|
# Creates a new comment with +text+ that is found in the RDoc::TopLevel
|
44
49
|
# +location+.
|
45
50
|
|
46
|
-
def initialize text = nil, location = nil
|
51
|
+
def initialize text = nil, location = nil, language = nil
|
47
52
|
@location = location
|
48
53
|
@text = text.nil? ? nil : text.dup
|
54
|
+
@language = language
|
49
55
|
|
50
56
|
@document = nil
|
51
57
|
@format = 'rdoc'
|
@@ -74,6 +74,9 @@ h6:target {
|
|
74
74
|
code,
|
75
75
|
pre {
|
76
76
|
font-family: "Source Code Pro", Monaco, monospace;
|
77
|
+
background-color: rgba(27,31,35,0.05);
|
78
|
+
padding: 0em 0.2em;
|
79
|
+
border-radius: 0.2em;
|
77
80
|
}
|
78
81
|
|
79
82
|
/* @group Generic Classes */
|
@@ -103,7 +106,7 @@ pre {
|
|
103
106
|
|
104
107
|
.missing-docs {
|
105
108
|
font-size: 120%;
|
106
|
-
background: white url(images/wrench_orange.png) no-repeat 4px center;
|
109
|
+
background: white url(../images/wrench_orange.png) no-repeat 4px center;
|
107
110
|
color: #ccc;
|
108
111
|
line-height: 2em;
|
109
112
|
border: 1px solid #d00;
|
@@ -147,11 +150,11 @@ pre {
|
|
147
150
|
.table-of-contents li .toc-toggle {
|
148
151
|
width: 16px;
|
149
152
|
height: 16px;
|
150
|
-
background: url(images/add.png) no-repeat;
|
153
|
+
background: url(../images/add.png) no-repeat;
|
151
154
|
}
|
152
155
|
|
153
156
|
.table-of-contents li .toc-toggle.open {
|
154
|
-
background: url(images/delete.png) no-repeat;
|
157
|
+
background: url(../images/delete.png) no-repeat;
|
155
158
|
}
|
156
159
|
|
157
160
|
/* @end */
|
@@ -273,8 +276,13 @@ ul.link-list .type {
|
|
273
276
|
-webkit-border-radius: 5px;
|
274
277
|
}
|
275
278
|
|
279
|
+
dl.label-list dt {
|
280
|
+
float: left;
|
281
|
+
margin-right: 1em;
|
282
|
+
}
|
283
|
+
|
276
284
|
.calls-super {
|
277
|
-
background: url(images/arrow_up.png) no-repeat right center;
|
285
|
+
background: url(../images/arrow_up.png) no-repeat right center;
|
278
286
|
}
|
279
287
|
|
280
288
|
/* @end */
|
@@ -500,7 +508,7 @@ main .method-click-advice {
|
|
500
508
|
visibility: hidden;
|
501
509
|
padding-right: 20px;
|
502
510
|
line-height: 20px;
|
503
|
-
background: url(images/zoom.png) no-repeat right top;
|
511
|
+
background: url(../images/zoom.png) no-repeat right top;
|
504
512
|
}
|
505
513
|
main .method-heading:hover .method-click-advice {
|
506
514
|
visibility: visible;
|
data/lib/rdoc/markup.rb
CHANGED
@@ -849,8 +849,6 @@ https://github.com/ruby/rdoc/issues
|
|
849
849
|
|
850
850
|
# Formatters
|
851
851
|
autoload :Formatter, 'rdoc/markup/formatter'
|
852
|
-
autoload :FormatterTestCase, 'rdoc/markup/formatter_test_case'
|
853
|
-
autoload :TextFormatterTestCase, 'rdoc/markup/text_formatter_test_case'
|
854
852
|
|
855
853
|
autoload :ToAnsi, 'rdoc/markup/to_ansi'
|
856
854
|
autoload :ToBs, 'rdoc/markup/to_bs'
|
data/lib/rdoc/markup/parser.rb
CHANGED
@@ -80,10 +80,6 @@ class RDoc::Markup::Parser
|
|
80
80
|
@binary_input = nil
|
81
81
|
@current_token = nil
|
82
82
|
@debug = false
|
83
|
-
@input = nil
|
84
|
-
@input_encoding = nil
|
85
|
-
@line = 0
|
86
|
-
@line_pos = 0
|
87
83
|
@s = nil
|
88
84
|
@tokens = []
|
89
85
|
end
|
@@ -319,13 +315,6 @@ class RDoc::Markup::Parser
|
|
319
315
|
verbatim
|
320
316
|
end
|
321
317
|
|
322
|
-
##
|
323
|
-
# The character offset for the input string at the given +byte_offset+
|
324
|
-
|
325
|
-
def char_pos byte_offset
|
326
|
-
@input.byteslice(0, byte_offset).length
|
327
|
-
end
|
328
|
-
|
329
318
|
##
|
330
319
|
# Pulls the next token from the stream.
|
331
320
|
|
@@ -424,15 +413,53 @@ class RDoc::Markup::Parser
|
|
424
413
|
token
|
425
414
|
end
|
426
415
|
|
416
|
+
##
|
417
|
+
# A simple wrapper of StringScanner that is aware of the current column and lineno
|
418
|
+
|
419
|
+
class MyStringScanner
|
420
|
+
def initialize(input)
|
421
|
+
@line = @column = 0
|
422
|
+
@s = StringScanner.new input
|
423
|
+
end
|
424
|
+
|
425
|
+
def scan(re)
|
426
|
+
ret = @s.scan(re)
|
427
|
+
@column += ret.length if ret
|
428
|
+
ret
|
429
|
+
end
|
430
|
+
|
431
|
+
def unscan(s)
|
432
|
+
@s.pos -= s.bytesize
|
433
|
+
@column -= s.length
|
434
|
+
end
|
435
|
+
|
436
|
+
def pos
|
437
|
+
[@column, @line]
|
438
|
+
end
|
439
|
+
|
440
|
+
def newline!
|
441
|
+
@column = 0
|
442
|
+
@line += 1
|
443
|
+
end
|
444
|
+
|
445
|
+
def eos?
|
446
|
+
@s.eos?
|
447
|
+
end
|
448
|
+
|
449
|
+
def matched
|
450
|
+
@s.matched
|
451
|
+
end
|
452
|
+
|
453
|
+
def [](i)
|
454
|
+
@s[i]
|
455
|
+
end
|
456
|
+
end
|
457
|
+
|
427
458
|
##
|
428
459
|
# Creates the StringScanner
|
429
460
|
|
430
461
|
def setup_scanner input
|
431
|
-
@
|
432
|
-
@line_pos = 0
|
433
|
-
@input = input.dup
|
434
|
-
|
435
|
-
@s = StringScanner.new input
|
462
|
+
@s = MyStringScanner.new input
|
436
463
|
end
|
437
464
|
|
438
465
|
##
|
@@ -467,31 +494,30 @@ class RDoc::Markup::Parser
|
|
467
494
|
@tokens << case
|
468
495
|
# [CR]LF => :NEWLINE
|
469
496
|
when @s.scan(/\r?\n/) then
|
470
|
-
token = [:NEWLINE, @s.matched, *
|
471
|
-
@
|
472
|
-
@line += 1
|
497
|
+
token = [:NEWLINE, @s.matched, *pos]
|
498
|
+
@s.newline!
|
473
499
|
token
|
474
500
|
# === text => :HEADER then :TEXT
|
475
501
|
when @s.scan(/(=+)(\s*)/) then
|
476
502
|
level = @s[1].length
|
477
|
-
header = [:HEADER, level, *
|
503
|
+
header = [:HEADER, level, *pos]
|
478
504
|
|
479
505
|
if @s[2] =~ /^\r?\n/ then
|
480
|
-
@s.
|
506
|
+
@s.unscan(@s[2])
|
481
507
|
header
|
482
508
|
else
|
483
509
|
pos = @s.pos
|
484
510
|
@s.scan(/.*/)
|
485
511
|
@tokens << header
|
486
|
-
[:TEXT, @s.matched.sub(/\r$/, ''), *
|
512
|
+
[:TEXT, @s.matched.sub(/\r$/, ''), *pos]
|
487
513
|
end
|
488
514
|
# --- (at least 3) and nothing else on the line => :RULE
|
489
515
|
when @s.scan(/(-{3,}) *\r?$/) then
|
490
|
-
[:RULE, @s[1].length - 2, *
|
516
|
+
[:RULE, @s[1].length - 2, *pos]
|
491
517
|
# * or - followed by white space and text => :BULLET
|
492
518
|
when @s.scan(/([*-]) +(\S)/) then
|
493
|
-
@s.
|
494
|
-
[:BULLET, @s[1], *
|
519
|
+
@s.unscan(@s[2])
|
520
|
+
[:BULLET, @s[1], *pos]
|
495
521
|
# A. text, a. text, 12. text => :UALPHA, :LALPHA, :NUMBER
|
496
522
|
when @s.scan(/([a-z]|\d+)\. +(\S)/i) then
|
497
523
|
# FIXME if tab(s), the column will be wrong
|
@@ -500,7 +526,7 @@ class RDoc::Markup::Parser
|
|
500
526
|
# before (and provide a check for that at least in debug
|
501
527
|
# mode)
|
502
528
|
list_label = @s[1]
|
503
|
-
@s.
|
529
|
+
@s.unscan(@s[2])
|
504
530
|
list_type =
|
505
531
|
case list_label
|
506
532
|
when /[a-z]/ then :LALPHA
|
@@ -509,24 +535,24 @@ class RDoc::Markup::Parser
|
|
509
535
|
else
|
510
536
|
raise ParseError, "BUG token #{list_label}"
|
511
537
|
end
|
512
|
-
[list_type, list_label, *
|
538
|
+
[list_type, list_label, *pos]
|
513
539
|
# [text] followed by spaces or end of line => :LABEL
|
514
540
|
when @s.scan(/\[(.*?)\]( +|\r?$)/) then
|
515
|
-
[:LABEL, @s[1], *
|
541
|
+
[:LABEL, @s[1], *pos]
|
516
542
|
# text:: followed by spaces or end of line => :NOTE
|
517
543
|
when @s.scan(/(.*?)::( +|\r?$)/) then
|
518
|
-
[:NOTE, @s[1], *
|
544
|
+
[:NOTE, @s[1], *pos]
|
519
545
|
# >>> followed by end of line => :BLOCKQUOTE
|
520
546
|
when @s.scan(/>>> *(\w+)?$/) then
|
521
|
-
[:BLOCKQUOTE, @s[1], *
|
547
|
+
[:BLOCKQUOTE, @s[1], *pos]
|
522
548
|
# anything else: :TEXT
|
523
549
|
else
|
524
550
|
@s.scan(/(.*?)( )?\r?$/)
|
525
|
-
token = [:TEXT, @s[1], *
|
551
|
+
token = [:TEXT, @s[1], *pos]
|
526
552
|
|
527
553
|
if @s[2] then
|
528
554
|
@tokens << token
|
529
|
-
[:BREAK, @s[2],
|
555
|
+
[:BREAK, @s[2], pos[0] + @s[1].length, pos[1]]
|
530
556
|
else
|
531
557
|
token
|
532
558
|
end
|
@@ -536,16 +562,6 @@ class RDoc::Markup::Parser
|
|
536
562
|
self
|
537
563
|
end
|
538
564
|
|
539
|
-
##
|
540
|
-
# Calculates the column (by character) and line of the current token based
|
541
|
-
# on +byte_offset+.
|
542
|
-
|
543
|
-
def token_pos byte_offset
|
544
|
-
offset = char_pos byte_offset
|
545
|
-
|
546
|
-
[offset - @line_pos, @line]
|
547
|
-
end
|
548
|
-
|
549
565
|
##
|
550
566
|
# Returns the current token to the token stream
|
551
567
|
|
@@ -153,7 +153,11 @@ class RDoc::Markup::ToHtmlCrossref < RDoc::Markup::ToHtml
|
|
153
153
|
ref.sections.any? { |section| label == section.title } then
|
154
154
|
path << "##{label}"
|
155
155
|
else
|
156
|
-
|
156
|
+
if ref.respond_to?(:aref)
|
157
|
+
path << "##{ref.aref}-label-#{label}"
|
158
|
+
else
|
159
|
+
path << "#label-#{label}"
|
160
|
+
end
|
157
161
|
end if label
|
158
162
|
|
159
163
|
"<a href=\"#{path}\">#{text}</a>"
|
data/lib/rdoc/options.rb
CHANGED
data/lib/rdoc/parser/c.rb
CHANGED
@@ -3,15 +3,15 @@ require 'tsort'
|
|
3
3
|
|
4
4
|
##
|
5
5
|
# RDoc::Parser::C attempts to parse C extension files. It looks for
|
6
|
-
# the standard patterns that you find in extensions:
|
7
|
-
# rb_define_method
|
6
|
+
# the standard patterns that you find in extensions: +rb_define_class+,
|
7
|
+
# +rb_define_method+ and so on. It tries to find the corresponding
|
8
8
|
# C source for the methods and extract comments, but if we fail
|
9
9
|
# we don't worry too much.
|
10
10
|
#
|
11
11
|
# The comments associated with a Ruby method are extracted from the C
|
12
12
|
# comment block associated with the routine that _implements_ that
|
13
13
|
# method, that is to say the method whose name is given in the
|
14
|
-
#
|
14
|
+
# +rb_define_method+ call. For example, you might write:
|
15
15
|
#
|
16
16
|
# /*
|
17
17
|
# * Returns a new array that is a one-dimensional flattening of this
|
@@ -24,8 +24,7 @@ require 'tsort'
|
|
24
24
|
# * a.flatten #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
25
25
|
# */
|
26
26
|
# static VALUE
|
27
|
-
# rb_ary_flatten(ary)
|
28
|
-
# VALUE ary;
|
27
|
+
# rb_ary_flatten(VALUE ary)
|
29
28
|
# {
|
30
29
|
# ary = rb_obj_dup(ary);
|
31
30
|
# rb_ary_flatten_bang(ary);
|
@@ -35,16 +34,16 @@ require 'tsort'
|
|
35
34
|
# ...
|
36
35
|
#
|
37
36
|
# void
|
38
|
-
# Init_Array()
|
37
|
+
# Init_Array(void)
|
39
38
|
# {
|
40
39
|
# ...
|
41
40
|
# rb_define_method(rb_cArray, "flatten", rb_ary_flatten, 0);
|
42
41
|
#
|
43
|
-
# Here RDoc will determine from the rb_define_method line that there's a
|
42
|
+
# Here RDoc will determine from the +rb_define_method+ line that there's a
|
44
43
|
# method called "flatten" in class Array, and will look for the implementation
|
45
|
-
# in the method rb_ary_flatten
|
44
|
+
# in the method +rb_ary_flatten+. It will then use the comment from that
|
46
45
|
# method in the HTML output. This method must be in the same source file
|
47
|
-
# as the rb_define_method
|
46
|
+
# as the +rb_define_method+.
|
48
47
|
#
|
49
48
|
# The comment blocks may include special directives:
|
50
49
|
#
|
@@ -70,15 +69,15 @@ require 'tsort'
|
|
70
69
|
# [Document-variable: +name+]
|
71
70
|
# Documentation for the named +rb_define_variable+
|
72
71
|
#
|
73
|
-
# [Document-method
|
72
|
+
# [Document-method\: +method_name+]
|
74
73
|
# Documentation for the named method. Use this when the method name is
|
75
74
|
# unambiguous.
|
76
75
|
#
|
77
|
-
# [Document-method
|
76
|
+
# [Document-method\: <tt>ClassName::method_name</tt>]
|
78
77
|
# Documentation for a singleton method in the given class. Use this when
|
79
78
|
# the method name alone is ambiguous.
|
80
79
|
#
|
81
|
-
# [Document-method
|
80
|
+
# [Document-method\: <tt>ClassName#method_name</tt>]
|
82
81
|
# Documentation for a instance method in the given class. Use this when the
|
83
82
|
# method name alone is ambiguous.
|
84
83
|
#
|
@@ -325,12 +324,100 @@ class RDoc::Parser::C < RDoc::Parser
|
|
325
324
|
# Scans #content for rb_define_class, boot_defclass, rb_define_class_under
|
326
325
|
# and rb_singleton_class
|
327
326
|
|
328
|
-
def
|
329
|
-
do_boot_defclass
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
327
|
+
def do_classes_and_modules
|
328
|
+
do_boot_defclass if @file_name == "class.c"
|
329
|
+
|
330
|
+
@content.scan(
|
331
|
+
%r(
|
332
|
+
(?<var_name>[\w\.]+)\s* =
|
333
|
+
\s*rb_(?:
|
334
|
+
define_(?:
|
335
|
+
class(?: # rb_define_class(class_name_1, parent_name_1)
|
336
|
+
\s*\(
|
337
|
+
\s*"(?<class_name_1>\w+)",
|
338
|
+
\s*(?<parent_name_1>\w+)\s*
|
339
|
+
\)
|
340
|
+
|
|
341
|
+
_under\s*\( # rb_define_class_under(class_under, class_name2, parent_name2...)
|
342
|
+
\s* (?<class_under>\w+),
|
343
|
+
\s* "(?<class_name_2>\w+)",
|
344
|
+
\s*
|
345
|
+
(?:
|
346
|
+
(?<parent_name_2>[\w\*\s\(\)\.\->]+) |
|
347
|
+
rb_path2class\("(?<path>[\w:]+)"\)
|
348
|
+
)
|
349
|
+
\s*\)
|
350
|
+
)
|
351
|
+
|
|
352
|
+
module(?: # rb_define_module(module_name_1)
|
353
|
+
\s*\(
|
354
|
+
\s*"(?<module_name_1>\w+)"\s*
|
355
|
+
\)
|
356
|
+
|
|
357
|
+
_under\s*\( # rb_define_module_under(module_under, module_name_1)
|
358
|
+
\s*(?<module_under>\w+),
|
359
|
+
\s*"(?<module_name_2>\w+)"
|
360
|
+
\s*\)
|
361
|
+
)
|
362
|
+
)
|
363
|
+
|
|
364
|
+
struct_define_without_accessor\s*\( # rb_struct_define_without_accessor(class_name_3, parent_name_3, ...)
|
365
|
+
\s*"(?<class_name_3>\w+)",
|
366
|
+
\s*(?<parent_name_3>\w+),
|
367
|
+
\s*\w+, # Allocation function
|
368
|
+
(?:\s*"\w+",)* # Attributes
|
369
|
+
\s*NULL
|
370
|
+
\)
|
371
|
+
|
|
372
|
+
singleton_class\s*\( # rb_singleton_class(target_class_name)
|
373
|
+
\s*(?<target_class_name>\w+)
|
374
|
+
\)
|
375
|
+
)
|
376
|
+
)mx
|
377
|
+
) do
|
378
|
+
class_name = $~[:class_name_1]
|
379
|
+
type = :class
|
380
|
+
if class_name
|
381
|
+
# rb_define_class(class_name_1, parent_name_1)
|
382
|
+
parent_name = $~[:parent_name_1]
|
383
|
+
#under = nil
|
384
|
+
else
|
385
|
+
class_name = $~[:class_name_2]
|
386
|
+
if class_name
|
387
|
+
# rb_define_class_under(class_under, class_name2, parent_name2...)
|
388
|
+
parent_name = $~[:parent_name_2] || $~[:path]
|
389
|
+
under = $~[:class_under]
|
390
|
+
else
|
391
|
+
class_name = $~[:class_name_3]
|
392
|
+
if class_name
|
393
|
+
# rb_struct_define_without_accessor(class_name_3, parent_name_3, ...)
|
394
|
+
parent_name = $~[:parent_name_3]
|
395
|
+
#under = nil
|
396
|
+
else
|
397
|
+
type = :module
|
398
|
+
class_name = $~[:module_name_1]
|
399
|
+
#parent_name = nil
|
400
|
+
if class_name
|
401
|
+
# rb_define_module(module_name_1)
|
402
|
+
#under = nil
|
403
|
+
else
|
404
|
+
class_name = $~[:module_name_2]
|
405
|
+
if class_name
|
406
|
+
# rb_define_module_under(module_under, module_name_1)
|
407
|
+
under = $~[:module_under]
|
408
|
+
else
|
409
|
+
# rb_singleton_class(target_class_name)
|
410
|
+
target_class_name = $~[:target_class_name]
|
411
|
+
handle_singleton $~[:var_name], target_class_name
|
412
|
+
next
|
413
|
+
end
|
414
|
+
end
|
415
|
+
end
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
419
|
+
handle_class_module($~[:var_name], type, class_name, parent_name, under)
|
420
|
+
end
|
334
421
|
end
|
335
422
|
|
336
423
|
##
|
@@ -379,65 +466,6 @@ class RDoc::Parser::C < RDoc::Parser
|
|
379
466
|
end
|
380
467
|
end
|
381
468
|
|
382
|
-
##
|
383
|
-
# Scans #content for rb_define_class
|
384
|
-
|
385
|
-
def do_define_class
|
386
|
-
# The '.' lets us handle SWIG-generated files
|
387
|
-
@content.scan(/([\w\.]+)\s* = \s*rb_define_class\s*
|
388
|
-
\(
|
389
|
-
\s*"(\w+)",
|
390
|
-
\s*(\w+)\s*
|
391
|
-
\)/mx) do |var_name, class_name, parent|
|
392
|
-
handle_class_module(var_name, :class, class_name, parent, nil)
|
393
|
-
end
|
394
|
-
end
|
395
|
-
|
396
|
-
##
|
397
|
-
# Scans #content for rb_define_class_under
|
398
|
-
|
399
|
-
def do_define_class_under
|
400
|
-
@content.scan(/([\w\.]+)\s* = # var_name
|
401
|
-
\s*rb_define_class_under\s*
|
402
|
-
\(
|
403
|
-
\s* (\w+), # under
|
404
|
-
\s* "(\w+)", # class_name
|
405
|
-
\s*
|
406
|
-
(?:
|
407
|
-
([\w\*\s\(\)\.\->]+) | # parent_name
|
408
|
-
rb_path2class\("([\w:]+)"\) # path
|
409
|
-
)
|
410
|
-
\s*
|
411
|
-
\)
|
412
|
-
/mx) do |var_name, under, class_name, parent_name, path|
|
413
|
-
parent = path || parent_name
|
414
|
-
|
415
|
-
handle_class_module var_name, :class, class_name, parent, under
|
416
|
-
end
|
417
|
-
end
|
418
|
-
|
419
|
-
##
|
420
|
-
# Scans #content for rb_define_module
|
421
|
-
|
422
|
-
def do_define_module
|
423
|
-
@content.scan(/(\w+)\s* = \s*rb_define_module\s*\(\s*"(\w+)"\s*\)/mx) do
|
424
|
-
|var_name, class_name|
|
425
|
-
handle_class_module(var_name, :module, class_name, nil, nil)
|
426
|
-
end
|
427
|
-
end
|
428
|
-
|
429
|
-
##
|
430
|
-
# Scans #content for rb_define_module_under
|
431
|
-
|
432
|
-
def do_define_module_under
|
433
|
-
@content.scan(/(\w+)\s* = \s*rb_define_module_under\s*
|
434
|
-
\(
|
435
|
-
\s*(\w+),
|
436
|
-
\s*"(\w+)"
|
437
|
-
\s*\)/mx) do |var_name, in_module, class_name|
|
438
|
-
handle_class_module(var_name, :module, class_name, nil, in_module)
|
439
|
-
end
|
440
|
-
end
|
441
469
|
|
442
470
|
##
|
443
471
|
# Scans #content for rb_include_module
|
@@ -447,7 +475,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
447
475
|
next unless cls = @classes[c]
|
448
476
|
m = @known_classes[m] || m
|
449
477
|
|
450
|
-
comment = RDoc::Comment.new '', @top_level
|
478
|
+
comment = RDoc::Comment.new '', @top_level, :c
|
451
479
|
incl = cls.add_include RDoc::Include.new(m, comment)
|
452
480
|
incl.record_location @top_level
|
453
481
|
end
|
@@ -519,42 +547,6 @@ class RDoc::Parser::C < RDoc::Parser
|
|
519
547
|
end
|
520
548
|
end
|
521
549
|
|
522
|
-
##
|
523
|
-
# Scans #content for rb_define_module and rb_define_module_under
|
524
|
-
|
525
|
-
def do_modules
|
526
|
-
do_define_module
|
527
|
-
do_define_module_under
|
528
|
-
end
|
529
|
-
|
530
|
-
##
|
531
|
-
# Scans #content for rb_singleton_class
|
532
|
-
|
533
|
-
def do_singleton_class
|
534
|
-
@content.scan(/([\w\.]+)\s* = \s*rb_singleton_class\s*
|
535
|
-
\(
|
536
|
-
\s*(\w+)
|
537
|
-
\s*\)/mx) do |sclass_var, class_var|
|
538
|
-
handle_singleton sclass_var, class_var
|
539
|
-
end
|
540
|
-
end
|
541
|
-
|
542
|
-
##
|
543
|
-
# Scans #content for struct_define_without_accessor
|
544
|
-
|
545
|
-
def do_struct_define_without_accessor
|
546
|
-
@content.scan(/([\w\.]+)\s* = \s*rb_struct_define_without_accessor\s*
|
547
|
-
\(
|
548
|
-
\s*"(\w+)", # Class name
|
549
|
-
\s*(\w+), # Parent class
|
550
|
-
\s*\w+, # Allocation function
|
551
|
-
(\s*"\w+",)* # Attributes
|
552
|
-
\s*NULL
|
553
|
-
\)/mx) do |var_name, class_name, parent|
|
554
|
-
handle_class_module(var_name, :class, class_name, parent, nil)
|
555
|
-
end
|
556
|
-
end
|
557
|
-
|
558
550
|
##
|
559
551
|
# Finds the comment for an alias on +class_name+ from +new_name+ to
|
560
552
|
# +old_name+
|
@@ -565,7 +557,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
565
557
|
\s*"#{Regexp.escape new_name}"\s*,
|
566
558
|
\s*"#{Regexp.escape old_name}"\s*\);%xm
|
567
559
|
|
568
|
-
RDoc::Comment.new($1 || '', @top_level)
|
560
|
+
RDoc::Comment.new($1 || '', @top_level, :c)
|
569
561
|
end
|
570
562
|
|
571
563
|
##
|
@@ -604,7 +596,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
604
596
|
''
|
605
597
|
end
|
606
598
|
|
607
|
-
RDoc::Comment.new comment, @top_level
|
599
|
+
RDoc::Comment.new comment, @top_level, :c
|
608
600
|
end
|
609
601
|
|
610
602
|
##
|
@@ -644,7 +636,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
644
636
|
|
645
637
|
case type
|
646
638
|
when :func_def
|
647
|
-
comment = RDoc::Comment.new args[0], @top_level
|
639
|
+
comment = RDoc::Comment.new args[0], @top_level, :c
|
648
640
|
body = args[1]
|
649
641
|
offset, = args[2]
|
650
642
|
|
@@ -674,7 +666,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
674
666
|
|
675
667
|
body
|
676
668
|
when :macro_def
|
677
|
-
comment = RDoc::Comment.new args[0], @top_level
|
669
|
+
comment = RDoc::Comment.new args[0], @top_level, :c
|
678
670
|
body = args[1]
|
679
671
|
offset, = args[2]
|
680
672
|
|
@@ -781,7 +773,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
781
773
|
comment = ''
|
782
774
|
end
|
783
775
|
|
784
|
-
comment = RDoc::Comment.new comment, @top_level
|
776
|
+
comment = RDoc::Comment.new comment, @top_level, :c
|
785
777
|
comment.normalize
|
786
778
|
|
787
779
|
look_for_directives_in class_mod, comment
|
@@ -826,7 +818,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
826
818
|
table[const_name] ||
|
827
819
|
''
|
828
820
|
|
829
|
-
RDoc::Comment.new comment, @top_level
|
821
|
+
RDoc::Comment.new comment, @top_level, :c
|
830
822
|
end
|
831
823
|
|
832
824
|
##
|
@@ -857,7 +849,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
857
849
|
|
858
850
|
return unless comment
|
859
851
|
|
860
|
-
RDoc::Comment.new comment, @top_level
|
852
|
+
RDoc::Comment.new comment, @top_level, :c
|
861
853
|
end
|
862
854
|
|
863
855
|
##
|
@@ -953,7 +945,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
953
945
|
# can override the C value of the comment to give a friendly definition.
|
954
946
|
#
|
955
947
|
# /* 300: The perfect score in bowling */
|
956
|
-
# rb_define_const(cFoo, "PERFECT", INT2FIX(300);
|
948
|
+
# rb_define_const(cFoo, "PERFECT", INT2FIX(300));
|
957
949
|
#
|
958
950
|
# Will override <tt>INT2FIX(300)</tt> with the value +300+ in the output
|
959
951
|
# RDoc. Values may include quotes and escaped colons (\:).
|
@@ -991,7 +983,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
991
983
|
|
992
984
|
new_comment = "#{$1}#{new_comment.lstrip}"
|
993
985
|
|
994
|
-
new_comment = RDoc::Comment.new new_comment, @top_level
|
986
|
+
new_comment = RDoc::Comment.new new_comment, @top_level, :c
|
995
987
|
|
996
988
|
con = RDoc::Constant.new const_name, new_definition, new_comment
|
997
989
|
else
|
@@ -1248,8 +1240,7 @@ class RDoc::Parser::C < RDoc::Parser
|
|
1248
1240
|
def scan
|
1249
1241
|
remove_commented_out_lines
|
1250
1242
|
|
1251
|
-
|
1252
|
-
do_classes
|
1243
|
+
do_classes_and_modules
|
1253
1244
|
do_missing
|
1254
1245
|
|
1255
1246
|
do_constants
|
@@ -1266,4 +1257,3 @@ class RDoc::Parser::C < RDoc::Parser
|
|
1266
1257
|
end
|
1267
1258
|
|
1268
1259
|
end
|
1269
|
-
|