rdoc 6.7.0 → 6.12.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.
Files changed (78) 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} +1 -1
  10. data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +3 -3
  11. data/lib/rdoc/{attr.rb → code_object/attr.rb} +1 -1
  12. data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +82 -12
  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/{method_attr.rb → code_object/method_attr.rb} +17 -5
  16. data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +5 -5
  17. data/lib/rdoc/code_object.rb +6 -1
  18. data/lib/rdoc/comment.rb +11 -1
  19. data/lib/rdoc/generator/darkfish.rb +41 -3
  20. data/lib/rdoc/generator/pot/message_extractor.rb +1 -1
  21. data/lib/rdoc/generator/pot/po_entry.rb +1 -1
  22. data/lib/rdoc/generator/template/darkfish/_head.rhtml +23 -0
  23. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +1 -0
  24. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +20 -11
  25. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +3 -8
  26. data/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
  27. data/lib/rdoc/generator/template/darkfish/class.rhtml +69 -43
  28. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +380 -399
  29. data/lib/rdoc/generator/template/darkfish/index.rhtml +11 -10
  30. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +24 -1
  31. data/lib/rdoc/generator/template/darkfish/page.rhtml +5 -5
  32. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +10 -8
  33. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +5 -2
  34. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +11 -0
  35. data/lib/rdoc/markdown.kpeg +1 -1
  36. data/lib/rdoc/markdown.rb +21 -11
  37. data/lib/rdoc/markup/attribute_manager.rb +2 -2
  38. data/lib/rdoc/markup/formatter.rb +19 -12
  39. data/lib/rdoc/markup/pre_process.rb +26 -6
  40. data/lib/rdoc/markup/to_bs.rb +1 -1
  41. data/lib/rdoc/markup/to_html.rb +1 -1
  42. data/lib/rdoc/markup/to_html_crossref.rb +63 -12
  43. data/lib/rdoc/markup/to_rdoc.rb +5 -5
  44. data/lib/rdoc/markup.rb +18 -13
  45. data/lib/rdoc/options.rb +78 -12
  46. data/lib/rdoc/parser/c.rb +26 -2
  47. data/lib/rdoc/parser/changelog.rb +5 -4
  48. data/lib/rdoc/parser/prism_ruby.rb +1099 -0
  49. data/lib/rdoc/parser/ripper_state_lex.rb +7 -305
  50. data/lib/rdoc/parser/ruby.rb +16 -7
  51. data/lib/rdoc/parser/simple.rb +1 -1
  52. data/lib/rdoc/parser.rb +5 -4
  53. data/lib/rdoc/rd/block_parser.rb +3 -3
  54. data/lib/rdoc/rd/inline_parser.rb +3 -3
  55. data/lib/rdoc/rdoc.rb +6 -3
  56. data/lib/rdoc/ri/driver.rb +74 -29
  57. data/lib/rdoc/rubygems_hook.rb +90 -8
  58. data/lib/rdoc/store.rb +12 -0
  59. data/lib/rdoc/task.rb +2 -3
  60. data/lib/rdoc/tom_doc.rb +1 -7
  61. data/lib/rdoc/version.rb +1 -1
  62. data/lib/rdoc.rb +22 -24
  63. data/lib/rubygems_plugin.rb +23 -0
  64. metadata +27 -26
  65. data/RI.rdoc +0 -57
  66. data/lib/rdoc/generator/template/darkfish/.document +0 -0
  67. data/lib/rdoc/generator/template/json_index/.document +0 -1
  68. /data/lib/rdoc/{anon_class.rb → code_object/anon_class.rb} +0 -0
  69. /data/lib/rdoc/{context.rb → code_object/context.rb} +0 -0
  70. /data/lib/rdoc/{extend.rb → code_object/extend.rb} +0 -0
  71. /data/lib/rdoc/{ghost_method.rb → code_object/ghost_method.rb} +0 -0
  72. /data/lib/rdoc/{include.rb → code_object/include.rb} +0 -0
  73. /data/lib/rdoc/{meta_method.rb → code_object/meta_method.rb} +0 -0
  74. /data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +0 -0
  75. /data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +0 -0
  76. /data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +0 -0
  77. /data/lib/rdoc/{require.rb → code_object/require.rb} +0 -0
  78. /data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +0 -0
data/lib/rdoc/options.rb CHANGED
@@ -233,9 +233,9 @@ class RDoc::Options
233
233
  attr_accessor :main_page
234
234
 
235
235
  ##
236
- # The default markup format. The default is 'rdoc'. 'markdown', 'tomdoc'
237
- # and 'rd' are also built-in.
238
-
236
+ # The markup format.
237
+ # One of: +rdoc+ (the default), +markdown+, +rd+, +tomdoc+.
238
+ # See {Markup Formats}[rdoc-ref:RDoc::Markup@Markup+Formats].
239
239
  attr_accessor :markup
