rdoc 5.0.0 → 6.3.1

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 (158) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +4 -4
  3. data/Gemfile +9 -0
  4. data/History.rdoc +12 -2
  5. data/README.rdoc +5 -6
  6. data/Rakefile +35 -65
  7. data/lib/rdoc/alias.rb +1 -1
  8. data/lib/rdoc/anon_class.rb +1 -1
  9. data/lib/rdoc/any_method.rb +59 -15
  10. data/lib/rdoc/attr.rb +1 -1
  11. data/lib/rdoc/class_module.rb +5 -3
  12. data/lib/rdoc/code_object.rb +2 -9
  13. data/lib/rdoc/code_objects.rb +1 -1
  14. data/lib/rdoc/comment.rb +32 -11
  15. data/lib/rdoc/constant.rb +3 -3
  16. data/lib/rdoc/context/section.rb +1 -14
  17. data/lib/rdoc/context.rb +74 -21
  18. data/lib/rdoc/cross_reference.rb +33 -15
  19. data/lib/rdoc/encoding.rb +58 -30
  20. data/lib/rdoc/erb_partial.rb +2 -2
  21. data/lib/rdoc/erbio.rb +8 -4
  22. data/lib/rdoc/extend.rb +1 -1
  23. data/lib/rdoc/generator/darkfish.rb +60 -29
  24. data/lib/rdoc/generator/json_index.rb +7 -4
  25. data/lib/rdoc/generator/markup.rb +3 -13
  26. data/lib/rdoc/generator/pot/message_extractor.rb +1 -1
  27. data/lib/rdoc/generator/pot/po.rb +3 -3
  28. data/lib/rdoc/generator/pot/po_entry.rb +11 -11
  29. data/lib/rdoc/generator/pot.rb +4 -4
  30. data/lib/rdoc/generator/ri.rb +1 -1
  31. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +2 -2
  32. data/lib/rdoc/generator/template/darkfish/_head.rhtml +9 -7
  33. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +2 -2
  34. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +2 -2
  35. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
  36. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +2 -2
  37. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
  38. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
  39. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +5 -5
  40. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +5 -5
  41. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +5 -5
  42. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
  43. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +4 -4
  44. data/lib/rdoc/generator/template/darkfish/class.rhtml +45 -47
  45. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +55 -6
  46. data/lib/rdoc/generator/template/darkfish/index.rhtml +3 -4
  47. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +22 -99
  48. data/lib/rdoc/generator/template/darkfish/js/search.js +32 -31
  49. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +15 -16
  50. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +16 -16
  51. data/lib/rdoc/generator/template/json_index/js/navigation.js +4 -41
  52. data/lib/rdoc/generator/template/json_index/js/searcher.js +6 -6
  53. data/lib/rdoc/generator.rb +1 -1
  54. data/lib/rdoc/ghost_method.rb +1 -1
  55. data/lib/rdoc/i18n/locale.rb +2 -2
  56. data/lib/rdoc/i18n/text.rb +5 -5
  57. data/lib/rdoc/i18n.rb +3 -3
  58. data/lib/rdoc/include.rb +1 -1
  59. data/lib/rdoc/known_classes.rb +1 -1
  60. data/lib/rdoc/markdown/entities.rb +1 -1
  61. data/lib/rdoc/markdown/literals.kpeg +1 -0
  62. data/lib/rdoc/markdown/literals.rb +19 -7
  63. data/lib/rdoc/markdown.kpeg +92 -44
  64. data/lib/rdoc/markdown.rb +1171 -610
  65. data/lib/rdoc/markup/attr_changer.rb +1 -1
  66. data/lib/rdoc/markup/attr_span.rb +9 -3
  67. data/lib/rdoc/markup/attribute_manager.rb +115 -50
  68. data/lib/rdoc/markup/attributes.rb +7 -7
  69. data/lib/rdoc/markup/blank_line.rb +1 -1
  70. data/lib/rdoc/markup/block_quote.rb +1 -1
  71. data/lib/rdoc/markup/document.rb +1 -1
  72. data/lib/rdoc/markup/formatter.rb +25 -24
  73. data/lib/rdoc/markup/hard_break.rb +1 -1
  74. data/lib/rdoc/markup/heading.rb +4 -4
  75. data/lib/rdoc/markup/include.rb +1 -1
  76. data/lib/rdoc/markup/indented_paragraph.rb +1 -1
  77. data/lib/rdoc/markup/list.rb +1 -1
  78. data/lib/rdoc/markup/list_item.rb +1 -1
  79. data/lib/rdoc/markup/paragraph.rb +1 -1
  80. data/lib/rdoc/markup/parser.rb +79 -47
  81. data/lib/rdoc/markup/pre_process.rb +11 -6
  82. data/lib/rdoc/markup/raw.rb +1 -1
  83. data/lib/rdoc/markup/regexp_handling.rb +41 -0
  84. data/lib/rdoc/markup/rule.rb +1 -1
  85. data/lib/rdoc/markup/to_ansi.rb +1 -1
  86. data/lib/rdoc/markup/to_bs.rb +4 -4
  87. data/lib/rdoc/markup/to_html.rb +71 -26
  88. data/lib/rdoc/markup/to_html_crossref.rb +41 -26
  89. data/lib/rdoc/markup/to_html_snippet.rb +10 -10
  90. data/lib/rdoc/markup/to_joined_paragraph.rb +7 -32
  91. data/lib/rdoc/markup/to_label.rb +10 -10
  92. data/lib/rdoc/markup/to_markdown.rb +9 -9
  93. data/lib/rdoc/markup/to_rdoc.rb +35 -7
  94. data/lib/rdoc/markup/to_table_of_contents.rb +2 -1
  95. data/lib/rdoc/markup/to_test.rb +1 -1
  96. data/lib/rdoc/markup/to_tt_only.rb +3 -3
  97. data/lib/rdoc/markup/verbatim.rb +1 -1
  98. data/lib/rdoc/markup.rb +14 -17
  99. data/lib/rdoc/meta_method.rb +1 -1
  100. data/lib/rdoc/method_attr.rb +2 -2
  101. data/lib/rdoc/mixin.rb +1 -1
  102. data/lib/rdoc/normal_class.rb +3 -3
  103. data/lib/rdoc/normal_module.rb +1 -1
  104. data/lib/rdoc/options.rb +79 -21
  105. data/lib/rdoc/parser/c.rb +147 -194
  106. data/lib/rdoc/parser/changelog.rb +150 -19
  107. data/lib/rdoc/parser/markdown.rb +1 -1
  108. data/lib/rdoc/parser/rd.rb +1 -1
  109. data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
  110. data/lib/rdoc/parser/ruby.rb +634 -465
  111. data/lib/rdoc/parser/ruby_tools.rb +33 -34
  112. data/lib/rdoc/parser/simple.rb +3 -3
  113. data/lib/rdoc/parser/text.rb +1 -1
  114. data/lib/rdoc/parser.rb +12 -35
  115. data/lib/rdoc/rd/block_parser.rb +109 -108
  116. data/lib/rdoc/rd/block_parser.ry +3 -3
  117. data/lib/rdoc/rd/inline.rb +5 -5
  118. data/lib/rdoc/rd/inline_parser.rb +186 -185
  119. data/lib/rdoc/rd/inline_parser.ry +1 -1
  120. data/lib/rdoc/rd.rb +1 -1
  121. data/lib/rdoc/rdoc.rb +54 -41
  122. data/lib/rdoc/require.rb +1 -1
  123. data/lib/rdoc/ri/driver.rb +132 -42
  124. data/lib/rdoc/ri/formatter.rb +1 -1
  125. data/lib/rdoc/ri/paths.rb +4 -18
  126. data/lib/rdoc/ri/store.rb +1 -1
  127. data/lib/rdoc/ri/task.rb +2 -2
  128. data/lib/rdoc/ri.rb +1 -1
  129. data/lib/rdoc/rubygems_hook.rb +3 -3
  130. data/lib/rdoc/servlet.rb +21 -12
  131. data/lib/rdoc/single_class.rb +1 -1
  132. data/lib/rdoc/stats/normal.rb +24 -18
  133. data/lib/rdoc/stats/quiet.rb +1 -1
  134. data/lib/rdoc/stats/verbose.rb +1 -1
  135. data/lib/rdoc/stats.rb +1 -1
  136. data/lib/rdoc/store.rb +38 -27
  137. data/lib/rdoc/task.rb +2 -2
  138. data/lib/rdoc/text.rb +16 -21
  139. data/lib/rdoc/token_stream.rb +56 -33
  140. data/lib/rdoc/tom_doc.rb +17 -12
  141. data/lib/rdoc/top_level.rb +9 -3
  142. data/lib/rdoc/version.rb +8 -0
  143. data/lib/rdoc.rb +24 -10
  144. data/man/ri.1 +247 -0
  145. data/rdoc.gemspec +206 -15
  146. metadata +15 -64
  147. data/.document +0 -5
  148. data/.gitignore +0 -13
  149. data/.travis.yml +0 -23
  150. data/lib/gauntlet_rdoc.rb +0 -82
  151. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
  152. data/lib/rdoc/markup/formatter_test_case.rb +0 -764
  153. data/lib/rdoc/markup/inline.rb +0 -2
  154. data/lib/rdoc/markup/special.rb +0 -41
  155. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -115
  156. data/lib/rdoc/ruby_lex.rb +0 -1367
  157. data/lib/rdoc/ruby_token.rb +0 -461
  158. data/lib/rdoc/test_case.rb +0 -204
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # For RubyGems backwards compatibility
4
4
 
