rdoc 6.7.0 → 6.11.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/ExampleMarkdown.md +2 -0
- data/ExampleRDoc.rdoc +2 -0
- data/History.rdoc +64 -62
- data/LICENSE.rdoc +2 -0
- data/README.rdoc +13 -0
- data/RI.md +842 -0
- data/TODO.rdoc +8 -7
- data/lib/rdoc/{alias.rb → code_object/alias.rb} +1 -1
- data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +68 -1
- data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +17 -5
- data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +4 -4
- data/lib/rdoc/code_object.rb +6 -0
- data/lib/rdoc/generator/darkfish.rb +45 -3
- data/lib/rdoc/generator/pot/message_extractor.rb +1 -1
- data/lib/rdoc/generator/pot/po_entry.rb +1 -1
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +23 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +20 -11
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +3 -8
- data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
- data/lib/rdoc/generator/template/darkfish/class.rhtml +69 -43
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +380 -399
- data/lib/rdoc/generator/template/darkfish/index.rhtml +7 -6
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +24 -1
- data/lib/rdoc/generator/template/darkfish/page.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +10 -8
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +5 -2
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +11 -0
- data/lib/rdoc/markdown.kpeg +1 -1
- data/lib/rdoc/markdown.rb +21 -11
- data/lib/rdoc/markup/attribute_manager.rb +2 -2
- data/lib/rdoc/markup/formatter.rb +19 -12
- data/lib/rdoc/markup/pre_process.rb +26 -6
- data/lib/rdoc/markup/to_bs.rb +1 -1
- data/lib/rdoc/markup/to_html.rb +1 -1
- data/lib/rdoc/markup/to_html_crossref.rb +63 -12
- data/lib/rdoc/markup/to_rdoc.rb +5 -5
- data/lib/rdoc/markup.rb +18 -13
- data/lib/rdoc/options.rb +78 -12
- data/lib/rdoc/parser/c.rb +25 -1
- data/lib/rdoc/parser/changelog.rb +2 -2
- data/lib/rdoc/parser/prism_ruby.rb +1028 -0
- data/lib/rdoc/parser/ripper_state_lex.rb +7 -305
- data/lib/rdoc/parser/ruby.rb +15 -6
- data/lib/rdoc/parser.rb +2 -1
- data/lib/rdoc/rd/block_parser.rb +3 -3
- data/lib/rdoc/rd/inline_parser.rb +3 -3
- data/lib/rdoc/rdoc.rb +6 -3
- data/lib/rdoc/ri/driver.rb +58 -14
- data/lib/rdoc/rubygems_hook.rb +90 -8
- data/lib/rdoc/store.rb +12 -0
- data/lib/rdoc/task.rb +2 -3
- data/lib/rdoc/tom_doc.rb +1 -7
- data/lib/rdoc/version.rb +1 -1
- data/lib/rdoc.rb +22 -24
- data/lib/rubygems_plugin.rb +23 -0
- metadata +27 -26
- data/RI.rdoc +0 -57
- data/lib/rdoc/generator/template/darkfish/.document +0 -0
- data/lib/rdoc/generator/template/json_index/.document +0 -1
- /data/lib/rdoc/{anon_class.rb → code_object/anon_class.rb} +0 -0
- /data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +0 -0
- /data/lib/rdoc/{attr.rb → code_object/attr.rb} +0 -0
- /data/lib/rdoc/{constant.rb → code_object/constant.rb} +0 -0
- /data/lib/rdoc/{context → code_object/context}/section.rb +0 -0
- /data/lib/rdoc/{context.rb → code_object/context.rb} +0 -0
- /data/lib/rdoc/{extend.rb → code_object/extend.rb} +0 -0
- /data/lib/rdoc/{ghost_method.rb → code_object/ghost_method.rb} +0 -0
- /data/lib/rdoc/{include.rb → code_object/include.rb} +0 -0
- /data/lib/rdoc/{meta_method.rb → code_object/meta_method.rb} +0 -0
- /data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +0 -0
- /data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +0 -0
- /data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +0 -0
- /data/lib/rdoc/{require.rb → code_object/require.rb} +0 -0
- /data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +0 -0
@@ -7,307 +7,12 @@ require 'ripper'
|
|
7
7
|
class RDoc::Parser::RipperStateLex
|
8
8
|
# :stopdoc:
|
9
9
|
|
10
|
-
# TODO: Remove this constants after Ruby 2.4 EOL
|
11
|
-
RIPPER_HAS_LEX_STATE = Ripper::Filter.method_defined?(:state)
|
12
|
-
|
13
10
|
Token = Struct.new(:line_no, :char_no, :kind, :text, :state)
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
EXPR_ENDFN = 8
|
20
|
-
EXPR_ARG = 16
|
21
|
-
EXPR_CMDARG = 32
|
22
|
-
EXPR_MID = 64
|
23
|
-
EXPR_FNAME = 128
|
24
|
-
EXPR_DOT = 256
|
25
|
-
EXPR_CLASS = 512
|
26
|
-
EXPR_LABEL = 1024
|
27
|
-
EXPR_LABELED = 2048
|
28
|
-
EXPR_FITEM = 4096
|
29
|
-
EXPR_VALUE = EXPR_BEG
|
30
|
-
EXPR_BEG_ANY = (EXPR_BEG | EXPR_MID | EXPR_CLASS)
|
31
|
-
EXPR_ARG_ANY = (EXPR_ARG | EXPR_CMDARG)
|
32
|
-
EXPR_END_ANY = (EXPR_END | EXPR_ENDARG | EXPR_ENDFN)
|
33
|
-
|
34
|
-
class InnerStateLex < Ripper::Filter
|
35
|
-
attr_accessor :lex_state
|
36
|
-
|
37
|
-
def initialize(code)
|
38
|
-
@lex_state = EXPR_BEG
|
39
|
-
@in_fname = false
|
40
|
-
@continue = false
|
41
|
-
reset
|
42
|
-
super(code)
|
43
|
-
end
|
44
|
-
|
45
|
-
def reset
|
46
|
-
@command_start = false
|
47
|
-
@cmd_state = @command_start
|
48
|
-
end
|
49
|
-
|
50
|
-
def on_nl(tok, data)
|
51
|
-
case @lex_state
|
52
|
-
when EXPR_FNAME, EXPR_DOT
|
53
|
-
@continue = true
|
54
|
-
else
|
55
|
-
@continue = false
|
56
|
-
@lex_state = EXPR_BEG unless (EXPR_LABEL & @lex_state) != 0
|
57
|
-
end
|
58
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
59
|
-
end
|
60
|
-
|
61
|
-
def on_ignored_nl(tok, data)
|
62
|
-
case @lex_state
|
63
|
-
when EXPR_FNAME, EXPR_DOT
|
64
|
-
@continue = true
|
65
|
-
else
|
66
|
-
@continue = false
|
67
|
-
@lex_state = EXPR_BEG unless (EXPR_LABEL & @lex_state) != 0
|
68
|
-
end
|
69
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
70
|
-
end
|
71
|
-
|
72
|
-
def on_op(tok, data)
|
73
|
-
case tok
|
74
|
-
when '&', '|', '!', '!=', '!~'
|
75
|
-
case @lex_state
|
76
|
-
when EXPR_FNAME, EXPR_DOT
|
77
|
-
@lex_state = EXPR_ARG
|
78
|
-
else
|
79
|
-
@lex_state = EXPR_BEG
|
80
|
-
end
|
81
|
-
when '<<'
|
82
|
-
# TODO next token?
|
83
|
-
case @lex_state
|
84
|
-
when EXPR_FNAME, EXPR_DOT
|
85
|
-
@lex_state = EXPR_ARG
|
86
|
-
else
|
87
|
-
@lex_state = EXPR_BEG
|
88
|
-
end
|
89
|
-
when '?'
|
90
|
-
@lex_state = EXPR_BEG
|
91
|
-
when '&&', '||', '+=', '-=', '*=', '**=',
|
92
|
-
'&=', '|=', '^=', '<<=', '>>=', '||=', '&&='
|
93
|
-
@lex_state = EXPR_BEG
|
94
|
-
when '::'
|
95
|
-
case @lex_state
|
96
|
-
when EXPR_ARG, EXPR_CMDARG
|
97
|
-
@lex_state = EXPR_DOT
|
98
|
-
when EXPR_FNAME, EXPR_DOT
|
99
|
-
@lex_state = EXPR_ARG
|
100
|
-
else
|
101
|
-
@lex_state = EXPR_BEG
|
102
|
-
end
|
103
|
-
else
|
104
|
-
case @lex_state
|
105
|
-
when EXPR_FNAME, EXPR_DOT
|
106
|
-
@lex_state = EXPR_ARG
|
107
|
-
else
|
108
|
-
@lex_state = EXPR_BEG
|
109
|
-
end
|
110
|
-
end
|
111
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
112
|
-
end
|
113
|
-
|
114
|
-
def on_kw(tok, data)
|
115
|
-
case tok
|
116
|
-
when 'class'
|
117
|
-
@lex_state = EXPR_CLASS
|
118
|
-
@in_fname = true
|
119
|
-
when 'def'
|
120
|
-
@lex_state = EXPR_FNAME
|
121
|
-
@continue = true
|
122
|
-
@in_fname = true
|
123
|
-
when 'if', 'unless', 'while', 'until'
|
124
|
-
if ((EXPR_MID | EXPR_END | EXPR_ENDARG | EXPR_ENDFN | EXPR_ARG | EXPR_CMDARG) & @lex_state) != 0 # postfix if
|
125
|
-
@lex_state = EXPR_BEG | EXPR_LABEL
|
126
|
-
else
|
127
|
-
@lex_state = EXPR_BEG
|
128
|
-
end
|
129
|
-
when 'begin', 'case', 'when'
|
130
|
-
@lex_state = EXPR_BEG
|
131
|
-
when 'return', 'break'
|
132
|
-
@lex_state = EXPR_MID
|
133
|
-
else
|
134
|
-
if @lex_state == EXPR_FNAME
|
135
|
-
@lex_state = EXPR_END
|
136
|
-
else
|
137
|
-
@lex_state = EXPR_END
|
138
|
-
end
|
139
|
-
end
|
140
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
141
|
-
end
|
142
|
-
|
143
|
-
def on_tstring_beg(tok, data)
|
144
|
-
@lex_state = EXPR_BEG
|
145
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
146
|
-
end
|
147
|
-
|
148
|
-
def on_tstring_end(tok, data)
|
149
|
-
@lex_state = EXPR_END | EXPR_ENDARG
|
150
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
151
|
-
end
|
152
|
-
|
153
|
-
def on_CHAR(tok, data)
|
154
|
-
@lex_state = EXPR_END
|
155
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
156
|
-
end
|
157
|
-
|
158
|
-
def on_period(tok, data)
|
159
|
-
@lex_state = EXPR_DOT
|
160
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
161
|
-
end
|
162
|
-
|
163
|
-
def on_int(tok, data)
|
164
|
-
@lex_state = EXPR_END | EXPR_ENDARG
|
165
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
166
|
-
end
|
167
|
-
|
168
|
-
def on_float(tok, data)
|
169
|
-
@lex_state = EXPR_END | EXPR_ENDARG
|
170
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
171
|
-
end
|
172
|
-
|
173
|
-
def on_rational(tok, data)
|
174
|
-
@lex_state = EXPR_END | EXPR_ENDARG
|
175
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
176
|
-
end
|
177
|
-
|
178
|
-
def on_imaginary(tok, data)
|
179
|
-
@lex_state = EXPR_END | EXPR_ENDARG
|
180
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
181
|
-
end
|
182
|
-
|
183
|
-
def on_symbeg(tok, data)
|
184
|
-
@lex_state = EXPR_FNAME
|
185
|
-
@continue = true
|
186
|
-
@in_fname = true
|
187
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
188
|
-
end
|
189
|
-
|
190
|
-
private def on_variables(event, tok, data)
|
191
|
-
if @in_fname
|
192
|
-
@lex_state = EXPR_ENDFN
|
193
|
-
@in_fname = false
|
194
|
-
@continue = false
|
195
|
-
elsif @continue
|
196
|
-
case @lex_state
|
197
|
-
when EXPR_DOT
|
198
|
-
@lex_state = EXPR_ARG
|
199
|
-
else
|
200
|
-
@lex_state = EXPR_ENDFN
|
201
|
-
@continue = false
|
202
|
-
end
|
203
|
-
else
|
204
|
-
@lex_state = EXPR_CMDARG
|
205
|
-
end
|
206
|
-
data << Token.new(lineno, column, event, tok, @lex_state)
|
207
|
-
end
|
208
|
-
|
209
|
-
def on_ident(tok, data)
|
210
|
-
on_variables(__method__, tok, data)
|
211
|
-
end
|
212
|
-
|
213
|
-
def on_ivar(tok, data)
|
214
|
-
@lex_state = EXPR_END
|
215
|
-
on_variables(__method__, tok, data)
|
216
|
-
end
|
217
|
-
|
218
|
-
def on_cvar(tok, data)
|
219
|
-
@lex_state = EXPR_END
|
220
|
-
on_variables(__method__, tok, data)
|
221
|
-
end
|
222
|
-
|
223
|
-
def on_gvar(tok, data)
|
224
|
-
@lex_state = EXPR_END
|
225
|
-
on_variables(__method__, tok, data)
|
226
|
-
end
|
227
|
-
|
228
|
-
def on_backref(tok, data)
|
229
|
-
@lex_state = EXPR_END
|
230
|
-
on_variables(__method__, tok, data)
|
231
|
-
end
|
232
|
-
|
233
|
-
def on_lparen(tok, data)
|
234
|
-
@lex_state = EXPR_LABEL | EXPR_BEG
|
235
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
236
|
-
end
|
237
|
-
|
238
|
-
def on_rparen(tok, data)
|
239
|
-
@lex_state = EXPR_ENDFN
|
240
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
241
|
-
end
|
242
|
-
|
243
|
-
def on_lbrace(tok, data)
|
244
|
-
@lex_state = EXPR_LABEL | EXPR_BEG
|
245
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
246
|
-
end
|
247
|
-
|
248
|
-
def on_rbrace(tok, data)
|
249
|
-
@lex_state = EXPR_ENDARG
|
250
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
251
|
-
end
|
252
|
-
|
253
|
-
def on_lbracket(tok, data)
|
254
|
-
@lex_state = EXPR_LABEL | EXPR_BEG
|
255
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
256
|
-
end
|
257
|
-
|
258
|
-
def on_rbracket(tok, data)
|
259
|
-
@lex_state = EXPR_ENDARG
|
260
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
261
|
-
end
|
262
|
-
|
263
|
-
def on_const(tok, data)
|
264
|
-
case @lex_state
|
265
|
-
when EXPR_FNAME
|
266
|
-
@lex_state = EXPR_ENDFN
|
267
|
-
when EXPR_CLASS, EXPR_CMDARG, EXPR_MID
|
268
|
-
@lex_state = EXPR_ARG
|
269
|
-
else
|
270
|
-
@lex_state = EXPR_CMDARG
|
271
|
-
end
|
272
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
273
|
-
end
|
274
|
-
|
275
|
-
def on_sp(tok, data)
|
276
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
277
|
-
end
|
278
|
-
|
279
|
-
def on_comma(tok, data)
|
280
|
-
@lex_state = EXPR_BEG | EXPR_LABEL if (EXPR_ARG_ANY & @lex_state) != 0
|
281
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
282
|
-
end
|
283
|
-
|
284
|
-
def on_comment(tok, data)
|
285
|
-
@lex_state = EXPR_BEG unless (EXPR_LABEL & @lex_state) != 0
|
286
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
287
|
-
end
|
288
|
-
|
289
|
-
def on_ignored_sp(tok, data)
|
290
|
-
@lex_state = EXPR_BEG unless (EXPR_LABEL & @lex_state) != 0
|
291
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
292
|
-
end
|
293
|
-
|
294
|
-
def on_heredoc_beg(tok, data)
|
295
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
296
|
-
@lex_state = EXPR_END
|
297
|
-
data
|
298
|
-
end
|
299
|
-
|
300
|
-
def on_heredoc_end(tok, data)
|
301
|
-
data << Token.new(lineno, column, __method__, tok, @lex_state)
|
302
|
-
@lex_state = EXPR_BEG
|
303
|
-
data
|
304
|
-
end
|
305
|
-
|
306
|
-
def on_default(event, tok, data)
|
307
|
-
reset
|
308
|
-
data << Token.new(lineno, column, event, tok, @lex_state)
|
309
|
-
end
|
310
|
-
end unless RIPPER_HAS_LEX_STATE
|
12
|
+
EXPR_END = Ripper::EXPR_END
|
13
|
+
EXPR_ENDFN = Ripper::EXPR_ENDFN
|
14
|
+
EXPR_ARG = Ripper::EXPR_ARG
|
15
|
+
EXPR_FNAME = Ripper::EXPR_FNAME
|
311
16
|
|
312
17
|
class InnerStateLex < Ripper::Filter
|
313
18
|
def initialize(code)
|
@@ -317,7 +22,7 @@ class RDoc::Parser::RipperStateLex
|
|
317
22
|
def on_default(event, tok, data)
|
318
23
|
data << Token.new(lineno, column, event, tok, state)
|
319
24
|
end
|
320
|
-
end
|
25
|
+
end
|
321
26
|
|
322
27
|
def get_squashed_tk
|
323
28
|
if @buf.empty?
|
@@ -333,9 +38,8 @@ class RDoc::Parser::RipperStateLex
|
|
333
38
|
tk = get_string_tk(tk)
|
334
39
|
when :on_backtick then
|
335
40
|
if (tk[:state] & (EXPR_FNAME | EXPR_ENDFN)) != 0
|
336
|
-
@inner_lex.lex_state = EXPR_ARG unless RIPPER_HAS_LEX_STATE
|
337
41
|
tk[:kind] = :on_ident
|
338
|
-
tk[:state] = Ripper::Lexer
|
42
|
+
tk[:state] = Ripper::Lexer::State.new(EXPR_ARG)
|
339
43
|
else
|
340
44
|
tk = get_string_tk(tk)
|
341
45
|
end
|
@@ -345,7 +49,6 @@ class RDoc::Parser::RipperStateLex
|
|
345
49
|
tk = get_embdoc_tk(tk)
|
346
50
|
when :on_heredoc_beg then
|
347
51
|
@heredoc_queue << retrieve_heredoc_info(tk)
|
348
|
-
@inner_lex.lex_state = EXPR_END unless RIPPER_HAS_LEX_STATE
|
349
52
|
when :on_nl, :on_ignored_nl, :on_comment, :on_heredoc_end then
|
350
53
|
if !@heredoc_queue.empty?
|
351
54
|
get_heredoc_tk(*@heredoc_queue.shift)
|
@@ -549,8 +252,7 @@ class RDoc::Parser::RipperStateLex
|
|
549
252
|
private def get_op_tk(tk)
|
550
253
|
redefinable_operators = %w[! != !~ % & * ** + +@ - -@ / < << <= <=> == === =~ > >= >> [] []= ^ ` | ~]
|
551
254
|
if redefinable_operators.include?(tk[:text]) and tk[:state] == EXPR_ARG then
|
552
|
-
|
553
|
-
tk[:state] = Ripper::Lexer.const_defined?(:State) ? Ripper::Lexer::State.new(EXPR_ARG) : EXPR_ARG
|
255
|
+
tk[:state] = Ripper::Lexer::State.new(EXPR_ARG)
|
554
256
|
tk[:kind] = :on_ident
|
555
257
|
elsif tk[:text] =~ /^[-+]$/ then
|
556
258
|
tk_ahead = get_squashed_tk
|
data/lib/rdoc/parser/ruby.rb
CHANGED
@@ -8,6 +8,15 @@
|
|
8
8
|
# by Keiju ISHITSUKA (Nippon Rational Inc.)
|
9
9
|
#
|
10
10
|
|
11
|
+
if ENV['RDOC_USE_PRISM_PARSER']
|
12
|
+
require 'rdoc/parser/prism_ruby'
|
13
|
+
RDoc::Parser.const_set(:Ruby, RDoc::Parser::PrismRuby)
|
14
|
+
puts "========================================================================="
|
15
|
+
puts "RDoc is using the experimental Prism parser to generate the documentation"
|
16
|
+
puts "========================================================================="
|
17
|
+
return
|
18
|
+
end
|
19
|
+
|
11
20
|
require 'ripper'
|
12
21
|
require_relative 'ripper_state_lex'
|
13
22
|
|
@@ -513,7 +522,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
513
522
|
when :on_comment, :on_embdoc then
|
514
523
|
@read.pop
|
515
524
|
if :on_nl == end_token[:kind] and "\n" == tk[:text][-1] and
|
516
|
-
(!continue or (tk[:state] &
|
525
|
+
(!continue or (tk[:state] & Ripper::EXPR_LABEL) != 0) then
|
517
526
|
break if !continue and nest <= 0
|
518
527
|
end
|
519
528
|
when :on_comma then
|
@@ -526,7 +535,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
526
535
|
nest += 1
|
527
536
|
when 'if', 'unless', 'while', 'until', 'rescue'
|
528
537
|
# postfix if/unless/while/until/rescue must be EXPR_LABEL
|
529
|
-
nest += 1 unless (tk[:state] &
|
538
|
+
nest += 1 unless (tk[:state] & Ripper::EXPR_LABEL) != 0
|
530
539
|
when 'end'
|
531
540
|
nest -= 1
|
532
541
|
break if nest == 0
|
@@ -1041,7 +1050,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1041
1050
|
elsif (:on_kw == tk[:kind] && 'def' == tk[:text]) then
|
1042
1051
|
nest += 1
|
1043
1052
|
elsif (:on_kw == tk[:kind] && %w{do if unless case begin}.include?(tk[:text])) then
|
1044
|
-
if (tk[:state] &
|
1053
|
+
if (tk[:state] & Ripper::EXPR_LABEL) == 0
|
1045
1054
|
nest += 1
|
1046
1055
|
end
|
1047
1056
|
elsif [:on_rparen, :on_rbrace, :on_rbracket].include?(tk[:kind]) ||
|
@@ -1662,7 +1671,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1662
1671
|
when :on_comment, :on_embdoc then
|
1663
1672
|
@read.pop
|
1664
1673
|
if :on_nl == end_token[:kind] and "\n" == tk[:text][-1] and
|
1665
|
-
(!continue or (tk[:state] &
|
1674
|
+
(!continue or (tk[:state] & Ripper::EXPR_LABEL) != 0) then
|
1666
1675
|
if method && method.block_params.nil? then
|
1667
1676
|
unget_tk tk
|
1668
1677
|
read_documentation_modifiers method, modifiers
|
@@ -1882,7 +1891,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1882
1891
|
end
|
1883
1892
|
|
1884
1893
|
when 'until', 'while' then
|
1885
|
-
if (tk[:state] &
|
1894
|
+
if (tk[:state] & Ripper::EXPR_LABEL) == 0
|
1886
1895
|
nest += 1
|
1887
1896
|
skip_optional_do_after_expression
|
1888
1897
|
end
|
@@ -1898,7 +1907,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1898
1907
|
skip_optional_do_after_expression
|
1899
1908
|
|
1900
1909
|
when 'case', 'do', 'if', 'unless', 'begin' then
|
1901
|
-
if (tk[:state] &
|
1910
|
+
if (tk[:state] & Ripper::EXPR_LABEL) == 0
|
1902
1911
|
nest += 1
|
1903
1912
|
end
|
1904
1913
|
|
data/lib/rdoc/parser.rb
CHANGED
@@ -166,7 +166,8 @@ class RDoc::Parser
|
|
166
166
|
# Finds and instantiates the correct parser for the given +file_name+ and
|
167
167
|
# +content+.
|
168
168
|
|
169
|
-
def self.for top_level,
|
169
|
+
def self.for top_level, content, options, stats
|
170
|
+
file_name = top_level.absolute_name
|
170
171
|
return if binary? file_name
|
171
172
|
|
172
173
|
parser = use_markup content
|
data/lib/rdoc/rd/block_parser.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# DO NOT MODIFY!!!!
|
4
|
-
# This file is automatically generated by Racc 1.8.
|
4
|
+
# This file is automatically generated by Racc 1.8.1
|
5
5
|
# from Racc grammar file "block_parser.ry".
|
6
6
|
#
|
7
7
|
|
@@ -23,7 +23,7 @@ unless $".find {|p| p.end_with?('/racc/info.rb')}
|
|
23
23
|
$".push "#{__dir__}/racc/info.rb"
|
24
24
|
|
25
25
|
module Racc
|
26
|
-
VERSION = '1.8.
|
26
|
+
VERSION = '1.8.1'
|
27
27
|
Version = VERSION
|
28
28
|
Copyright = 'Copyright (c) 1999-2006 Minero Aoki'
|
29
29
|
end
|
@@ -38,7 +38,7 @@ unless defined?(::ParseError)
|
|
38
38
|
ParseError = Racc::ParseError # :nodoc:
|
39
39
|
end
|
40
40
|
|
41
|
-
# Racc is
|
41
|
+
# Racc is an LALR(1) parser generator.
|
42
42
|
# It is written in Ruby itself, and generates Ruby programs.
|
43
43
|
#
|
44
44
|
# == Command-line Reference
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
3
|
# DO NOT MODIFY!!!!
|
4
|
-
# This file is automatically generated by Racc 1.8.
|
4
|
+
# This file is automatically generated by Racc 1.8.1
|
5
5
|
# from Racc grammar file "inline_parser.ry".
|
6
6
|
#
|
7
7
|
|
@@ -23,7 +23,7 @@ unless $".find {|p| p.end_with?('/racc/info.rb')}
|
|
23
23
|
$".push "#{__dir__}/racc/info.rb"
|
24
24
|
|
25
25
|
module Racc
|
26
|
-
VERSION = '1.8.
|
26
|
+
VERSION = '1.8.1'
|
27
27
|
Version = VERSION
|
28
28
|
Copyright = 'Copyright (c) 1999-2006 Minero Aoki'
|
29
29
|
end
|
@@ -38,7 +38,7 @@ unless defined?(::ParseError)
|
|
38
38
|
ParseError = Racc::ParseError # :nodoc:
|
39
39
|
end
|
40
40
|
|
41
|
-
# Racc is
|
41
|
+
# Racc is an LALR(1) parser generator.
|
42
42
|
# It is written in Ruby itself, and generates Ruby programs.
|
43
43
|
#
|
44
44
|
# == Command-line Reference
|
data/lib/rdoc/rdoc.rb
CHANGED
@@ -356,7 +356,7 @@ option)
|
|
356
356
|
|
357
357
|
top_level = @store.add_file filename, relative_name: relative_path.to_s
|
358
358
|
|
359
|
-
parser = RDoc::Parser.for top_level,
|
359
|
+
parser = RDoc::Parser.for top_level, content, @options, @stats
|
360
360
|
|
361
361
|
return unless parser
|
362
362
|
|
@@ -395,7 +395,6 @@ The internal error was:
|
|
395
395
|
$stderr.puts e.backtrace.join("\n\t") if $DEBUG_RDOC
|
396
396
|
|
397
397
|
raise e
|
398
|
-
nil
|
399
398
|
end
|
400
399
|
|
401
400
|
##
|
@@ -407,6 +406,7 @@ The internal error was:
|
|
407
406
|
|
408
407
|
return [] if file_list.empty?
|
409
408
|
|
409
|
+
# This workaround can be removed after the :main: directive is removed
|
410
410
|
original_options = @options.dup
|
411
411
|
@stats.begin_adding
|
412
412
|
|
@@ -415,6 +415,8 @@ The internal error was:
|
|
415
415
|
parse_file filename
|
416
416
|
end.compact
|
417
417
|
|
418
|
+
@store.resolve_c_superclasses
|
419
|
+
|
418
420
|
@stats.done_adding
|
419
421
|
@options = original_options
|
420
422
|
|
@@ -520,6 +522,7 @@ The internal error was:
|
|
520
522
|
Dir.chdir @options.op_dir do
|
521
523
|
unless @options.quiet then
|
522
524
|
$stderr.puts "\nGenerating #{@generator.class.name.sub(/^.*::/, '')} format into #{Dir.pwd}..."
|
525
|
+
$stderr.puts "\nYou can visit the home page at: \e]8;;file://#{Dir.pwd}/index.html\e\\file://#{Dir.pwd}/index.html\e]8;;\e\\"
|
523
526
|
end
|
524
527
|
|
525
528
|
@generator.generate
|
@@ -544,7 +547,7 @@ end
|
|
544
547
|
begin
|
545
548
|
require 'rubygems'
|
546
549
|
|
547
|
-
rdoc_extensions = Gem.
|
550
|
+
rdoc_extensions = Gem.find_latest_files 'rdoc/discover'
|
548
551
|
|
549
552
|
rdoc_extensions.each do |extension|
|
550
553
|
begin
|
data/lib/rdoc/ri/driver.rb
CHANGED
@@ -79,6 +79,7 @@ class RDoc::RI::Driver
|
|
79
79
|
options[:interactive] = false
|
80
80
|
options[:profile] = false
|
81
81
|
options[:show_all] = false
|
82
|
+
options[:expand_refs] = true
|
82
83
|
options[:use_stdout] = !$stdout.tty?
|
83
84
|
options[:width] = 72
|
84
85
|
|
@@ -110,10 +111,6 @@ class RDoc::RI::Driver
|
|
110
111
|
options = default_options
|
111
112
|
|
112
113
|
opts = OptionParser.new do |opt|
|
113
|
-
opt.accept File do |file,|
|
114
|
-
File.readable?(file) and not File.directory?(file) and file
|
115
|
-
end
|
116
|
-
|
117
114
|
opt.program_name = File.basename $0
|
118
115
|
opt.version = RDoc::VERSION
|
119
116
|
opt.release = nil
|
@@ -249,6 +246,12 @@ or the PAGER environment variable.
|
|
249
246
|
|
250
247
|
opt.separator nil
|
251
248
|
|
249
|
+
opt.on("--[no-]expand-refs", "Expand rdoc-refs at the end of output") do |value|
|
250
|
+
options[:expand_refs] = value
|
251
|
+
end
|
252
|
+
|
253
|
+
opt.separator nil
|
254
|
+
|
252
255
|
opt.on("--help", "-h",
|
253
256
|
"Show help and exit.") do
|
254
257
|
puts opts
|
@@ -345,9 +348,17 @@ or the PAGER environment variable.
|
|
345
348
|
|
346
349
|
opt.separator nil
|
347
350
|
|
348
|
-
opt.on("--dump=CACHE",
|
351
|
+
opt.on("--dump=CACHE",
|
349
352
|
"Dump data from an ri cache or data file.") do |value|
|
350
|
-
|
353
|
+
unless File.readable?(value)
|
354
|
+
abort "#{value.inspect} is not readable"
|
355
|
+
end
|
356
|
+
|
357
|
+
if File.directory?(value)
|
358
|
+
abort "#{value.inspect} is a directory"
|
359
|
+
end
|
360
|
+
|
361
|
+
options[:dump_path] = File.new(value)
|
351
362
|
end
|
352
363
|
end
|
353
364
|
|
@@ -421,6 +432,7 @@ or the PAGER environment variable.
|
|
421
432
|
@use_stdout = options[:use_stdout]
|
422
433
|
@show_all = options[:show_all]
|
423
434
|
@width = options[:width]
|
435
|
+
@expand_refs = options[:expand_refs]
|
424
436
|
end
|
425
437
|
|
426
438
|
##
|
@@ -545,11 +557,8 @@ or the PAGER environment variable.
|
|
545
557
|
# Looks up the method +name+ and adds it to +out+
|
546
558
|
|
547
559
|
def add_method out, name
|
548
|
-
filtered
|
549
|
-
|
550
|
-
method_out = method_document name, filtered
|
551
|
-
|
552
|
-
out.concat method_out.parts
|
560
|
+
filtered = lookup_method name
|
561
|
+
method_document out, name, filtered
|
553
562
|
end
|
554
563
|
|
555
564
|
##
|
@@ -641,6 +650,7 @@ or the PAGER environment variable.
|
|
641
650
|
|
642
651
|
add_also_in out, also_in
|
643
652
|
|
653
|
+
expand_rdoc_refs_at_the_bottom(out)
|
644
654
|
out
|
645
655
|
end
|
646
656
|
|
@@ -820,6 +830,8 @@ or the PAGER environment variable.
|
|
820
830
|
|
821
831
|
add_method out, name
|
822
832
|
|
833
|
+
expand_rdoc_refs_at_the_bottom(out)
|
834
|
+
|
823
835
|
display out
|
824
836
|
end
|
825
837
|
|
@@ -1251,9 +1263,7 @@ or the PAGER environment variable.
|
|
1251
1263
|
##
|
1252
1264
|
# Builds a RDoc::Markup::Document from +found+, +klasses+ and +includes+
|
1253
1265
|
|
1254
|
-
def method_document name, filtered
|
1255
|
-
out = RDoc::Markup::Document.new
|
1256
|
-
|
1266
|
+
def method_document out, name, filtered
|
1257
1267
|
out << RDoc::Markup::Heading.new(1, name)
|
1258
1268
|
out << RDoc::Markup::BlankLine.new
|
1259
1269
|
|
@@ -1510,4 +1520,38 @@ or the PAGER environment variable.
|
|
1510
1520
|
server.start
|
1511
1521
|
end
|
1512
1522
|
|
1523
|
+
RDOC_REFS_REGEXP = /\[rdoc-ref:([\w.]+)(@.*)?\]/
|
1524
|
+
|
1525
|
+
def expand_rdoc_refs_at_the_bottom(out)
|
1526
|
+
return unless @expand_refs
|
1527
|
+
|
1528
|
+
extracted_rdoc_refs = []
|
1529
|
+
|
1530
|
+
out.each do |part|
|
1531
|
+
content = if part.respond_to?(:text)
|
1532
|
+
part.text
|
1533
|
+
else
|
1534
|
+
next
|
1535
|
+
end
|
1536
|
+
|
1537
|
+
rdoc_refs = content.scan(RDOC_REFS_REGEXP).uniq.map do |file_name, _anchor|
|
1538
|
+
file_name
|
1539
|
+
end
|
1540
|
+
|
1541
|
+
extracted_rdoc_refs.concat(rdoc_refs)
|
1542
|
+
end
|
1543
|
+
|
1544
|
+
found_pages = extracted_rdoc_refs.map do |ref|
|
1545
|
+
begin
|
1546
|
+
@stores.first.load_page(ref)
|
1547
|
+
rescue RDoc::Store::MissingFileError
|
1548
|
+
end
|
1549
|
+
end.compact
|
1550
|
+
|
1551
|
+
found_pages.each do |page|
|
1552
|
+
out << RDoc::Markup::Heading.new(4, "Expanded from #{page.full_name}")
|
1553
|
+
out << RDoc::Markup::BlankLine.new
|
1554
|
+
out << page.comment
|
1555
|
+
end
|
1556
|
+
end
|
1513
1557
|
end
|