rdoc 6.2.1 → 6.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rdoc might be problematic. Click here for more details.

Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rdoc.rb +21 -0
  3. data/lib/rdoc/any_method.rb +52 -7
  4. data/lib/rdoc/context.rb +10 -2
  5. data/lib/rdoc/context/section.rb +0 -13
  6. data/lib/rdoc/cross_reference.rb +2 -2
  7. data/lib/rdoc/erb_partial.rb +1 -1
  8. data/lib/rdoc/erbio.rb +2 -2
  9. data/lib/rdoc/generator/darkfish.rb +3 -3
  10. data/lib/rdoc/generator/pot.rb +3 -3
  11. data/lib/rdoc/generator/template/darkfish/_head.rhtml +4 -5
  12. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +2 -2
  13. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +2 -2
  14. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
  15. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +2 -2
  16. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
  17. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
  18. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +5 -5
  19. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +5 -5
  20. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +5 -5
  21. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
  22. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +4 -4
  23. data/lib/rdoc/generator/template/darkfish/class.rhtml +44 -44
  24. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +1 -1
  25. data/lib/rdoc/generator/template/darkfish/index.rhtml +3 -4
  26. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +15 -16
  27. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +16 -16
  28. data/lib/rdoc/i18n.rb +1 -1
  29. data/lib/rdoc/markdown.kpeg +1 -1
  30. data/lib/rdoc/markdown.rb +1 -1
  31. data/lib/rdoc/markup/formatter.rb +1 -1
  32. data/lib/rdoc/markup/pre_process.rb +1 -1
  33. data/lib/rdoc/markup/to_html.rb +19 -6
  34. data/lib/rdoc/markup/to_html_crossref.rb +13 -5
  35. data/lib/rdoc/options.rb +1 -1
  36. data/lib/rdoc/parser.rb +7 -7
  37. data/lib/rdoc/parser/c.rb +24 -58
  38. data/lib/rdoc/rd/block_parser.rb +1 -1
  39. data/lib/rdoc/rd/inline_parser.rb +1 -1
  40. data/lib/rdoc/rdoc.rb +26 -20
  41. data/lib/rdoc/ri/driver.rb +9 -5
  42. data/lib/rdoc/ri/paths.rb +3 -17
  43. data/lib/rdoc/ri/task.rb +1 -1
  44. data/lib/rdoc/rubygems_hook.rb +2 -2
  45. data/lib/rdoc/servlet.rb +6 -1
  46. data/lib/rdoc/store.rb +2 -2
  47. data/lib/rdoc/version.rb +1 -1
  48. data/man/ri.1 +247 -0
  49. data/rdoc.gemspec +1 -1
  50. metadata +7 -6
@@ -755,7 +755,7 @@ Usage: #{opt.program_name} [options] [names...]
755
755
 
756
756
  opt.on("--[no-]force-update", "-U",
757
757
  "Forces rdoc to scan all sources even if",
758
- "newer than the flag file.") do |value|
758
+ "no files are newer than the flag file.") do |value|
759
759
  @force_update = value
760
760
  end
761
761
 
@@ -78,7 +78,7 @@ class RDoc::Parser
78
78
 
79
79
  return true if s[0, 2] == Marshal.dump('')[0, 2] or s.index("\x00")
80
80
 
