rdoc 5.1.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 (179) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +5 -6
  3. data/ExampleMarkdown.md +2 -0
  4. data/ExampleRDoc.rdoc +2 -0
  5. data/History.rdoc +68 -66
  6. data/LEGAL.rdoc +1 -1
  7. data/LICENSE.rdoc +2 -0
  8. data/README.rdoc +18 -6
  9. data/RI.md +842 -0
  10. data/TODO.rdoc +8 -7
  11. data/exe/rdoc +0 -1
  12. data/lib/rdoc/{alias.rb → code_object/alias.rb} +4 -12
  13. data/lib/rdoc/{anon_class.rb → code_object/anon_class.rb} +1 -2
  14. data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +83 -26
  15. data/lib/rdoc/{attr.rb → code_object/attr.rb} +5 -9
  16. data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +112 -24
  17. data/lib/rdoc/{constant.rb → code_object/constant.rb} +4 -5
  18. data/lib/rdoc/{context → code_object/context}/section.rb +13 -83
  19. data/lib/rdoc/{context.rb → code_object/context.rb} +69 -70
  20. data/lib/rdoc/{extend.rb → code_object/extend.rb} +1 -2
  21. data/lib/rdoc/{ghost_method.rb → code_object/ghost_method.rb} +1 -2
  22. data/lib/rdoc/{include.rb → code_object/include.rb} +1 -2
  23. data/lib/rdoc/{meta_method.rb → code_object/meta_method.rb} +1 -2
  24. data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +22 -31
  25. data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +1 -2
  26. data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +4 -5
  27. data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +2 -3
  28. data/lib/rdoc/{require.rb → code_object/require.rb} +2 -3
  29. data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +6 -2
  30. data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +22 -32
  31. data/lib/rdoc/code_object.rb +8 -41
  32. data/lib/rdoc/code_objects.rb +2 -3
  33. data/lib/rdoc/comment.rb +48 -41
  34. data/lib/rdoc/cross_reference.rb +77 -33
  35. data/lib/rdoc/encoding.rb +50 -38
  36. data/lib/rdoc/erb_partial.rb +2 -3
  37. data/lib/rdoc/erbio.rb +4 -5
  38. data/lib/rdoc/generator/darkfish.rb +178 -125
  39. data/lib/rdoc/generator/json_index.rb +9 -22
  40. data/lib/rdoc/generator/markup.rb +6 -17
  41. data/lib/rdoc/generator/pot/message_extractor.rb +4 -4
  42. data/lib/rdoc/generator/pot/po.rb +3 -3
  43. data/lib/rdoc/generator/pot/po_entry.rb +12 -12
  44. data/lib/rdoc/generator/pot.rb +4 -8
  45. data/lib/rdoc/generator/ri.rb +1 -2
  46. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +2 -2
  47. data/lib/rdoc/generator/template/darkfish/_head.rhtml +35 -12
  48. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -5
  49. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
  50. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
  51. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
  52. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +19 -10
  53. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +26 -6
  54. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +4 -9
  55. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +1 -1
  56. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
  57. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +27 -6
  58. data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
  59. data/lib/rdoc/generator/template/darkfish/class.rhtml +125 -78
  60. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +430 -339
  61. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  62. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  63. data/lib/rdoc/generator/template/darkfish/index.rhtml +13 -13
  64. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -92
  65. data/lib/rdoc/generator/template/darkfish/js/search.js +35 -34
  66. data/lib/rdoc/generator/template/darkfish/page.rhtml +5 -5
  67. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +10 -8
  68. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +20 -18
  69. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +32 -20
  70. data/lib/rdoc/generator/template/json_index/js/navigation.js +12 -49
  71. data/lib/rdoc/generator/template/json_index/js/searcher.js +6 -6
  72. data/lib/rdoc/generator.rb +6 -6
  73. data/lib/rdoc/i18n/locale.rb +1 -1
  74. data/lib/rdoc/i18n/text.rb +5 -5
  75. data/lib/rdoc/i18n.rb +4 -4
  76. data/lib/rdoc/known_classes.rb +6 -5
  77. data/lib/rdoc/markdown/entities.rb +1 -2
  78. data/lib/rdoc/markdown/literals.kpeg +1 -2
  79. data/lib/rdoc/markdown/literals.rb +99 -50
  80. data/lib/rdoc/markdown.kpeg +115 -58
  81. data/lib/rdoc/markdown.rb +1584 -902
  82. data/lib/rdoc/markup/attr_changer.rb +1 -2
  83. data/lib/rdoc/markup/attr_span.rb +9 -4
  84. data/lib/rdoc/markup/attribute_manager.rb +118 -57
  85. data/lib/rdoc/markup/attributes.rb +7 -8
  86. data/lib/rdoc/markup/blank_line.rb +1 -2
  87. data/lib/rdoc/markup/block_quote.rb +1 -2
  88. data/lib/rdoc/markup/document.rb +1 -2
  89. data/lib/rdoc/markup/formatter.rb +44 -37
  90. data/lib/rdoc/markup/hard_break.rb +1 -2
  91. data/lib/rdoc/markup/heading.rb +11 -6
  92. data/lib/rdoc/markup/include.rb +1 -2
  93. data/lib/rdoc/markup/indented_paragraph.rb +1 -2
  94. data/lib/rdoc/markup/list.rb +1 -2
  95. data/lib/rdoc/markup/list_item.rb +1 -2
  96. data/lib/rdoc/markup/paragraph.rb +1 -2
  97. data/lib/rdoc/markup/parser.rb +90 -48
  98. data/lib/rdoc/markup/pre_process.rb +38 -11
  99. data/lib/rdoc/markup/raw.rb +1 -2
  100. data/lib/rdoc/markup/regexp_handling.rb +40 -0
  101. data/lib/rdoc/markup/rule.rb +1 -2
  102. data/lib/rdoc/markup/table.rb +56 -0
  103. data/lib/rdoc/markup/to_ansi.rb +1 -2
  104. data/lib/rdoc/markup/to_bs.rb +30 -5
  105. data/lib/rdoc/markup/to_html.rb +95 -40
  106. data/lib/rdoc/markup/to_html_crossref.rb +108 -43
  107. data/lib/rdoc/markup/to_html_snippet.rb +13 -11
  108. data/lib/rdoc/markup/to_joined_paragraph.rb +6 -32
  109. data/lib/rdoc/markup/to_label.rb +11 -12
  110. data/lib/rdoc/markup/to_markdown.rb +13 -14
  111. data/lib/rdoc/markup/to_rdoc.rb +49 -31
  112. data/lib/rdoc/markup/to_table_of_contents.rb +2 -2
  113. data/lib/rdoc/markup/to_test.rb +1 -2
  114. data/lib/rdoc/markup/to_tt_only.rb +3 -4
  115. data/lib/rdoc/markup/verbatim.rb +1 -2
  116. data/lib/rdoc/markup.rb +64 -694
  117. data/lib/rdoc/options.rb +226 -44
  118. data/lib/rdoc/parser/c.rb +231 -246
  119. data/lib/rdoc/parser/changelog.rb +169 -23
  120. data/lib/rdoc/parser/markdown.rb +1 -3
  121. data/lib/rdoc/parser/prism_ruby.rb +1092 -0
  122. data/lib/rdoc/parser/rd.rb +1 -2
  123. data/lib/rdoc/parser/ripper_state_lex.rb +302 -0
  124. data/lib/rdoc/parser/ruby.rb +695 -478
  125. data/lib/rdoc/parser/ruby_tools.rb +33 -36
  126. data/lib/rdoc/parser/simple.rb +4 -4
  127. data/lib/rdoc/parser/text.rb +1 -2
  128. data/lib/rdoc/parser.rb +37 -42
  129. data/lib/rdoc/rd/block_parser.rb +708 -57
  130. data/lib/rdoc/rd/block_parser.ry +15 -11
  131. data/lib/rdoc/rd/inline.rb +5 -6
  132. data/lib/rdoc/rd/inline_parser.rb +787 -140
  133. data/lib/rdoc/rd/inline_parser.ry +1 -1
  134. data/lib/rdoc/rd.rb +4 -5
  135. data/lib/rdoc/rdoc.rb +72 -87
  136. data/lib/rdoc/ri/driver.rb +236 -152
  137. data/lib/rdoc/ri/formatter.rb +1 -1
  138. data/lib/rdoc/ri/paths.rb +4 -18
  139. data/lib/rdoc/ri/store.rb +1 -2
  140. data/lib/rdoc/ri/task.rb +2 -2
  141. data/lib/rdoc/ri.rb +5 -6
  142. data/lib/rdoc/rubygems_hook.rb +98 -20
  143. data/lib/rdoc/servlet.rb +30 -20
  144. data/lib/rdoc/stats/normal.rb +24 -18
  145. data/lib/rdoc/stats/quiet.rb +1 -2
  146. data/lib/rdoc/stats/verbose.rb +1 -3
  147. data/lib/rdoc/stats.rb +6 -7
  148. data/lib/rdoc/store.rb +84 -55
  149. data/lib/rdoc/task.rb +35 -10
  150. data/lib/rdoc/text.rb +40 -27
  151. data/lib/rdoc/token_stream.rb +56 -34
  152. data/lib/rdoc/tom_doc.rb +18 -19
  153. data/lib/rdoc/version.rb +10 -0
  154. data/lib/rdoc.rb +80 -56
  155. data/lib/rubygems_plugin.rb +23 -0
  156. data/man/ri.1 +247 -0
  157. metadata +45 -99
  158. data/.document +0 -5
  159. data/.gitignore +0 -13
  160. data/.travis.yml +0 -24
  161. data/Gemfile +0 -3
  162. data/RI.rdoc +0 -57
  163. data/Rakefile +0 -133
  164. data/bin/console +0 -7
  165. data/bin/setup +0 -6
  166. data/lib/gauntlet_rdoc.rb +0 -82
  167. data/lib/rdoc/generator/template/darkfish/.document +0 -0
  168. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +0 -19
  169. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +0 -9
  170. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
  171. data/lib/rdoc/generator/template/json_index/.document +0 -1
  172. data/lib/rdoc/markup/formatter_test_case.rb +0 -764
  173. data/lib/rdoc/markup/inline.rb +0 -2
  174. data/lib/rdoc/markup/special.rb +0 -41
  175. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -115
  176. data/lib/rdoc/ruby_lex.rb +0 -1367
  177. data/lib/rdoc/ruby_token.rb +0 -461
  178. data/lib/rdoc/test_case.rb +0 -204
  179. data/rdoc.gemspec +0 -57