data/lib/rdoc/ri/paths.rb CHANGED
@@ -1,5 +1,5 @@
1
- # frozen_string_literal: false
2
- require 'rdoc/ri'
1
+ # frozen_string_literal: true
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
  ##
data/lib/rdoc/ri/store.rb CHANGED
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  module RDoc::RI
3
3
 
4
4
  Store = RDoc::Store # :nodoc:
data/lib/rdoc/ri/task.rb CHANGED
@@ -1,10 +1,10 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  begin
3
3
  gem 'rdoc'
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.
data/lib/rdoc/ri.rb CHANGED
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  require 'rdoc'
3
3
 
4
4
  ##
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  require 'rubygems/user_interaction'
3
3
  require 'fileutils'
4
4
  require 'rdoc'
@@ -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
data/lib/rdoc/servlet.rb CHANGED
@@ -1,8 +1,14 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  require 'rdoc'
3
+ require 'erb'
3
4
  require 'time'
4
5
  require 'json'
5
- 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
6
12
 
7
13
  ##
8
14
  # This is a WEBrick servlet that allows you to browse ri documentation.
@@ -101,9 +107,9 @@ class RDoc::Servlet < WEBrick::HTTPServlet::AbstractServlet
101
107
  res.body = File.read asset_path
102
108
 