81
- mode = 'r:utf-8' # default source encoding has been chagened to utf-8
81
+ mode = 'r:utf-8' # default source encoding has been changed to utf-8
82
82
  s.sub!(/\A#!.*\n/, '') # assume shebang line isn't longer than 1024.
83
83
  encoding = s[/^\s*\#\s*(?:-\*-\s*)?(?:en)?coding:\s*([^\s;]+?)(?:-\*-|[\s;])/, 1]
84
84
  mode = "rb:#{encoding}" if encoding
@@ -269,9 +269,9 @@ class RDoc::Parser
269
269
  end
270
270
 
271
271
  # simple must come first in order to show up last in the parsers list
272
- require 'rdoc/parser/simple'
273
- require 'rdoc/parser/c'
274
- require 'rdoc/parser/changelog'
275
- require 'rdoc/parser/markdown'
276
- require 'rdoc/parser/rd'
277
- require 'rdoc/parser/ruby'
272
+ require_relative 'parser/simple'
273
+ require_relative 'parser/c'
274
+ require_relative 'parser/changelog'
275
+ require_relative 'parser/markdown'
276
+ require_relative 'parser/rd'
277
+ require_relative 'parser/ruby'
@@ -209,48 +209,6 @@ class RDoc::Parser::C < RDoc::Parser
209
209
  end
210
210
  end
211
211
 
212
- ##
213
- # Removes duplicate call-seq entries for methods using the same
214
- # implementation.
215
-
216
- def deduplicate_call_seq
217
- @methods.each do |var_name, functions|
218
- class_name = @known_classes[var_name]
219
- next unless class_name
220
- class_obj = find_class var_name, class_name
221
-
222
- functions.each_value do |method_names|
223
- next if method_names.length == 1
224
-
225
- method_names.each do |method_name|
226
- deduplicate_method_name class_obj, method_name
227
- end
228
- end
229
- end
230
- end
231
-
232
- ##
233
- # If two ruby methods share a C implementation (and comment) this
234
- # deduplicates the examples in the call_seq for the method to reduce
235
- # confusion in the output.
236
-
237
- def deduplicate_method_name class_obj, method_name # :nodoc:
238
- return unless
239
- method = class_obj.method_list.find { |m| m.name == method_name }
240
- return unless call_seq = method.call_seq
241
-
242
- method_name = method_name[0, 1] if method_name =~ /\A\[/
243
-
244
- entries = call_seq.split "\n"
245
-
246
- matching = entries.select do |entry|
247
- entry =~ /^\w*\.?#{Regexp.escape method_name}/ or
248
- entry =~ /\s#{Regexp.escape method_name}\s/
249
- end
250
-
251
- method.call_seq = matching.join "\n"
252
- end
253
-
254
212
  ##
255
213
  # Scans #content for rb_define_alias
256
214
 
@@ -269,23 +227,29 @@ class RDoc::Parser::C < RDoc::Parser
269
227
  end
270
228
 
271
229
  class_obj = find_class var_name, class_name
272
-
273
- al = RDoc::Alias.new '', old_name, new_name, ''
274
- al.singleton = @singleton_classes.key? var_name
275
-
276
230
  comment = find_alias_comment var_name, new_name, old_name
277
-
278
231
  comment.normalize
279
-
280
- al.comment = comment
281
-
282
- al.record_location @top_level
283
-
284
- class_obj.add_alias al
285
- @stats.add_alias al
232
+ if comment.to_s.empty? and existing_method = class_obj.method_list.find { |m| m.name == old_name}
233
+ comment = existing_method.comment
234
+ end
235
+ add_alias(var_name, class_obj, old_name, new_name, comment)
286
236
  end
287
237
  end
288
238
 
239
+ ##
240
+ # Add alias, either from a direct alias definition, or from two
241
+ # method that reference the same function.
242
+
243
+ def add_alias(var_name, class_obj, old_name, new_name, comment)
244
+ al = RDoc::Alias.new '', old_name, new_name, ''
245
+ al.singleton = @singleton_classes.key? var_name
246
+ al.comment = comment
247
+ al.record_location @top_level
248
+ class_obj.add_alias al
249
+ @stats.add_alias al
250
+ al
251
+ end
252
+
289
253
  ##
290
254
  # Scans #content for rb_attr and rb_define_attr
291
255
 
@@ -354,7 +318,7 @@ class RDoc::Parser::C < RDoc::Parser
354
318
  \s*"(?<module_name_1>\w+)"\s*
355
319
  \)
356
320
  |
357
- _under\s*\( # rb_define_module_under(module_under, module_name_1)
321
+ _under\s*\( # rb_define_module_under(module_under, module_name_2)
358
322
  \s*(?<module_under>\w+),
359
323
  \s*"(?<module_name_2>\w+)"
360
324
  \s*\)
@@ -608,7 +572,7 @@ class RDoc::Parser::C < RDoc::Parser
608
572
  ((?>/\*.*?\*/\s*)?)
609
573
  ((?:(?:\w+)\s+)?
610
574
  (?:intern\s+)?VALUE\s+(\w+)
611
- \s*(?:\([^)]*\))(?:[^;]|$))
575
+ \s*(?:\([^)]*\))(?:[^\);]|$))
612
576
  | ((?>/\*.*?\*/\s*))^\s*(\#\s*define\s+(\w+)\s+(\w+))
613
577
  | ^\s*\#\s*define\s+(\w+)\s+(\w+)
614
578
  }xm) do
