rdoc 6.7.0 → 6.13.1
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} +3 -10
- data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +7 -12
- data/lib/rdoc/{attr.rb → code_object/attr.rb} +4 -7
- data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +107 -20
- data/lib/rdoc/{constant.rb → code_object/constant.rb} +1 -1
- data/lib/rdoc/{context → code_object/context}/section.rb +10 -68
- data/lib/rdoc/{context.rb → code_object/context.rb} +4 -46
- data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +19 -27
- data/lib/rdoc/{require.rb → code_object/require.rb} +1 -1
- data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +10 -28
- data/lib/rdoc/code_object.rb +6 -32
- data/lib/rdoc/comment.rb +12 -5
- data/lib/rdoc/generator/darkfish.rb +121 -95
- data/lib/rdoc/generator/json_index.rb +1 -17
- data/lib/rdoc/generator/markup.rb +2 -2
- data/lib/rdoc/generator/pot/message_extractor.rb +3 -3
- data/lib/rdoc/generator/pot/po_entry.rb +1 -1
- data/lib/rdoc/generator/pot.rb +0 -5
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +23 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -29
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +1 -1
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +1 -1
- 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 +84 -43
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +391 -397
- data/lib/rdoc/generator/template/darkfish/index.rhtml +11 -10
- 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 +8 -6
- data/lib/rdoc/markdown.rb +55 -32
- data/lib/rdoc/markup/attribute_manager.rb +2 -2
- data/lib/rdoc/markup/formatter.rb +19 -12
- data/lib/rdoc/markup/heading.rb +7 -1
- 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 +7 -2
- 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 +90 -12
- data/lib/rdoc/parser/c.rb +30 -9
- data/lib/rdoc/parser/changelog.rb +5 -4
- data/lib/rdoc/parser/prism_ruby.rb +1092 -0
- data/lib/rdoc/parser/ripper_state_lex.rb +7 -305
- data/lib/rdoc/parser/ruby.rb +23 -17
- data/lib/rdoc/parser/simple.rb +1 -1
- data/lib/rdoc/parser.rb +5 -4
- data/lib/rdoc/rd/block_parser.rb +3 -3
- data/lib/rdoc/rd/inline_parser.rb +3 -3
- data/lib/rdoc/rdoc.rb +9 -21
- data/lib/rdoc/ri/driver.rb +85 -32
- data/lib/rdoc/rubygems_hook.rb +91 -15
- data/lib/rdoc/servlet.rb +8 -7
- data/lib/rdoc/stats.rb +2 -2
- data/lib/rdoc/store.rb +21 -13
- data/lib/rdoc/task.rb +2 -3
- data/lib/rdoc/text.rb +2 -2
- 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 -28
- data/RI.rdoc +0 -57
- data/lib/rdoc/generator/template/darkfish/.document +0 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
- data/lib/rdoc/generator/template/json_index/.document +0 -1
- /data/lib/rdoc/{anon_class.rb → code_object/anon_class.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/{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
|
|
@@ -161,7 +170,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
161
170
|
##
|
162
171
|
# Creates a new Ruby parser.
|
163
172
|
|
164
|
-
def initialize(top_level,
|
173
|
+
def initialize(top_level, content, options, stats)
|
165
174
|
super
|
166
175
|
|
167
176
|
content = handle_tab_width(content)
|
@@ -284,7 +293,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
284
293
|
# Creates a new attribute in +container+ with +name+.
|
285
294
|
|
286
295
|
def create_attr container, single, name, rw, comment # :nodoc:
|
287
|
-
att = RDoc::Attr.new get_tkread, name, rw, comment, single == SINGLE
|
296
|
+
att = RDoc::Attr.new get_tkread, name, rw, comment, singleton: single == SINGLE
|
288
297
|
record_location att
|
289
298
|
|
290
299
|
container.add_attribute att
|
@@ -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
|
@@ -783,8 +792,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
783
792
|
return
|
784
793
|
end
|
785
794
|
|
786
|
-
al = RDoc::Alias.new(get_tkread, old_name, new_name, comment,
|
787
|
-
single == SINGLE)
|
795
|
+
al = RDoc::Alias.new(get_tkread, old_name, new_name, comment, singleton: single == SINGLE)
|
788
796
|
record_location al
|
789
797
|
al.line = line_no
|
790
798
|
|
@@ -1041,7 +1049,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1041
1049
|
elsif (:on_kw == tk[:kind] && 'def' == tk[:text]) then
|
1042
1050
|
nest += 1
|
1043
1051
|
elsif (:on_kw == tk[:kind] && %w{do if unless case begin}.include?(tk[:text])) then
|
1044
|
-
if (tk[:state] &
|
1052
|
+
if (tk[:state] & Ripper::EXPR_LABEL) == 0
|
1045
1053
|
nest += 1
|
1046
1054
|
end
|
1047
1055
|
elsif [:on_rparen, :on_rbrace, :on_rbracket].include?(tk[:kind]) ||
|
@@ -1144,7 +1152,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1144
1152
|
end
|
1145
1153
|
|
1146
1154
|
comment.normalize
|
1147
|
-
comment.extract_call_seq
|
1155
|
+
meth.call_seq = comment.extract_call_seq
|
1148
1156
|
|
1149
1157
|
return unless meth.name
|
1150
1158
|
|
@@ -1349,10 +1357,9 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1349
1357
|
|
1350
1358
|
return unless name
|
1351
1359
|
|
1352
|
-
meth = RDoc::MetaMethod.new get_tkread, name
|
1360
|
+
meth = RDoc::MetaMethod.new get_tkread, name, singleton: singleton
|
1353
1361
|
record_location meth
|
1354
1362
|
meth.line = line_no
|
1355
|
-
meth.singleton = singleton
|
1356
1363
|
|
1357
1364
|
remove_token_listener self
|
1358
1365
|
|
@@ -1408,7 +1415,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1408
1415
|
|
1409
1416
|
look_for_directives_in meth, comment
|
1410
1417
|
comment.normalize
|
1411
|
-
comment.extract_call_seq
|
1418
|
+
meth.call_seq = comment.extract_call_seq
|
1412
1419
|
|
1413
1420
|
container.add_method meth
|
1414
1421
|
|
@@ -1452,9 +1459,8 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1452
1459
|
|
1453
1460
|
return unless name
|
1454
1461
|
|
1455
|
-
meth = RDoc::AnyMethod.new get_tkread, name
|
1462
|
+
meth = RDoc::AnyMethod.new get_tkread, name, singleton: single == SINGLE ? true : singleton
|
1456
1463
|
look_for_directives_in meth, comment
|
1457
|
-
meth.singleton = single == SINGLE ? true : singleton
|
1458
1464
|
if singleton
|
1459
1465
|
# `current_line_visibility' is useless because it works against
|
1460
1466
|
# the normal method named as same as the singleton method, after
|
@@ -1476,7 +1482,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1476
1482
|
parse_method_params_and_body container, single, meth, added_container
|
1477
1483
|
|
1478
1484
|
comment.normalize
|
1479
|
-
comment.extract_call_seq
|
1485
|
+
meth.call_seq = comment.extract_call_seq
|
1480
1486
|
|
1481
1487
|
meth.comment = comment
|
1482
1488
|
|
@@ -1662,7 +1668,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1662
1668
|
when :on_comment, :on_embdoc then
|
1663
1669
|
@read.pop
|
1664
1670
|
if :on_nl == end_token[:kind] and "\n" == tk[:text][-1] and
|
1665
|
-
(!continue or (tk[:state] &
|
1671
|
+
(!continue or (tk[:state] & Ripper::EXPR_LABEL) != 0) then
|
1666
1672
|
if method && method.block_params.nil? then
|
1667
1673
|
unget_tk tk
|
1668
1674
|
read_documentation_modifiers method, modifiers
|
@@ -1882,7 +1888,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1882
1888
|
end
|
1883
1889
|
|
1884
1890
|
when 'until', 'while' then
|
1885
|
-
if (tk[:state] &
|
1891
|
+
if (tk[:state] & Ripper::EXPR_LABEL) == 0
|
1886
1892
|
nest += 1
|
1887
1893
|
skip_optional_do_after_expression
|
1888
1894
|
end
|
@@ -1898,7 +1904,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|
1898
1904
|
skip_optional_do_after_expression
|
1899
1905
|
|
1900
1906
|
when 'case', 'do', 'if', 'unless', 'begin' then
|
1901
|
-
if (tk[:state] &
|
1907
|
+
if (tk[:state] & Ripper::EXPR_LABEL) == 0
|
1902
1908
|
nest += 1
|
1903
1909
|
end
|
1904
1910
|
|
data/lib/rdoc/parser/simple.rb
CHANGED
@@ -14,7 +14,7 @@ class RDoc::Parser::Simple < RDoc::Parser
|
|
14
14
|
##
|
15
15
|
# Prepare to parse a plain file
|
16
16
|
|
17
|
-
def initialize(top_level,
|
17
|
+
def initialize(top_level, content, options, stats)
|
18
18
|
super
|
19
19
|
|
20
20
|
preprocess = RDoc::Markup::PreProcess.new @file_name, @options.rdoc_include
|
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
|
@@ -190,7 +191,7 @@ class RDoc::Parser
|
|
190
191
|
|
191
192
|
content = remove_modeline content
|
192
193
|
|
193
|
-
parser.new top_level,
|
194
|
+
parser.new top_level, content, options, stats
|
194
195
|
rescue SystemCallError
|
195
196
|
nil
|
196
197
|
end
|
@@ -251,12 +252,12 @@ class RDoc::Parser
|
|
251
252
|
# RDoc::Markup::PreProcess object is created which allows processing of
|
252
253
|
# directives.
|
253
254
|
|
254
|
-
def initialize top_level,
|
255
|
+
def initialize top_level, content, options, stats
|
255
256
|
@top_level = top_level
|
256
257
|
@top_level.parser = self.class
|
257
258
|
@store = @top_level.store
|
258
259
|
|
259
|
-
@file_name =
|
260
|
+
@file_name = top_level.absolute_name
|
260
261
|
@content = content
|
261
262
|
@options = options
|
262
263
|
@stats = stats
|
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
@@ -69,7 +69,7 @@ class RDoc::RDoc
|
|
69
69
|
##
|
70
70
|
# The current documentation store
|
71
71
|
|
72
|
-
|
72
|
+
attr_accessor :store
|
73
73
|
|
74
74
|
##
|
75
75
|
# Add +klass+ that can generate output after parsing
|
@@ -208,15 +208,6 @@ option)
|
|
208
208
|
last
|
209
209
|
end
|
210
210
|
|
211
|
-
##
|
212
|
-
# Sets the current documentation tree to +store+ and sets the store's rdoc
|
213
|
-
# driver to this instance.
|
214
|
-
|
215
|
-
def store= store
|
216
|
-
@store = store
|
217
|
-
@store.rdoc = self
|
218
|
-
end
|
219
|
-
|
220
211
|
##
|
221
212
|
# Update the flag file in an output directory.
|
222
213
|
|
@@ -356,7 +347,7 @@ option)
|
|
356
347
|
|
357
348
|
top_level = @store.add_file filename, relative_name: relative_path.to_s
|
358
349
|
|
359
|
-
parser = RDoc::Parser.for top_level,
|
350
|
+
parser = RDoc::Parser.for top_level, content, @options, @stats
|
360
351
|
|
361
352
|
return unless parser
|
362
353
|
|
@@ -395,7 +386,6 @@ The internal error was:
|
|
395
386
|
$stderr.puts e.backtrace.join("\n\t") if $DEBUG_RDOC
|
396
387
|
|
397
388
|
raise e
|
398
|
-
nil
|
399
389
|
end
|
400
390
|
|
401
391
|
##
|
@@ -407,6 +397,7 @@ The internal error was:
|
|
407
397
|
|
408
398
|
return [] if file_list.empty?
|
409
399
|
|
400
|
+
# This workaround can be removed after the :main: directive is removed
|
410
401
|
original_options = @options.dup
|
411
402
|
@stats.begin_adding
|
412
403
|
|
@@ -415,6 +406,8 @@ The internal error was:
|
|
415
406
|
parse_file filename
|
416
407
|
end.compact
|
417
408
|
|
409
|
+
@store.resolve_c_superclasses
|
410
|
+
|
418
411
|
@stats.done_adding
|
419
412
|
@options = original_options
|
420
413
|
|
@@ -448,8 +441,6 @@ The internal error was:
|
|
448
441
|
# current directory, so make sure you're somewhere writable before invoking.
|
449
442
|
|
450
443
|
def document options
|
451
|
-
self.store = RDoc::Store.new
|
452
|
-
|
453
444
|
if RDoc::Options === options then
|
454
445
|
@options = options
|
455
446
|
else
|
@@ -458,6 +449,8 @@ The internal error was:
|
|
458
449
|
end
|
459
450
|
@options.finish
|
460
451
|
|
452
|
+
@store = RDoc::Store.new(@options)
|
453
|
+
|
461
454
|
if @options.pipe then
|
462
455
|
handle_pipe
|
463
456
|
exit
|
@@ -467,12 +460,6 @@ The internal error was:
|
|
467
460
|
@last_modified = setup_output_dir @options.op_dir, @options.force_update
|
468
461
|
end
|
469
462
|
|
470
|
-
@store.encoding = @options.encoding
|
471
|
-
@store.dry_run = @options.dry_run
|
472
|
-
@store.main = @options.main_page
|
473
|
-
@store.title = @options.title
|
474
|
-
@store.path = @options.op_dir
|
475
|
-
|
476
463
|
@start_time = Time.now
|
477
464
|
|
478
465
|
@store.load_cache
|
@@ -520,6 +507,7 @@ The internal error was:
|
|
520
507
|
Dir.chdir @options.op_dir do
|
521
508
|
unless @options.quiet then
|
522
509
|
$stderr.puts "\nGenerating #{@generator.class.name.sub(/^.*::/, '')} format into #{Dir.pwd}..."
|
510
|
+
$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
511
|
end
|
524
512
|
|
525
513
|
@generator.generate
|
@@ -544,7 +532,7 @@ end
|
|
544
532
|
begin
|
545
533
|
require 'rubygems'
|
546
534
|
|
547
|
-
rdoc_extensions = Gem.
|
535
|
+
rdoc_extensions = Gem.find_latest_files 'rdoc/discover'
|
548
536
|
|
549
537
|
rdoc_extensions.each do |extension|
|
550
538
|
begin
|