103
109
  res.content_type = case req.path
104
- when /css$/ then 'text/css'
105
- when /js$/ then 'application/javascript'
106
- else 'application/octet-stream'
110
+ when /\.css\z/ then 'text/css'
111
+ when /\.js\z/ then 'application/javascript'
112
+ else 'application/octet-stream'
107
113
  end
108
114
  end
109
115
 
@@ -111,7 +117,7 @@ class RDoc::Servlet < WEBrick::HTTPServlet::AbstractServlet
111
117
  # GET request entry point. Fills in +res+ for the path, etc. in +req+.
112
118
 
113
119
  def do_GET req, res
114
- req.path.sub!(/^#{Regexp.escape @mount_path}/o, '') if @mount_path
120
+ req.path.sub!(/\A#{Regexp.escape @mount_path}/, '') if @mount_path
115
121
 
116
122
  case req.path
117
123
  when '/' then
@@ -144,11 +150,14 @@ class RDoc::Servlet < WEBrick::HTTPServlet::AbstractServlet
144
150
  # +generator+ is used to create the page.
145
151
 
146
152
  def documentation_page store, generator, path, req, res
147
- name = path.sub(/.html$/, '').gsub '/', '::'
153
+ text_name = path.chomp '.html'
154
+ name = text_name.gsub '/', '::'
148
155
 
149
156
  if klass = store.find_class_or_module(name) then
150
157
  res.body = generator.generate_class klass
151
- elsif page = store.find_text_page(name.sub(/_([^_]*)$/, '.\1')) then
158
+ elsif page = store.find_text_page(name.sub(/_([^_]*)\z/, '.\1')) then
159
+ res.body = generator.generate_page page
160
+ elsif page = store.find_text_page(text_name.sub(/_([^_]*)\z/, '.\1')) then
152
161
  res.body = generator.generate_page page
153
162
  else
154
163
  not_found generator, req, res
@@ -217,7 +226,7 @@ exception:
217
226
  <pre>#{ERB::Util.html_escape exception.message}</pre>
218
227
 
219
228
  <p>Please report this to the
220
- <a href="https://github.com/rdoc/rdoc/issues">RDoc issues tracker</a>. Please
229
+ <a href="https://github.com/ruby/rdoc/issues">RDoc issues tracker</a>. Please
221
230
  include the RDoc version, the URI above and exception class, message and
222
231
  backtrace. If you're viewing a gem's documentation, include the gem name and
223
232
  version. If you're viewing Ruby's documentation, include the version of ruby.
@@ -415,7 +424,7 @@ version. If you're viewing Ruby's documentation, include the version of ruby.
415
424
  RDoc::Store.new RDoc::RI::Paths.system_dir, :system
416
425
  when 'site' then
417
426
  RDoc::Store.new RDoc::RI::Paths.site_dir, :site
418
- when /^extra-(\d+)$/ then
427
+ when /\Aextra-(\d+)\z/ then
419
428
  index = $1.to_i - 1
420
429
  ri_dir = installed_docs[index][4]
421
430
  RDoc::Store.new ri_dir, :extra
@@ -427,14 +436,14 @@ version. If you're viewing Ruby's documentation, include the version of ruby.
427
436
  end
428
437
 
429
438
  raise WEBrick::HTTPStatus::NotFound,
430
- "Could not find gem \"#{source_name}\". Are you sure you installed it?" unless ri_dir
439
+ "Could not find gem \"#{ERB::Util.html_escape(source_name)}\". Are you sure you installed it?" unless ri_dir
431
440
 
432
441
  store = RDoc::Store.new ri_dir, type
433
442
 
434
443
  return store if File.exist? store.cache_path
435
444
 
436
445
  raise WEBrick::HTTPStatus::NotFound,
437
- "Could not find documentation for \"#{source_name}\". Please run `gem rdoc --ri gem_name`"
446
+ "Could not find documentation for \"#{ERB::Util.html_escape(source_name)}\". Please run `gem rdoc --ri gem_name`"
438
447
 
439
448
  end
440
449
  end
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # A singleton class
4
4
 
@@ -1,5 +1,10 @@
1
- # frozen_string_literal: false
2
- require 'io/console/size'
1
+ # frozen_string_literal: true
2
+ begin
3
+ require 'io/console/size'
4
+ rescue LoadError
5
+ # for JRuby
6
+ require 'io/console'
7
+ end
3
8
 
4
9
  ##
5
10
  # Stats printer that prints just the files being documented with a progress
@@ -21,27 +26,28 @@ class RDoc::Stats::Normal < RDoc::Stats::Quiet
21
26
  files_so_far,
22
27
  @num_files)
23
28
 
24
- # Print a progress bar, but make sure it fits on a single line. Filename
25
- # will be truncated if necessary.
26
- terminal_width = IO.console_size[1].to_i.nonzero? || 80
27
- max_filename_size = terminal_width - progress_bar.size
28
-
29
- if filename.size > max_filename_size then
30
- # Turn "some_long_filename.rb" to "...ong_filename.rb"
31
- filename = filename[(filename.size - max_filename_size) .. -1]
32
- filename[0..2] = "..."
33
- end
34
-
35
- line = "#{progress_bar}#{filename}"
36
29
  if $stdout.tty?
30
+ # Print a progress bar, but make sure it fits on a single line. Filename
31
+ # will be truncated if necessary.
32
+ size = IO.respond_to?(:console_size) ? IO.console_size : IO.console.winsize
33
+ terminal_width = size[1].to_i.nonzero? || 80
34
+ max_filename_size = (terminal_width - progress_bar.size) - 1
35
+
36
+ if filename.size > max_filename_size then
37
+ # Turn "some_long_filename.rb" to "...ong_filename.rb"
38
+ filename = filename[(filename.size - max_filename_size) .. -1]
39
+ filename[0..2] = "..."
40
+ end
41
+
37
42
  # Clean the line with whitespaces so that leftover output from the
38
43
  # previous line doesn't show up.
39
- $stdout.print("\r" << (" " * @last_width) << ("\b" * @last_width) << "\r") if @last_width && @last_width > 0
40
- @last_width = line.size
41
- $stdout.print("#{line}\r")
44
+ $stdout.print("\r\e[K") if @last_width && @last_width > 0
45
+ @last_width = progress_bar.size + filename.size
46
+ term = "\r"
42
47
  else
43
- $stdout.puts(line)
48
+ term = "\n"
44
49
  end
50
+ $stdout.print(progress_bar, filename, term)
45
51
  $stdout.flush
46
52
  end
47
53
 
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # Stats printer that prints nothing
4
4
 
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # Stats printer that prints everything documented, including the documented
4
4
  # status
data/lib/rdoc/stats.rb CHANGED
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  ##
3
3
  # RDoc statistics collector which prints a summary and report of a project's
4
4
  # documentation totals.
data/lib/rdoc/store.rb CHANGED
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: false
1
+ # frozen_string_literal: true
2
2
  require 'fileutils'
3
3
 
4
4
  ##
@@ -116,6 +116,11 @@ class RDoc::Store
116
116
 
117
117
  attr_accessor :encoding
118
118
 
119
+ ##
120
+ # The lazy constants alias will be discovered in passing
121
+
122
+ attr_reader :unmatched_constant_alias
123
+
119
124
  ##
120
125
  # Creates a new Store of +type+ that will load or save to +path+
121
126
 
@@ -143,6 +148,7 @@ class RDoc::Store
143
148
  @classes_hash = {}
144
149
  @modules_hash = {}
145
150
  @files_hash = {}
151
+ @text_files_hash = {}
146
152
 
147
153
  @c_enclosure_classes = {}
148
154
  @c_enclosure_names = {}
@@ -152,6 +158,8 @@ class RDoc::Store
152
158
 
153
159
  @unique_classes = nil
154
160
  @unique_modules = nil
161
+
162
+ @unmatched_constant_alias = {}
155
163
  end
156
164
 
157
165
  ##
@@ -177,16 +185,24 @@ class RDoc::Store
177
185
  # Adds the file with +name+ as an RDoc::TopLevel to the store. Returns the
178
186
  # created RDoc::TopLevel.
179
187
 
180
- def add_file absolute_name, relative_name = absolute_name
188
+ def add_file absolute_name, relative_name: absolute_name, parser: nil
181
189
  unless top_level = @files_hash[relative_name] then
182
190
  top_level = RDoc::TopLevel.new absolute_name, relative_name
191
+ top_level.parser = parser if parser
183
192
  top_level.store = self
184
193
  @files_hash[relative_name] = top_level
194
+ @text_files_hash[relative_name] = top_level if top_level.text?
185
195
  end
186
196
 
187
197
  top_level
188
198
  end
189
199
 
200
+ def update_parser_of_file(absolute_name, parser)
201
+ if top_level = @files_hash[absolute_name] then
202
+ @text_files_hash[absolute_name] = top_level if top_level.text?
203
+ end
204
+ end
205
+
190
206
  ##
191
207
  # Returns all classes discovered by RDoc
192
208
 
@@ -421,8 +437,8 @@ class RDoc::Store
421
437
  # +file_name+
422
438
 
423
439
  def find_text_page file_name
424
- @files_hash.each_value.find do |file|
425
- file.text? and file.full_name == file_name
440
+ @text_files_hash.each_value.find do |file|
441
+ file.full_name == file_name
426
442
  end
427
443
  end
428
444
 
@@ -466,7 +482,7 @@ class RDoc::Store
466
482
  when :gem then
467
483
  parent = File.expand_path '..', @path
468
484
  "gem #{File.basename parent}"
469
- when :home then '~/.rdoc'
485
+ when :home then RDoc.home
470
486
  when :site then 'ruby site'
471
487
  when :system then 'ruby core'
472
488
  else @path
@@ -530,6 +546,7 @@ class RDoc::Store
530
546
  @cache[:pages].each do |page_name|
531
547
  page = load_page page_name
532
548
  @files_hash[page_name] = page
549
+ @text_files_hash[page_name] = page if page.text?
533
550
  end
534
551
  end
535
552
 
@@ -539,7 +556,7 @@ class RDoc::Store
539
556
  def load_cache
540
557
  #orig_enc = @encoding
541
558
 
542
- open cache_path, 'rb' do |io|
559
+ File.open cache_path, 'rb' do |io|
543
560
  @cache = Marshal.load io.read
544
561
  end
545
562
 
@@ -585,6 +602,8 @@ class RDoc::Store
585
602
  case obj
586
603
  when RDoc::NormalClass then
587
604
  @classes_hash[klass_name] = obj
605
+ when RDoc::SingleClass then
606
+ @classes_hash[klass_name] = obj
588
607
  when RDoc::NormalModule then
589
608
  @modules_hash[klass_name] = obj
590
609
  end
@@ -596,7 +615,7 @@ class RDoc::Store
596
615
  def load_class_data klass_name
597
616
  file = class_file klass_name
598
617
 
599
- open file, 'rb' do |io|
618
+ File.open file, 'rb' do |io|
600
619
  Marshal.load io.read
601
620
  end
602
621
  rescue Errno::ENOENT => e
@@ -611,7 +630,7 @@ class RDoc::Store
611
630
  def load_method klass_name, method_name
612
631
  file = method_file klass_name, method_name
613
632
 
614
- open file, 'rb' do |io|
633
+ File.open file, 'rb' do |io|
615
634
  obj = Marshal.load io.read
616
635
  obj.store = self
617
636
  obj.parent =
@@ -631,7 +650,7 @@ class RDoc::Store
631
650
  def load_page page_name
632
651
  file = page_file page_name
633
652
 
634
- open file, 'rb' do |io|
653
+ File.open file, 'rb' do |io|
635
654
  obj = Marshal.load io.read
636
655
  obj.store = self
637
656
  obj
@@ -703,8 +722,8 @@ class RDoc::Store
703
722
  # Returns the RDoc::TopLevel that is a text file and has the given +name+
704
723
 
705
724
  def page name
706
- @files_hash.each_value.find do |file|
707
- file.text? and file.page_name == name
725
+ @text_files_hash.each_value.find do |file|
726
+ file.page_name == name or file.base_name == name
708
727
  end
709
728
  end
710
729
 
@@ -776,10 +795,8 @@ class RDoc::Store
776
795
 
777
796
  return if @dry_run
778
797
 
779
- marshal = Marshal.dump @cache
780
-
781
- open cache_path, 'wb' do |io|
782
- io.write marshal
798
+ File.open cache_path, 'wb' do |io|
799
+ Marshal.dump @cache, io
783
800
  end
784
801
  end
785
802
 
@@ -852,10 +869,8 @@ class RDoc::Store
852
869
 
853
870
  FileUtils.rm_f to_delete
854
871
 
855
- marshal = Marshal.dump klass
856
-
857
- open path, 'wb' do |io|
858
- io.write marshal
872
+ File.open path, 'wb' do |io|
873
+ Marshal.dump klass, io
859
874
  end
860
875
  end
861
876
 
@@ -877,10 +892,8 @@ class RDoc::Store
877
892
 
878
893
  return if @dry_run
879
894
 
880
- marshal = Marshal.dump method
881
-
882
- open method_file(full_name, method.full_name), 'wb' do |io|
883
- io.write marshal
895
+ File.open method_file(full_name, method.full_name), 'wb' do |io|
896
+ Marshal.dump method, io
884
897
  end
885
898
  end
886
899
 
@@ -899,10 +912,8 @@ class RDoc::Store
899
912
 
900
913
  return if @dry_run
901
914
 
902
- marshal = Marshal.dump page
903
-
904
- open path, 'wb' do |io|
905
- io.write marshal
915
+ File.open path, 'wb' do |io|
916
+ Marshal.dump page, io
906
917
  end
907
918
  end
908
919