@@ -1021,6 +985,10 @@ class RDoc::Parser::C < RDoc::Parser
1021
985
 
1022
986
  class_obj = find_class var_name, class_name
1023
987
 
988
+ if existing_method = class_obj.method_list.find { |m| m.c_function == function }
989
+ add_alias(var_name, class_obj, existing_method.name, meth_name, existing_method.comment)
990
+ end
991
+
1024
992
  if class_obj then
1025
993
  if meth_name == 'initialize' then
1026
994
  meth_name = 'new'
@@ -1249,8 +1217,6 @@ class RDoc::Parser::C < RDoc::Parser
1249
1217
  do_aliases
1250
1218
  do_attrs
1251
1219
 
1252
- deduplicate_call_seq
1253
-
1254
1220
  @store.add_c_variables self
1255
1221
 
1256
1222
  @top_level
@@ -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.4.16
4
+ # This file is automatically generated by Racc 1.5.1
5
5
  # from Racc grammar file "".
6
6
  #
7
7
 
@@ -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.4.16
4
+ # This file is automatically generated by Racc 1.5.1
5
5
  # from Racc grammar file "".
6
6
  #
7
7
 
@@ -112,11 +112,17 @@ class RDoc::RDoc
112
112
 
113
113
  file_list = normalized_file_list files, true, @options.exclude
114
114
 
115
- file_list = file_list.uniq
116
-
117
- file_list = remove_unparseable file_list
118
-
119
- file_list.sort
115
+ file_list = remove_unparseable(file_list)
116
+
117
+ if file_list.count {|name, mtime|
118
+ file_list[name] = @last_modified[name] unless mtime
119
+ mtime
120
+ } > 0
121
+ @last_modified.replace file_list
122
+ file_list.keys.sort
123
+ else
124
+ []
125
+ end
120
126
  end
121
127
 
122
128
  ##
@@ -254,11 +260,11 @@ option)
254
260
  # read and strip comments
255
261
  patterns = File.read(filename).gsub(/#.*/, '')
256
262
 
257
- result = []
263
+ result = {}
258
264
 
259
- patterns.split.each do |patt|
265
+ patterns.split(' ').each do |patt|
260
266
  candidates = Dir.glob(File.join(in_dir, patt))
261
- result.concat normalized_file_list(candidates, false, @options.exclude)
267
+ result.update normalized_file_list(candidates, false, @options.exclude)
262
268
  end
263
269
 
264
270
  result
@@ -278,21 +284,21 @@ option)
278
284
 
279
285
  def normalized_file_list(relative_files, force_doc = false,
280
286
  exclude_pattern = nil)
281
- file_list = []
287
+ file_list = {}
282
288
 
283
289
  relative_files.each do |rel_file_name|