240
240
 
241
241
  ##
@@ -325,6 +325,12 @@ class RDoc::Options
325
325
 
326
326
  attr_accessor :verbosity
327
327
 
328
+ ##
329
+ # Warn if rdoc-ref links can't be resolved
330
+ # Default is +false+
331
+
332
+ attr_accessor :warn_missing_rdoc_ref
333
+
328
334
  ##
329
335
  # URL of web cvs frontend
330
336
 
@@ -344,17 +350,34 @@ class RDoc::Options
344
350
  # Indicates if files of test suites should be skipped
345
351
  attr_accessor :skip_tests
346
352
 
353
+ ##
354
+ # Embed mixin methods, attributes, and constants into class documentation. Set via
355
+ # +--[no-]embed-mixins+ (Default is +false+.)
356
+ attr_accessor :embed_mixins
357
+
358
+ ##
359
+ # Exclude the default patterns as well if true.
360
+ attr_reader :apply_default_exclude
361
+
362
+ ##
363
+ # Words to be ignored in autolink cross-references
364
+ attr_accessor :autolink_excluded_words
365
+
347
366
  def initialize loaded_options = nil # :nodoc:
348
367
  init_ivars
349
368
  override loaded_options if loaded_options
350
369
  end
351
370
 
371
+ DEFAULT_EXCLUDE = %w[
372
+ ~\z \.orig\z \.rej\z \.bak\z
373
+ \.gemspec\z
374
+ ]
375
+
352
376
  def init_ivars # :nodoc:
377
+ @autolink_excluded_words = []
353
378
  @dry_run = false
354
- @exclude = %w[
355
- ~\z \.orig\z \.rej\z \.bak\z
356
- \.gemspec\z
357
- ]
379
+ @embed_mixins = false
380
+ @exclude = []
358
381
  @files = nil
359
382
  @force_output = false
360
383
  @force_update = true
@@ -387,11 +410,13 @@ class RDoc::Options
387
410
  @update_output_dir = true
388
411
  @verbosity = 1
389
412
  @visibility = :protected
413
+ @warn_missing_rdoc_ref = true
390
414
  @webcvs = nil
391
415
  @write_options = false
392
416
  @encoding = Encoding::UTF_8
393
417
  @charset = @encoding.name
394
418
  @skip_tests = true
419
+ @apply_default_exclude = true
395
420
  end
396
421
 
397
422
  def init_with map # :nodoc:
@@ -401,6 +426,7 @@ class RDoc::Options
401
426
  @encoding = encoding ? Encoding.find(encoding) : encoding
402
427
 
403
428
  @charset = map['charset']
429
+ @embed_mixins = map['embed_mixins']
404
430
  @exclude = map['exclude']
405
431
  @generator_name = map['generator_name']
406
432
  @hyperlink_all = map['hyperlink_all']
@@ -417,6 +443,9 @@ class RDoc::Options
417
443
  @visibility = map['visibility']
418
444
  @webcvs = map['webcvs']
419
445
 
446
+ @apply_default_exclude = map['apply_default_exclude']
447
+ @autolink_excluded_words = map['autolink_excluded_words']
448
+
420
449
  @rdoc_include = sanitize_path map['rdoc_include']
421
450
  @static_path = sanitize_path map['static_path']
422
451
  end
@@ -432,6 +461,7 @@ class RDoc::Options
432
461
  end
433
462
 
434
463
  @charset = map['charset'] if map.has_key?('charset')
464
+ @embed_mixins = map['embed_mixins'] if map.has_key?('embed_mixins')
435
465
  @exclude = map['exclude'] if map.has_key?('exclude')
436
466
  @generator_name = map['generator_name'] if map.has_key?('generator_name')
437
467
  @hyperlink_all = map['hyperlink_all'] if map.has_key?('hyperlink_all')
@@ -448,6 +478,10 @@ class RDoc::Options
448
478
  @title = map['title'] if map.has_key?('title')
449
479
  @visibility = map['visibility'] if map.has_key?('visibility')
450
480
  @webcvs = map['webcvs'] if map.has_key?('webcvs')
481
+ @autolink_excluded_words = map['autolink_excluded_words'] if map.has_key?('autolink_excluded_words')
482
+ @apply_default_exclude = map['apply_default_exclude'] if map.has_key?('apply_default_exclude')
483
+
484
+ @warn_missing_rdoc_ref = map['warn_missing_rdoc_ref'] if map.has_key?('warn_missing_rdoc_ref')
451
485
 
452
486
  if map.has_key?('rdoc_include')