@@ -1,5 +1,4 @@
1
- # frozen_string_literal: false
2
- require 'time'
1
+ # frozen_string_literal: true
3
2
 
4
3
  ##
5
4
  # A ChangeLog file parser.
@@ -29,13 +28,13 @@ class RDoc::Parser::ChangeLog < RDoc::Parser
29
28
 
30
29
  if last =~ /\)\s*\z/ and continuation =~ /\A\(/ then
31
30
  last.sub!(/\)\s*\z/, ',')
32
- continuation.sub!(/\A\(/, '')
31
+ continuation = continuation.sub(/\A\(/, '')
33
32
  end
34
33
 
35
34
  if last =~ /\s\z/ then
36
35
  last << continuation
37
36
  else
38
- last << ' ' << continuation
37
+ last << ' ' + continuation
39
38
  end
40
39
  end
41
40
 
@@ -106,14 +105,32 @@ class RDoc::Parser::ChangeLog < RDoc::Parser
106
105
  entries.group_by do |title, _|
107
106
  begin
108
107
  time = @time_cache[title]
109
- (time || Time.parse(title)).strftime '%Y-%m-%d'
108
+ (time || parse_date(title)).strftime '%Y-%m-%d'
110
109
  rescue NoMethodError, ArgumentError
111
110
  time, = title.split ' ', 2
112
- Time.parse(time).strftime '%Y-%m-%d'
111
+ parse_date(time).strftime '%Y-%m-%d'
113
112
  end
114
113
  end
115
114
  end
116
115
 
116
+ ##
117
+ # Parse date in ISO-8601, RFC-2822, or default of Git
118
+
119
+ def parse_date(date)
120
+ case date
121
+ when /\A\s*(\d+)-(\d+)-(\d+)(?:[ T](\d+):(\d+):(\d+) *([-+]\d\d):?(\d\d))?\b/
122
+ Time.new($1, $2, $3, $4, $5, $6, ("#{$7}:#{$8}" if $7))
123
+ when /\A\s*\w{3}, +(\d+) (\w{3}) (\d+) (\d+):(\d+):(\d+) *(?:([-+]\d\d):?(\d\d))\b/
124
+ Time.new($3, $2, $1, $4, $5, $6, ("#{$7}:#{$8}" if $7))
125
+ when /\A\s*\w{3} (\w{3}) +(\d+) (\d+) (\d+):(\d+):(\d+) *(?:([-+]\d\d):?(\d\d))\b/
126
+ Time.new($3, $1, $2, $4, $5, $6, ("#{$7}:#{$8}" if $7))
127
+ when /\A\s*\w{3} (\w{3}) +(\d+) (\d+):(\d+):(\d+) (\d+)\b/
128
+ Time.new($6, $1, $2, $3, $4, $5)
129
+ else
130
+ raise ArgumentError, "bad date: #{date}"
131
+ end
132
+ end
133
+
117
134
  ##
118
135
  # Parses the entries in the ChangeLog.
119
136
  #
@@ -131,6 +148,13 @@ class RDoc::Parser::ChangeLog < RDoc::Parser
131
148
 
132
149
  def parse_entries
133
150
  @time_cache ||= {}
151
+
152
+ if /\A((?:.*\n){,3})commit\s/ =~ @content
153
+ class << self; prepend Git; end
154
+ parse_info($1)
155
+ return parse_entries
156
+ end
157
+
134
158
  entries = []
135
159
  entry_name = nil
136
160
  entry_body = []
@@ -145,29 +169,20 @@ class RDoc::Parser::ChangeLog < RDoc::Parser
145
169
  entry_name = $&
146
170
 
147
171
  begin
148
- time = Time.parse entry_name
172
+ time = parse_date entry_name
149
173
  @time_cache[entry_name] = time
150
- # HACK Ruby 1.8 does not raise ArgumentError for Time.parse "Other"
151
- entry_name = nil unless entry_name =~ /#{time.year}/
152
- rescue NoMethodError
153
- # HACK Ruby 2.1.2 and earlier raises NoMethodError if time part is absent
154
- entry_name.split ' ', 2
155
174
  rescue ArgumentError
156
- if /out of range/ =~ $!.message
157
- Time.parse(entry_name.split(' ', 2)[0]) rescue entry_name = nil
158
- else
159
- entry_name = nil
160
- end
175
+ entry_name = nil
161
176
  end
162
177
 
163
178
  entry_body = []
164
179
  when /^(\t| {8})?\*\s*(.*)/ then # "\t* file.c (func): ..."
165
- entry_body << $2
180
+ entry_body << $2.dup
166
181
  when /^(\t| {8})?\s*(\(.*)/ then # "\t(func): ..."
167
182
  entry = $2
168
183
 
169
184
  if entry_body.last =~ /:/ then
170
- entry_body << entry
185
+ entry_body << entry.dup
171
186
  else
172
187
  continue_entry_body entry_body, entry
173
188
  end
@@ -178,7 +193,7 @@ class RDoc::Parser::ChangeLog < RDoc::Parser
178
193
 
179
194
  entries << [entry_name, entry_body] if entry_name
180
195
 
181
- entries.reject! do |(entry,_)|
196
+ entries.reject! do |(entry, _)|
182
197
  entry == nil
183
198
  end
184
199
 
@@ -190,15 +205,146 @@ class RDoc::Parser::ChangeLog < RDoc::Parser
190
205
 
191
206
  def scan
192
207
  @time_cache = {}
208
+
193
209
  entries = parse_entries
194
210
  grouped_entries = group_entries entries
195
211
 
196
212
  doc = create_document grouped_entries
197
-
198
- @top_level.comment = doc
213
+ comment = RDoc::Comment.new(@content)
214
+ comment.document = doc
215
+ @top_level.comment = comment
199
216
 
200
217
  @top_level
201
218
  end
202
219
 
203
- end
220
+ ##
221
+ # The extension for Git commit log
222
+
223
+ module Git
224
+ ##
225
+ # Parses auxiliary info. Currently `base-url` to expand
226
+ # references is effective.
227
+
228
+ def parse_info(info)
229
+ /^\s*base-url\s*=\s*(.*\S)/ =~ info
230
+ @base_url = $1
231
+ end
232
+
233
+ ##
234
+ # Parses the entries in the Git commit logs
235
+
236
+ def parse_entries
237
+ entries = []
238
+
239
+ @content.scan(/^commit\s+(\h{20})\h*\n((?:.+\n)*)\n((?: {4}.*\n+)*)/) do
240
+ entry_name, header, entry_body = $1, $2, $3.gsub(/^ {4}/, '')
241
+ # header = header.scan(/^ *(\S+?): +(.*)/).to_h
242
+ # date = header["CommitDate"] || header["Date"]
243
+ date = header[/^ *(?:Author)?Date: +(.*)/, 1]
244
+ author = header[/^ *Author: +(.*)/, 1]
245
+ begin
246
+ time = parse_date(header[/^ *CommitDate: +(.*)/, 1] || date)
247
+ @time_cache[entry_name] = time
248
+ author.sub!(/\s*<(.*)>/, '')
249
+ email = $1
250
+ entries << [entry_name, [author, email, date, entry_body]]
251
+ rescue ArgumentError
252
+ end
253
+ end
254
+
255
+ entries
256
+ end
257
+
258
+ ##
259
+ # Returns a list of ChangeLog entries as
260
+ # RDoc::Parser::ChangeLog::Git::LogEntry list for the given
261
+ # +entries+.
262
+
263
+ def create_entries entries
264
+ # git log entries have no strictly itemized style like the old
265
+ # style, just assume Markdown.
266
+ entries.map do |commit, entry|
267
+ LogEntry.new(@base_url, commit, *entry)
268
+ end
269
+ end
270
+
271
+ LogEntry = Struct.new(:base, :commit, :author, :email, :date, :contents) do
272
+ HEADING_LEVEL = 3
273
+
274
+ def initialize(base, commit, author, email, date, contents)
275
+ case contents
276
+ when String
277
+ contents = RDoc::Markdown.parse(contents).parts.each do |body|
278
+ case body
279
+ when RDoc::Markup::Heading
280
+ body.level += HEADING_LEVEL + 1
281
+ end
282
+ end
283
+ case first = contents[0]
284
+ when RDoc::Markup::Paragraph
285
+ contents[0] = RDoc::Markup::Heading.new(HEADING_LEVEL + 1, first.text)
286
+ end
287
+ end
288
+ super
289
+ end
290
+
291
+ def level
292
+ HEADING_LEVEL
293
+ end
294
+
295
+ def aref
296
+ "label-#{commit}"
297
+ end
298
+
299
+ def label context = nil
300
+ aref
301
+ end
302
+
303
+ def text
304
+ case base
305
+ when nil
306
+ "#{date}"
307
+ when /%s/
308
+ "{#{date}}[#{base % commit}]"
309
+ else
310
+ "{#{date}}[#{base}#{commit}]"
311
+ end + " {#{author}}[mailto:#{email}]"
312
+ end
313
+
314
+ def accept visitor
315
+ visitor.accept_heading self
316
+ begin
317
+ if visitor.respond_to?(:code_object=)
318
+ code_object = visitor.code_object
319
+ visitor.code_object = self
320
+ end
321
+ contents.each do |body|
322
+ body.accept visitor
323
+ end
324
+ ensure
325
+ if visitor.respond_to?(:code_object)
326
+ visitor.code_object = code_object
327
+ end
328
+ end
329
+ end
204
330
 
331
+ def pretty_print q # :nodoc:
332
+ q.group(2, '[log_entry: ', ']') do
333
+ q.text commit
334
+ q.text ','
335
+ q.breakable
336
+ q.group(2, '[date: ', ']') { q.text date }
337
+ q.text ','
338
+ q.breakable
339
+ q.group(2, '[author: ', ']') { q.text author }
340
+ q.text ','
341
+ q.breakable
342
+ q.group(2, '[email: ', ']') { q.text email }
343
+ q.text ','
344
+ q.breakable
345
+ q.pp contents
346
+ end
347
+ end
348
+ end
349
+ end
350
+ end
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # Parse a Markdown format file. The parsed RDoc::Markup::Document is attached
4
4
  # as a file comment.
@@ -20,5 +20,3 @@ class RDoc::Parser::Markdown < RDoc::Parser
20
20
  end
21
21
 
22
22
  end
23
-
24
-