290
+ rel_file_name = rel_file_name.sub(/^\.\//, '')
284
291
  next if rel_file_name.end_with? 'created.rid'
285
292
  next if exclude_pattern && exclude_pattern =~ rel_file_name
286
293
  stat = File.stat rel_file_name rescue next
287
294
 
288
295
  case type = stat.ftype
289
296
  when "file" then
290
- next if last_modified = @last_modified[rel_file_name] and
291
- stat.mtime.to_i <= last_modified.to_i
297
+ mtime = (stat.mtime unless (last_modified = @last_modified[rel_file_name] and
298
+ stat.mtime.to_i <= last_modified.to_i))
292
299
 
293
300
  if force_doc or RDoc::Parser.can_parse(rel_file_name) then
294
- file_list << rel_file_name.sub(/^\.\//, '')
295
- @last_modified[rel_file_name] = stat.mtime
301
+ file_list[rel_file_name] = mtime
296
302
  end
297
303
  when "directory" then
298
304
  next if rel_file_name == "CVS" || rel_file_name == ".svn"
@@ -303,16 +309,16 @@ option)
303
309
  dot_doc = File.join rel_file_name, RDoc::DOT_DOC_FILENAME
304
310
 
305
311
  if File.file? dot_doc then
306
- file_list << parse_dot_doc_file(rel_file_name, dot_doc)
312
+ file_list.update(parse_dot_doc_file(rel_file_name, dot_doc))
307
313
  else
308
- file_list << list_files_in_directory(rel_file_name)
314
+ file_list.update(list_files_in_directory(rel_file_name))
309
315
  end
310
316
  else
311
317
  warn "rdoc can't parse the #{type} #{rel_file_name}"
312
318
  end
313
319
  end
314
320
 
315
- file_list.flatten
321
+ file_list
316
322
  end
317
323
 
318
324
  ##
@@ -427,7 +433,7 @@ The internal error was:
427
433
  # files for emacs and vim.
428
434
 
429
435
  def remove_unparseable files
430
- files.reject do |file|
436
+ files.reject do |file, *|
431
437
  file =~ /\.(?:class|eps|erb|scpt\.txt|svg|ttf|yml)$/i or
432
438
  (file =~ /tags$/i and
433
439
  open(file, 'rb') { |io|
@@ -561,6 +567,6 @@ rescue LoadError
561
567
  end
562
568
 
563
569
  # require built-in generators after discovery in case they've been replaced
564
- require 'rdoc/generator/darkfish'
565
- require 'rdoc/generator/ri'
566
- require 'rdoc/generator/pot'
570
+ require_relative 'generator/darkfish'
571
+ require_relative 'generator/ri'
572
+ require_relative 'generator/pot'
@@ -17,7 +17,7 @@ require 'rdoc'
17
17
  ##
18
18
  # For RubyGems backwards compatibility
19
19
 
20
- require 'rdoc/ri/formatter'
20
+ require_relative 'formatter'
21
21
 
22
22
  ##
23
23
  # The RI driver implements the command-line ri tool.
@@ -356,7 +356,7 @@ or the PAGER environment variable.
356
356
  end
357
357
  end
358
358
 
359
- argv = ENV['RI'].to_s.split.concat argv
359
+ argv = ENV['RI'].to_s.split(' ').concat argv
360
360
 
361
361
  opts.parse! argv
362
362
 
@@ -1228,7 +1228,7 @@ or the PAGER environment variable.
1228
1228
  # +cache+ indicate if it is a class or instance method.
1229
1229
 
1230
1230
  def load_method store, cache, klass, type, name
1231
- methods = store.send(cache)[klass]
1231
+ methods = store.public_send(cache)[klass]
1232
1232
 
1233
1233
  return unless methods
1234
1234
 
@@ -1521,7 +1521,7 @@ or the PAGER environment variable.
1521
1521
  pagers.compact.uniq.each do |pager|
1522
1522
  next unless pager
1523
1523
 
1524
- pager_cmd = pager.split.first
1524
+ pager_cmd = pager.split(' ').first
1525
1525
 
1526
1526
  next unless in_path? pager_cmd
1527
1527
 
@@ -1551,7 +1551,11 @@ or the PAGER environment variable.
1551
1551
  # Starts a WEBrick server for ri.
1552
1552
 
1553
1553
  def start_server
1554
- require 'webrick'
1554
+ begin
1555
+ require 'webrick'
1556
+ rescue LoadError
1557
+ abort "webrick is not found. You may need to `gem install webrick` to install webrick."
1558
+ end
1555
1559
 
1556
1560
  server = WEBrick::HTTPServer.new :Port => @server
1557
1561
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'rdoc/rdoc'
2
+ require_relative '../rdoc'
3
3
 
4
4
  ##
5
5
  # The directories where ri data lives. Paths can be enumerated via ::each, or
@@ -12,23 +12,9 @@ module RDoc::RI::Paths
12
12
 
13
13
  version = RbConfig::CONFIG['ruby_version']
14
14
 
15
- BASE = if RbConfig::CONFIG.key? 'ridir' then
16
- File.join RbConfig::CONFIG['ridir'], version
17
- else
18
- File.join RbConfig::CONFIG['datadir'], 'ri', version
19
- end
15
+ BASE = File.join RbConfig::CONFIG['ridir'], version
20
16
 
21
- homedir = begin
22
- File.expand_path('~')
23
- rescue ArgumentError
24
- end
25
-
26
- homedir ||= ENV['HOME'] ||
27
- ENV['USERPROFILE'] || ENV['HOMEPATH'] # for 1.8 compatibility
28
-
29
- HOMEDIR = if homedir then
30
- File.join homedir, ".rdoc"
31
- end
17
+ HOMEDIR = RDoc.home
32
18
  #:startdoc:
33
19
 
34
20
  ##
@@ -4,7 +4,7 @@ begin
4
4
  rescue Gem::LoadError
5
5
  end unless defined?(RDoc)
6
6
 
7
- require 'rdoc/task'
7
+ require_relative '../task'
8
8
 
9
9
  ##
10
10
  # RDoc::RI::Task creates ri data in <code>./.rdoc</code> for your project.
@@ -70,7 +70,7 @@ class RDoc::RubygemsHook
70
70
  def self.load_rdoc
71
71
  return if @rdoc_version
72
72
 
73
- require 'rdoc/rdoc'
73
+ require_relative 'rdoc'
74
74
 
75
75
  @rdoc_version = Gem::Version.new ::RDoc::VERSION
76
76
  end
@@ -158,7 +158,7 @@ class RDoc::RubygemsHook
158
158
 
159
159
  case config_args = Gem.configuration[:rdoc]
160
160
  when String then
161
- args = args.concat config_args.split
161
+ args = args.concat config_args.split(' ')
162
162
  when Array then
163
163
  args = args.concat config_args
164
164
  end
@@ -3,7 +3,12 @@ require 'rdoc'
3
3
  require 'erb'
4
4
  require 'time'
5
5
  require 'json'
6
- require 'webrick'
6
+
7
+ begin
8
+ require 'webrick'
9
+ rescue LoadError
10
+ abort "webrick is not found. You may need to `gem install webrick` to install webrick."
11
+ end
7
12
 
8
13
  ##
9
14
  # This is a WEBrick servlet that allows you to browse ri documentation.
@@ -482,7 +482,7 @@ class RDoc::Store
482
482
  when :gem then
483
483
  parent = File.expand_path '..', @path
484
484
  "gem #{File.basename parent}"
485
- when :home then '~/.rdoc'
485
+ when :home then RDoc.home
486
486
  when :site then 'ruby site'
487
487
  when :system then 'ruby core'
488
488
  else @path
@@ -723,7 +723,7 @@ class RDoc::Store
723
723
 
724
724
  def page name
725
725
  @text_files_hash.each_value.find do |file|
726
- file.page_name == name
726
+ file.page_name == name or file.base_name == name
727
727
  end
728
728
  end
729
729
 
@@ -3,6 +3,6 @@ module RDoc
3
3
  ##
4
4
  # RDoc version you are using
5
5
 
6
- VERSION = '6.2.1'
6
+ VERSION = '6.3.0'
7
7
 
8
8
  end
@@ -0,0 +1,247 @@
1
+ .\"Ruby is copyrighted by Yukihiro Matsumoto <matz@netlab.jp>.
2
+ .Dd April 20, 2017
3
+ .Dt RI \&1 "Ruby Programmer's Reference Guide"
4
+ .Os UNIX
5
+ .Sh NAME
6
+ .Nm ri
7
+ .Nd Ruby API reference front end
8
+ .Sh SYNOPSIS
9
+ .Nm
10
+ .Op Fl ahilTv
11
+ .Op Fl d Ar DIRNAME
12
+ .Op Fl f Ar FORMAT
13
+ .Op Fl w Ar WIDTH
14
+ .Op Fl - Ns Oo Cm no- Oc Ns Cm pager
15
+ .Op Fl -server Ns Oo = Ns Ar PORT Oc
16
+ .Op Fl - Ns Oo Cm no- Oc Ns Cm list-doc-dirs
17
+ .Op Fl -no-standard-docs
18
+ .Op Fl - Ns Oo Cm no- Oc Ns Bro Cm system Ns | Ns Cm site Ns | Ns Cm gems Ns | Ns Cm home Brc
19
+ .Op Fl - Ns Oo Cm no- Oc Ns Cm profile
20
+ .Op Fl -dump Ns = Ns Ar CACHE
21
+ .Op Ar name ...
22
+ .Sh DESCRIPTION
23
+ .Nm
24
+ is a command-line front end for the Ruby API reference.
25
+ You can search and read the API reference for classes and methods with
26
+ .Nm .
27
+ .Pp
28
+ .Nm
29
+ is a part of Ruby.
30
+ .Pp
31
+ .Ar name
32
+ can be:
33
+ .Bl -diag -offset indent
34
+ .It Class | Module | Module::Class
35
+ .Pp
36
+ .It Class::method | Class#method | Class.method | method
37
+ .Pp
38
+ .It gem_name: | gem_name:README | gem_name:History
39
+ .El
40
+ .Pp
41
+ All class names may be abbreviated to their minimum unambiguous form.
42
+ If a name is ambiguous, all valid options will be listed.
43
+ .Pp
44
+ A
45
+ .Ql \&.
46
+ matches either class or instance methods, while #method
47
+ matches only instance and ::method matches only class methods.
48
+ .Pp
49
+ README and other files may be displayed by prefixing them with the gem name
50
+ they're contained in. If the gem name is followed by a
51
+ .Ql \&:
52
+ all files in the gem will be shown.
53
+ The file name extension may be omitted where it is unambiguous.
54
+ .Pp
55
+ For example:
56
+ .Bd -literal -offset indent
57
+ ri Fil
58
+ ri File
59
+ ri File.new
60
+ ri zip
61
+ ri rdoc:README
62
+ .Ed
63
+ .Pp
64
+ Note that shell quoting or escaping may be required for method names
65
+ containing punctuation:
66
+ .Bd -literal -offset indent
67
+ ri 'Array.[]'
68
+ ri compact\e!
69
+ .Ed
70
+ .Pp
71
+ To see the default directories
72
+ .Nm
73
+ will search, run:
74
+ .Bd -literal -offset indent
75
+ ri --list-doc-dirs
76
+ .Ed
77
+ .Pp
78
+ Specifying the
79
+ .Fl -system , Fl -site , Fl -home , Fl -gems ,
80
+ or
81
+ .Fl -doc-dir
82
+ options will limit
83
+ .Nm
84
+ to searching only the specified directories.
85
+ .Pp
86
+ .Nm
87
+ options may be set in the
88
+ .Ev RI
89
+ environment variable.
90
+ .Pp
91
+ The
92
+ .Nm
93
+ pager can be set with the
94
+ .Ev RI_PAGER
95
+ environment variable or the
96
+ .Ev PAGER
97
+ environment variable.
98
+ .Pp
99
+ .Sh OPTIONS
100
+ .Bl -tag -width "1234567890123" -compact
101
+ .Pp
102
+ .It Fl i
103
+ .It Fl - Ns Oo Cm no- Oc Ns Cm interactive
104
+ In interactive mode you can repeatedly
105
+ look up methods with autocomplete.
106
+ .Pp
107
+ .It Fl a
108
+ .It Fl - Ns Oo Cm no- Oc Ns Cm all
109
+ Show all documentation for a class or module.
110
+ .Pp
111
+ .It Fl l
112
+ .It Fl - Ns Oo Cm no- Oc Ns Cm list
113
+ List classes
114
+ .Nm
115
+ knows about.
116
+ .Pp
117
+ .It Fl - Ns Oo Cm no- Oc Ns Cm pager
118
+ Send output to a pager,
119
+ rather than directly to stdout.
120
+ .Pp
121
+ .It Fl T
122
+ Synonym for
123
+ .Fl -no-pager .
124
+ .Pp
125
+ .It Fl w Ar WIDTH
126
+ .It Fl -width Ns = Ns Ar WIDTH
127
+ Set the width of the output.
128
+ .Pp
129
+ .It Fl -server Ns Oo = Ns Ar PORT Oc
130
+ Run RDoc server on the given port.
131
+ The default port is\~8214.
132
+ .Pp
133
+ .It Fl f Ar FORMAT
134
+ .It Fl -format Ns = Ns Ar FORMAT
135
+ Use the selected formatter.
136
+ The default formatter is
137
+ .Li bs
138
+ for paged output and
139
+ .Li ansi
140
+ otherwise.
141
+ Valid formatters are:
142
+ .Li ansi , Li bs , Li markdown , Li rdoc .
143
+ .Pp
144
+ .It Fl h
145
+ .It Fl -help
146
+ Show help and exit.
147
+ .Pp
148
+ .It Fl v
149
+ .It Fl -version
150
+ Output version information and exit.
151
+ .El
152
+ .Pp
153
+ Data source options:
154
+ .Bl -tag -width "1234567890123" -compact
155
+ .Pp
156
+ .It Fl - Ns Oo Cm no- Oc Ns Cm list-doc-dirs
157
+ List the directories from which
158
+ .Nm
159
+ will source documentation on stdout and exit.
160
+ .Pp
161
+ .It Fl d Ar DIRNAME
162
+ .It Fl -doc-dir Ns = Ns Ar DIRNAME
163
+ List of directories from which to source
164
+ documentation in addition to the standard
165
+ directories. May be repeated.
166
+ .Pp
167
+ .It Fl -no-standard-docs
168
+ Do not include documentation from the Ruby standard library,
169
+ .Pa site_lib ,
170
+ installed gems, or
171
+ .Pa ~/.rdoc .
172
+ Use with
173
+ .Fl -doc-dir .
174
+ .Pp
175
+ .It Fl - Ns Oo Cm no- Oc Ns Cm system
176
+ Include documentation from Ruby's standard library. Defaults to true.
177
+ .Pp
178
+ .It Fl - Ns Oo Cm no- Oc Ns Cm site
179
+ Include documentation from libraries installed in
180
+ .Pa site_lib .
181
+ Defaults to true.
182
+ .Pp
183
+ .It Fl - Ns Oo Cm no- Oc Ns Cm gems
184
+ Include documentation from RubyGems. Defaults to true.
185
+ .Pp
186
+ .It Fl - Ns Oo Cm no- Oc Ns Cm home
187
+ Include documentation stored in
188
+ .Pa ~/.rdoc .
189
+ Defaults to true.
190
+ .El
191
+ .Pp
192
+ Debug options:
193
+ .Bl -tag -width "1234567890123" -compact
194
+ .Pp
195
+ .It Fl - Ns Oo Cm no- Oc Ns Cm profile
196
+ Run with the Ruby profiler.
197
+ .Pp
198
+ .It Fl -dump Ns = Ns Ar CACHE
199
+ Dump data from an ri cache or data file.
200
+ .El
201
+ .Pp
202
+ .Sh ENVIRONMENT
203
+ .Bl -tag -width "USERPROFILE" -compact
204
+ .Pp
205
+ .It Ev RI
206
+ Options to prepend to those specified on the command-line.
207
+ .Pp
208
+ .It Ev RI_PAGER
209
+ .It Ev PAGER
210
+ Pager program to use for displaying.
211
+ .Pp
212
+ .It Ev HOME
213
+ .It Ev USERPROFILE
214
+ .It Ev HOMEPATH
215
+ Path to the user's home directory.
216
+ .El
217
+ .Pp
218
+ .Sh FILES
219
+ .Bl -tag -width "USERPROFILE" -compact
220
+ .Pp
221
+ .It Pa ~/.rdoc
222
+ Path for ri data in the user's home directory.
223
+ .Pp
224
+ .El
225
+ .Pp
226
+ .Sh SEE ALSO
227
+ .Xr ruby 1 ,
228
+ .Xr rdoc 1 ,
229
+ .Xr gem 1
230
+ .Pp
231
+ .Sh REPORTING BUGS
232
+ .Bl -bullet
233
+ .It
234
+ Security vulnerabilities should be reported via an email to
235
+ .Mt security@ruby-lang.org .
236
+ Reported problems will be published after being fixed.
237
+ .Pp
238
+ .It
239
+ Other bugs and feature requests can be reported via the
240
+ Ruby Issue Tracking System
241
+ .Pq Lk https://bugs.ruby-lang.org/ .
242
+ Do not report security vulnerabilities
243
+ via this system because it publishes the vulnerabilities immediately.
244
+ .El
245
+ .Sh AUTHORS
246
+ Written by
247
+ .An Dave Thomas Aq dave@pragmaticprogrammer.com .