453
487
  @rdoc_include = sanitize_path map['rdoc_include']
@@ -460,11 +494,12 @@ class RDoc::Options
460
494
  def == other # :nodoc:
461
495
  self.class === other and
462
496
  @encoding == other.encoding and
497
+ @embed_mixins == other.embed_mixins and
463
498
  @generator_name == other.generator_name and
464
499
  @hyperlink_all == other.hyperlink_all and
465
500
  @line_numbers == other.line_numbers and
466
501
  @locale == other.locale and
467
- @locale_dir == other.locale_dir and
502
+ @locale_dir == other.locale_dir and
468
503
  @main_page == other.main_page and
469
504
  @markup == other.markup and
470
505
  @op_dir == other.op_dir and
@@ -475,7 +510,9 @@ class RDoc::Options
475
510
  @template == other.template and
476
511
  @title == other.title and
477
512
  @visibility == other.visibility and
478
- @webcvs == other.webcvs
513
+ @webcvs == other.webcvs and
514
+ @apply_default_exclude == other.apply_default_exclude and
515
+ @autolink_excluded_words == other.autolink_excluded_words
479
516
  end
480
517
 
481
518
  ##
@@ -546,10 +583,12 @@ class RDoc::Options
546
583
  if @exclude.nil? or Regexp === @exclude then
547
584
  # done, #finish is being re-run
548
585
  @exclude
549
- elsif @exclude.empty? then
586
+ elsif !@apply_default_exclude and @exclude.empty? then
550
587
  nil
551
588
  else
552
- Regexp.new(@exclude.join("|"))
589
+ exclude = @exclude
590
+ exclude |= DEFAULT_EXCLUDE if @apply_default_exclude
591
+ Regexp.new(exclude.join("|"))
553
592
  end
554
593
  end
555
594
 
@@ -683,7 +722,7 @@ Usage: #{opt.program_name} [options] [names...]
683
722
 
684
723
  EOF
685
724
 
686
- parsers = Hash.new { |h,parser| h[parser] = [] }
725
+ parsers = Hash.new { |h, parser| h[parser] = [] }
687
726
 
688
727
  RDoc::Parser.parsers.each do |regexp, parser|
689
728
  parsers[parser.name.sub('RDoc::Parser::', '')] << regexp.source
@@ -783,6 +822,11 @@ Usage: #{opt.program_name} [options] [names...]
783
822
  @exclude << value
784
823
  end
785
824
 
825
+ opt.on("--[no-]apply-default-exclude",
826
+ "Use default PATTERN to exclude.") do |value|
827
+ @apply_default_exclude = value
828
+ end
829
+
786
830
  opt.separator nil
787
831
 
