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.
Files changed (89) hide show
  1. checksums.yaml +4 -4
  2. data/ExampleMarkdown.md +2 -0
  3. data/ExampleRDoc.rdoc +2 -0
  4. data/History.rdoc +64 -62
  5. data/LICENSE.rdoc +2 -0
  6. data/README.rdoc +13 -0
  7. data/RI.md +842 -0
  8. data/TODO.rdoc +8 -7
  9. data/lib/rdoc/{alias.rb → code_object/alias.rb} +3 -10
  10. data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +7 -12
  11. data/lib/rdoc/{attr.rb → code_object/attr.rb} +4 -7
  12. data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +107 -20
  13. data/lib/rdoc/{constant.rb → code_object/constant.rb} +1 -1
  14. data/lib/rdoc/{context → code_object/context}/section.rb +10 -68
  15. data/lib/rdoc/{context.rb → code_object/context.rb} +4 -46
  16. data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +19 -27
  17. data/lib/rdoc/{require.rb → code_object/require.rb} +1 -1
  18. data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +10 -28
  19. data/lib/rdoc/code_object.rb +6 -32
  20. data/lib/rdoc/comment.rb +12 -5
  21. data/lib/rdoc/generator/darkfish.rb +121 -95
  22. data/lib/rdoc/generator/json_index.rb +1 -17
  23. data/lib/rdoc/generator/markup.rb +2 -2
  24. data/lib/rdoc/generator/pot/message_extractor.rb +3 -3
  25. data/lib/rdoc/generator/pot/po_entry.rb +1 -1
  26. data/lib/rdoc/generator/pot.rb +0 -5
  27. data/lib/rdoc/generator/template/darkfish/_head.rhtml +23 -0
  28. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -29
  29. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +1 -1
  30. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +1 -1
  31. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +20 -11
  32. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +3 -8
  33. data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
  34. data/lib/rdoc/generator/template/darkfish/class.rhtml +84 -43
  35. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +391 -397
  36. data/lib/rdoc/generator/template/darkfish/index.rhtml +11 -10
  37. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +24 -1
  38. data/lib/rdoc/generator/template/darkfish/page.rhtml +5 -5
  39. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +10 -8
  40. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +5 -2
  41. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +11 -0
  42. data/lib/rdoc/markdown.kpeg +8 -6
  43. data/lib/rdoc/markdown.rb +55 -32
  44. data/lib/rdoc/markup/attribute_manager.rb +2 -2
  45. data/lib/rdoc/markup/formatter.rb +19 -12
  46. data/lib/rdoc/markup/heading.rb +7 -1
  47. data/lib/rdoc/markup/pre_process.rb +26 -6
  48. data/lib/rdoc/markup/to_bs.rb +1 -1
  49. data/lib/rdoc/markup/to_html.rb +7 -2
  50. data/lib/rdoc/markup/to_html_crossref.rb +63 -12
  51. data/lib/rdoc/markup/to_rdoc.rb +5 -5
  52. data/lib/rdoc/markup.rb +18 -13
  53. data/lib/rdoc/options.rb +90 -12
  54. data/lib/rdoc/parser/c.rb +30 -9
  55. data/lib/rdoc/parser/changelog.rb +5 -4
  56. data/lib/rdoc/parser/prism_ruby.rb +1092 -0
  57. data/lib/rdoc/parser/ripper_state_lex.rb +7 -305
  58. data/lib/rdoc/parser/ruby.rb +23 -17
  59. data/lib/rdoc/parser/simple.rb +1 -1
  60. data/lib/rdoc/parser.rb +5 -4
  61. data/lib/rdoc/rd/block_parser.rb +3 -3
  62. data/lib/rdoc/rd/inline_parser.rb +3 -3
  63. data/lib/rdoc/rdoc.rb +9 -21
  64. data/lib/rdoc/ri/driver.rb +85 -32
  65. data/lib/rdoc/rubygems_hook.rb +91 -15
  66. data/lib/rdoc/servlet.rb +8 -7
  67. data/lib/rdoc/stats.rb +2 -2
  68. data/lib/rdoc/store.rb +21 -13
  69. data/lib/rdoc/task.rb +2 -3
  70. data/lib/rdoc/text.rb +2 -2
  71. data/lib/rdoc/tom_doc.rb +1 -7
  72. data/lib/rdoc/version.rb +1 -1
  73. data/lib/rdoc.rb +22 -24
  74. data/lib/rubygems_plugin.rb +23 -0
  75. metadata +27 -28
  76. data/RI.rdoc +0 -57
  77. data/lib/rdoc/generator/template/darkfish/.document +0 -0
  78. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
  79. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
  80. data/lib/rdoc/generator/template/json_index/.document +0 -1
  81. /data/lib/rdoc/{anon_class.rb → code_object/anon_class.rb} +0 -0
  82. /data/lib/rdoc/{extend.rb → code_object/extend.rb} +0 -0
  83. /data/lib/rdoc/{ghost_method.rb → code_object/ghost_method.rb} +0 -0
  84. /data/lib/rdoc/{include.rb → code_object/include.rb} +0 -0
  85. /data/lib/rdoc/{meta_method.rb → code_object/meta_method.rb} +0 -0
  86. /data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +0 -0
  87. /data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +0 -0
  88. /data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +0 -0
  89. /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
- EXPR_NONE = 0
16
- EXPR_BEG = 1
17
- EXPR_END = 2
18
- EXPR_ENDARG = 4
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 if RIPPER_HAS_LEX_STATE
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.const_defined?(:State) ? Ripper::Lexer::State.new(EXPR_ARG) : EXPR_ARG
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
- @inner_lex.lex_state = EXPR_ARG unless RIPPER_HAS_LEX_STATE
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
@@ -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, file_name, content, options, stats)
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] & RDoc::Parser::RipperStateLex::EXPR_LABEL) != 0) then
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] & RDoc::Parser::RipperStateLex::EXPR_LABEL) != 0
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] & RDoc::Parser::RipperStateLex::EXPR_LABEL) == 0
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 meth
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 meth
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 meth
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] & RDoc::Parser::RipperStateLex::EXPR_LABEL) != 0) then
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] & RDoc::Parser::RipperStateLex::EXPR_LABEL) == 0
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] & RDoc::Parser::RipperStateLex::EXPR_LABEL) == 0
1907
+ if (tk[:state] & Ripper::EXPR_LABEL) == 0
1902
1908
  nest += 1
1903
1909
  end
1904
1910
 
@@ -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, file_name, content, options, stats)
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, file_name, content, options, stats
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, file_name, content, options, stats
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, file_name, content, options, stats
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 = file_name
260
+ @file_name = top_level.absolute_name
260
261
  @content = content
261
262
  @options = options
262
263
  @stats = stats
@@ -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.0
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.0'
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 a LALR(1) parser generator.
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.0
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.0'
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 a LALR(1) parser generator.
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
- attr_reader :store
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, filename, content, @options, @stats
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.find_files 'rdoc/discover'
535
+ rdoc_extensions = Gem.find_latest_files 'rdoc/discover'
548
536
 
549
537
  rdoc_extensions.each do |extension|
550
538
  begin