788
832
  opt.on("--no-skipping-tests", nil,
@@ -842,6 +886,14 @@ Usage: #{opt.program_name} [options] [names...]
842
886
 
843
887
  opt.separator nil
844
888
 
889
+ opt.on("--[no-]embed-mixins",
890
+ "Embed mixin methods, attributes, and constants",
891
+ "into class documentation. (default false)") do |value|
892
+ @embed_mixins = value
893
+ end
894
+
895
+ opt.separator nil
896
+
845
897
  markup_formats = RDoc::Text::MARKUP_FORMAT.keys.sort
846
898
 
847
899
  opt.on("--markup=MARKUP", markup_formats,
@@ -946,6 +998,13 @@ Usage: #{opt.program_name} [options] [names...]
946
998
 
947
999
  opt.separator nil
948
1000
 
1001
+ opt.on("--autolink-excluded-words=WORDS", Array,
1002
+ "Words to be ignored in autolink cross-references") do |value|
1003
+ @autolink_excluded_words.concat value
1004
+ end
1005
+
1006
+ opt.separator nil
1007
+
949
1008
  opt.on("--hyperlink-all", "-A",
950
1009
  "Generate hyperlinks for all words that",
951
1010
  "correspond to known methods, even if they",
@@ -1087,6 +1146,13 @@ Usage: #{opt.program_name} [options] [names...]
1087
1146
 
1088
1147
  opt.separator nil
1089
1148
 
1149
+ opt.on("--warn-missing-rdoc-ref",
1150
+ "Warn if rdoc-ref links can't be resolved") do |value|
1151
+ @warn_missing_rdoc_ref = value
1152
+ end
1153
+
1154
+ opt.separator nil
1155
+
1090
1156
  opt.on("--[no-]ignore-invalid",
1091
1157
  "Ignore invalid options and continue",
1092
1158
  "(default true).") do |value|
data/lib/rdoc/parser/c.rb CHANGED
@@ -168,7 +168,7 @@ class RDoc::Parser::C < RDoc::Parser
168
168
  # Prepares for parsing a C file. See RDoc::Parser#initialize for details on
169
169
  # the arguments.
170
170
 
171
- def initialize top_level, file_name, content, options, stats
171
+ def initialize top_level, content, options, stats
172
172
  super
173
173
 
174
174
  @known_classes = RDoc::KNOWN_CLASSES.dup
@@ -405,6 +405,7 @@ class RDoc::Parser::C < RDoc::Parser
405
405
  \s*(.*?)\s*\)\s*;
406
406
  %xm) do |type, var_name, const_name, definition|
407
407
  var_name = "rb_cObject" if !var_name or var_name == "rb_mKernel"
408
+ type = "const" if type == "global_const"
408
409
  handle_constants type, var_name, const_name, definition
409
410
  end
410
411
 
@@ -440,7 +441,7 @@ class RDoc::Parser::C < RDoc::Parser
440
441
  # Scans #content for rb_include_module
441
442
 
442
443
  def do_includes
443
- @content.scan(/rb_include_module\s*\(\s*(\w+?),\s*(\w+?)\s*\)/) do |c,m|
444
+ @content.scan(/rb_include_module\s*\(\s*(\w+?),\s*(\w+?)\s*\)/) do |c, m|
444
445
  next unless cls = @classes[c]
445
446
  m = @known_classes[m] || m
446
447
 
@@ -760,6 +761,10 @@ class RDoc::Parser::C < RDoc::Parser
760
761
  rb_define_(?<type>\w+)\(\s*(?:\w+),\s*
761
762
  "(?<name>\w+)"\s*,
762
763
  .*?\)\s*;
764
+ | (?<doc>(?>^\s*/\*.*?\*/\s+))
765
+ rb_define_global_(?<type>const)\(\s*
766
+ "(?<name>\w+)"\s*,
767
+ .*?\)\s*;
763
768
  | (?<doc>(?>^\s*/\*.*?\*/\s+))
764
769
  rb_file_(?<type>const)\(\s*
765
770
  "(?<name>\w+)"\s*,
@@ -1097,15 +1102,34 @@ class RDoc::Parser::C < RDoc::Parser
1097
1102
  # */
1098
1103
  #
1099
1104
  # This method modifies the +comment+
1105
+ # Both :main: and :title: directives are deprecated and will be removed in RDoc 7.
1100
1106
 
1101
1107
  def look_for_directives_in context, comment
1102
1108
  @preprocess.handle comment, context do |directive, param|
1103
1109
  case directive
1104
1110
  when 'main' then
1105
1111
  @options.main_page = param
1112
+
1113
+ warn <<~MSG
1114
+ The :main: directive is deprecated and will be removed in RDoc 7.
1115
+
1116
+ You can use these options to specify the initial page displayed instead:
1117
+ - `--main=#{param}` via the command line
1118
+ - `rdoc.main = "#{param}"` if you use `RDoc::Task`
1119
+ - `main_page: #{param}` in your `.rdoc_options` file
1120
+ MSG
1106
1121
  ''
1107
1122
  when 'title' then
1108
1123
  @options.default_title = param if @options.respond_to? :default_title=
1124
+
1125
+ warn <<~MSG
1126
+ The :title: directive is deprecated and will be removed in RDoc 7.
1127
+
1128
+ You can use these options to specify the title displayed instead:
1129
+ - `--title=#{param}` via the command line
1130
+ - `rdoc.title = "#{param}"` if you use `RDoc::Task`
1131
+ - `title: #{param}` in your `.rdoc_options` file
1132
+ MSG
1109
1133
  ''
1110
1134
  end
1111
1135
  end
@@ -193,7 +193,7 @@ class RDoc::Parser::ChangeLog < RDoc::Parser
193
193
 
194
194
  entries << [entry_name, entry_body] if entry_name
195
195
 
196
- entries.reject! do |(entry,_)|
196
+ entries.reject! do |(entry, _)|
197
197
  entry == nil
198
198
  end
199
199
 
@@ -210,8 +210,9 @@ class RDoc::Parser::ChangeLog < RDoc::Parser
210
210
  grouped_entries = group_entries entries
211
211
 
212
212
  doc = create_document grouped_entries
213
-
214
- @top_level.comment = doc
213
+ comment = RDoc::Comment.new(@content)
214
+ comment.document = doc
215
+ @top_level.comment = comment
215
216
 
216
217
  @top_level
217
218
  end
@@ -221,7 +222,7 @@ class RDoc::Parser::ChangeLog < RDoc::Parser
221
222
 
222
223
  module Git
223
224
  ##
224
- # Parses auxiliary info. Currentry `base-url` to expand
225
+ # Parses auxiliary info. Currently `base-url` to expand
225
226
  # references is effective.
226
227
 
227
228
  def parse_info(info)