rdoc 3.1 → 6.3.3

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 (247) hide show
  1. checksums.yaml +7 -0
  2. data/CONTRIBUTING.rdoc +220 -0
  3. data/CVE-2013-0256.rdoc +49 -0
  4. data/ExampleMarkdown.md +37 -0
  5. data/ExampleRDoc.rdoc +208 -0
  6. data/Gemfile +12 -0
  7. data/History.rdoc +1666 -0
  8. data/LEGAL.rdoc +50 -0
  9. data/LICENSE.rdoc +57 -0
  10. data/README.rdoc +129 -0
  11. data/RI.rdoc +57 -0
  12. data/Rakefile +84 -81
  13. data/TODO.rdoc +59 -0
  14. data/bin/console +7 -0
  15. data/bin/setup +6 -0
  16. data/{bin → exe}/rdoc +11 -2
  17. data/exe/ri +12 -0
  18. data/lib/rdoc/alias.rb +1 -2
  19. data/lib/rdoc/anon_class.rb +3 -2
  20. data/lib/rdoc/any_method.rb +234 -40
  21. data/lib/rdoc/attr.rb +79 -11
  22. data/lib/rdoc/class_module.rb +443 -71
  23. data/lib/rdoc/code_object.rb +216 -20
  24. data/lib/rdoc/code_objects.rb +4 -21
  25. data/lib/rdoc/comment.rb +250 -0
  26. data/lib/rdoc/constant.rb +110 -9
  27. data/lib/rdoc/context/section.rb +232 -0
  28. data/lib/rdoc/context.rb +392 -172
  29. data/lib/rdoc/cross_reference.rb +202 -0
  30. data/lib/rdoc/encoding.rb +83 -28
  31. data/lib/rdoc/erb_partial.rb +19 -0
  32. data/lib/rdoc/erbio.rb +8 -3
  33. data/lib/rdoc/extend.rb +10 -0
  34. data/lib/rdoc/generator/darkfish.rb +507 -84
  35. data/lib/rdoc/generator/json_index.rb +300 -0
  36. data/lib/rdoc/generator/markup.rb +27 -74
  37. data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
  38. data/lib/rdoc/generator/pot/po.rb +84 -0
  39. data/lib/rdoc/generator/pot/po_entry.rb +141 -0
  40. data/lib/rdoc/generator/pot.rb +98 -0
  41. data/lib/rdoc/generator/ri.rb +8 -62
  42. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
  43. data/lib/rdoc/generator/template/darkfish/_head.rhtml +22 -0
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +19 -0
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +9 -0
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +15 -0
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +9 -0
  48. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +15 -0
  49. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +15 -0
  50. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +12 -0
  51. data/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
  52. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +12 -0
  53. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +11 -0
  54. data/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +14 -0
  55. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
  56. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +18 -0
  57. data/lib/rdoc/generator/template/darkfish/class.rhtml +172 -0
  58. data/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
  59. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +639 -0
  60. data/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
  61. data/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
  62. data/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
  63. data/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
  64. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  65. data/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  66. data/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
  67. data/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
  68. data/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
  69. data/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
  70. data/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
  71. data/lib/rdoc/generator/template/darkfish/index.rhtml +18 -60
  72. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +51 -83
  73. data/lib/rdoc/generator/template/darkfish/js/search.js +110 -0
  74. data/lib/rdoc/generator/template/darkfish/page.rhtml +18 -0
  75. data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +18 -0
  76. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +62 -0
  77. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +58 -0
  78. data/lib/rdoc/generator/template/json_index/.document +1 -0
  79. data/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
  80. data/lib/rdoc/generator/template/json_index/js/searcher.js +229 -0
  81. data/lib/rdoc/generator.rb +24 -13
  82. data/lib/rdoc/ghost_method.rb +1 -2
  83. data/lib/rdoc/i18n/locale.rb +102 -0
  84. data/lib/rdoc/i18n/text.rb +126 -0
  85. data/lib/rdoc/i18n.rb +10 -0
  86. data/lib/rdoc/include.rb +5 -95
  87. data/lib/rdoc/known_classes.rb +5 -2
  88. data/lib/rdoc/markdown/entities.rb +2132 -0
  89. data/lib/rdoc/markdown/literals.kpeg +23 -0
  90. data/lib/rdoc/markdown/literals.rb +416 -0
  91. data/lib/rdoc/markdown.kpeg +1237 -0
  92. data/lib/rdoc/markdown.rb +16684 -0
  93. data/lib/rdoc/markup/attr_changer.rb +23 -0
  94. data/lib/rdoc/markup/attr_span.rb +36 -0
  95. data/lib/rdoc/markup/attribute_manager.rb +135 -62
  96. data/lib/rdoc/markup/attributes.rb +71 -0
  97. data/lib/rdoc/markup/blank_line.rb +1 -0
  98. data/lib/rdoc/markup/block_quote.rb +15 -0
  99. data/lib/rdoc/markup/document.rb +96 -9
  100. data/lib/rdoc/markup/formatter.rb +138 -25
  101. data/lib/rdoc/markup/hard_break.rb +32 -0
  102. data/lib/rdoc/markup/heading.rb +61 -2
  103. data/lib/rdoc/markup/include.rb +43 -0
  104. data/lib/rdoc/markup/indented_paragraph.rb +48 -0
  105. data/lib/rdoc/markup/list.rb +25 -4
  106. data/lib/rdoc/markup/list_item.rb +18 -4
  107. data/lib/rdoc/markup/paragraph.rb +15 -0
  108. data/lib/rdoc/markup/parser.rb +180 -88
  109. data/lib/rdoc/markup/pre_process.rb +183 -38
  110. data/lib/rdoc/markup/raw.rb +6 -5
  111. data/lib/rdoc/markup/regexp_handling.rb +41 -0
  112. data/lib/rdoc/markup/rule.rb +1 -0
  113. data/lib/rdoc/markup/table.rb +47 -0
  114. data/lib/rdoc/markup/to_ansi.rb +17 -7
  115. data/lib/rdoc/markup/to_bs.rb +5 -8
  116. data/lib/rdoc/markup/to_html.rb +238 -137
  117. data/lib/rdoc/markup/to_html_crossref.rb +125 -152
  118. data/lib/rdoc/markup/to_html_snippet.rb +285 -0
  119. data/lib/rdoc/markup/to_joined_paragraph.rb +47 -0
  120. data/lib/rdoc/markup/to_label.rb +75 -0
  121. data/lib/rdoc/markup/to_markdown.rb +192 -0
  122. data/lib/rdoc/markup/to_rdoc.rb +85 -15
  123. data/lib/rdoc/markup/to_table_of_contents.rb +89 -0
  124. data/lib/rdoc/markup/to_test.rb +2 -4
  125. data/lib/rdoc/markup/to_tt_only.rb +121 -0
  126. data/lib/rdoc/markup/verbatim.rb +39 -0
  127. data/lib/rdoc/markup.rb +388 -110
  128. data/lib/rdoc/meta_method.rb +1 -2
  129. data/lib/rdoc/method_attr.rb +87 -21
  130. data/lib/rdoc/mixin.rb +121 -0
  131. data/lib/rdoc/normal_class.rb +39 -10
  132. data/lib/rdoc/normal_module.rb +22 -7
  133. data/lib/rdoc/options.rb +613 -73
  134. data/lib/rdoc/parser/c.rb +621 -287
  135. data/lib/rdoc/parser/changelog.rb +335 -0
  136. data/lib/rdoc/parser/markdown.rb +24 -0
  137. data/lib/rdoc/parser/rd.rb +23 -0
  138. data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
  139. data/lib/rdoc/parser/ruby.rb +1368 -762
  140. data/lib/rdoc/parser/ruby_tools.rb +42 -35
  141. data/lib/rdoc/parser/simple.rb +23 -11
  142. data/lib/rdoc/parser/text.rb +12 -0
  143. data/lib/rdoc/parser.rb +162 -89
  144. data/lib/rdoc/rd/block_parser.rb +1056 -0
  145. data/lib/rdoc/rd/block_parser.ry +639 -0
  146. data/lib/rdoc/rd/inline.rb +72 -0
  147. data/lib/rdoc/rd/inline_parser.rb +1208 -0
  148. data/lib/rdoc/rd/inline_parser.ry +593 -0
  149. data/lib/rdoc/rd.rb +100 -0
  150. data/lib/rdoc/rdoc.rb +208 -115
  151. data/lib/rdoc/require.rb +1 -2
  152. data/lib/rdoc/ri/driver.rb +734 -239
  153. data/lib/rdoc/ri/formatter.rb +1 -0
  154. data/lib/rdoc/ri/paths.rb +91 -48
  155. data/lib/rdoc/ri/store.rb +3 -261
  156. data/lib/rdoc/ri/task.rb +71 -0
  157. data/lib/rdoc/ri.rb +5 -2
  158. data/lib/rdoc/rubygems_hook.rb +246 -0
  159. data/lib/rdoc/servlet.rb +451 -0
  160. data/lib/rdoc/single_class.rb +14 -2
  161. data/lib/rdoc/stats/normal.rb +19 -12
  162. data/lib/rdoc/stats/quiet.rb +1 -0
  163. data/lib/rdoc/stats/verbose.rb +1 -0
  164. data/lib/rdoc/stats.rb +262 -104
  165. data/lib/rdoc/store.rb +979 -0
  166. data/lib/rdoc/task.rb +84 -44
  167. data/lib/rdoc/text.rb +117 -72
  168. data/lib/rdoc/token_stream.rb +73 -4
  169. data/lib/rdoc/tom_doc.rb +263 -0
  170. data/lib/rdoc/top_level.rb +111 -261
  171. data/lib/rdoc/version.rb +8 -0
  172. data/lib/rdoc.rb +127 -64
  173. data/man/ri.1 +247 -0
  174. data/rdoc.gemspec +249 -0
  175. metadata +171 -291
  176. data/.autotest +0 -16
  177. data/.document +0 -5
  178. data/History.txt +0 -594
  179. data/LICENSE.txt +0 -57
  180. data/Manifest.txt +0 -158
  181. data/README.txt +0 -45
  182. data/RI.txt +0 -58
  183. data/bin/ri +0 -5
  184. data/lib/rdoc/gauntlet.rb +0 -52
  185. data/lib/rdoc/generator/template/darkfish/classpage.rhtml +0 -296
  186. data/lib/rdoc/generator/template/darkfish/filepage.rhtml +0 -124
  187. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -32
  188. data/lib/rdoc/generator/template/darkfish/js/quicksearch.js +0 -114
  189. data/lib/rdoc/generator/template/darkfish/js/thickbox-compressed.js +0 -10
  190. data/lib/rdoc/generator/template/darkfish/rdoc.css +0 -706
  191. data/lib/rdoc/markup/formatter_test_case.rb +0 -689
  192. data/lib/rdoc/markup/inline.rb +0 -137
  193. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -116
  194. data/lib/rdoc/ruby_lex.rb +0 -1291
  195. data/lib/rdoc/ruby_token.rb +0 -416
  196. data/test/README +0 -1
  197. data/test/binary.dat +0 -0
  198. data/test/hidden.zip.txt +0 -1
  199. data/test/test.ja.rdoc +0 -10
  200. data/test/test.ja.txt +0 -8
  201. data/test/test.txt +0 -1
  202. data/test/test_attribute_manager.rb +0 -120
  203. data/test/test_rdoc_alias.rb +0 -13
  204. data/test/test_rdoc_any_method.rb +0 -126
  205. data/test/test_rdoc_attr.rb +0 -61
  206. data/test/test_rdoc_class_module.rb +0 -233
  207. data/test/test_rdoc_code_object.rb +0 -165
  208. data/test/test_rdoc_constant.rb +0 -15
  209. data/test/test_rdoc_context.rb +0 -370
  210. data/test/test_rdoc_encoding.rb +0 -166
  211. data/test/test_rdoc_generator_darkfish.rb +0 -119
  212. data/test/test_rdoc_generator_ri.rb +0 -76
  213. data/test/test_rdoc_include.rb +0 -96
  214. data/test/test_rdoc_markup.rb +0 -37
  215. data/test/test_rdoc_markup_attribute_manager.rb +0 -240
  216. data/test/test_rdoc_markup_document.rb +0 -51
  217. data/test/test_rdoc_markup_paragraph.rb +0 -9
  218. data/test/test_rdoc_markup_parser.rb +0 -1395
  219. data/test/test_rdoc_markup_pre_process.rb +0 -185
  220. data/test/test_rdoc_markup_raw.rb +0 -27
  221. data/test/test_rdoc_markup_to_ansi.rb +0 -328
  222. data/test/test_rdoc_markup_to_bs.rb +0 -341
  223. data/test/test_rdoc_markup_to_html.rb +0 -335
  224. data/test/test_rdoc_markup_to_html_crossref.rb +0 -169
  225. data/test/test_rdoc_markup_to_rdoc.rb +0 -327
  226. data/test/test_rdoc_method_attr.rb +0 -122
  227. data/test/test_rdoc_normal_class.rb +0 -17
  228. data/test/test_rdoc_normal_module.rb +0 -31
  229. data/test/test_rdoc_options.rb +0 -342
  230. data/test/test_rdoc_parser.rb +0 -83
  231. data/test/test_rdoc_parser_c.rb +0 -912
  232. data/test/test_rdoc_parser_ruby.rb +0 -1754
  233. data/test/test_rdoc_parser_simple.rb +0 -99
  234. data/test/test_rdoc_rdoc.rb +0 -164
  235. data/test/test_rdoc_require.rb +0 -25
  236. data/test/test_rdoc_ri_driver.rb +0 -846
  237. data/test/test_rdoc_ri_paths.rb +0 -43
  238. data/test/test_rdoc_ri_store.rb +0 -352
  239. data/test/test_rdoc_ruby_lex.rb +0 -23
  240. data/test/test_rdoc_stats.rb +0 -38
  241. data/test/test_rdoc_task.rb +0 -92
  242. data/test/test_rdoc_text.rb +0 -251
  243. data/test/test_rdoc_top_level.rb +0 -120
  244. data/test/xref_data.rb +0 -62
  245. data/test/xref_test_case.rb +0 -61
  246. data.tar.gz.sig +0 -3
  247. metadata.gz.sig +0 -0
@@ -1,10 +1,11 @@
1
- require 'rdoc/context'
2
-
1
+ # frozen_string_literal: true
3
2
  ##
4
3
  # A TopLevel context is a representation of the contents of a single file
5
4
 
6
5
  class RDoc::TopLevel < RDoc::Context
7
6
 
7
+ MARSHAL_VERSION = 0 # :nodoc:
8
+
8
9
  ##
9
10
  # This TopLevel's File::Stat struct
10
11
 
@@ -30,275 +31,47 @@ class RDoc::TopLevel < RDoc::Context
30
31
  attr_accessor :diagram # :nodoc:
31
32
 
32
33
  ##
33
- # The parser that processed this file
34
-
35
- attr_accessor :parser
36
-
37
- ##
38
- # Returns all classes discovered by RDoc
39
-
40
- def self.all_classes
41
- @all_classes_hash.values
42
- end
43
-
44
- ##
45
- # Returns all classes and modules discovered by RDoc
46
-
47
- def self.all_classes_and_modules
48
- @all_classes_hash.values + @all_modules_hash.values
49
- end
50
-
51
- ##
52
- # Hash of all classes known to RDoc
53
-
54
- def self.all_classes_hash
55
- @all_classes_hash
56
- end
57
-
58
- ##
59
- # All TopLevels known to RDoc
60
-
61
- def self.all_files
62
- @all_files_hash.values
63
- end
64
-
65
- ##
66
- # Hash of all files known to RDoc
67
-
68
- def self.all_files_hash
69
- @all_files_hash
70
- end
71
-
72
- ##
73
- # Returns all modules discovered by RDoc
74
-
75
- def self.all_modules
76
- all_modules_hash.values
77
- end
78
-
79
- ##
80
- # Hash of all modules known to RDoc
81
-
82
- def self.all_modules_hash
83
- @all_modules_hash
84
- end
85
-
86
- ##
87
- # Prepares the RDoc code object tree for use by a generator.
88
- #
89
- # It finds unique classes/modules defined, and replaces classes/modules that
90
- # are aliases for another one by a copy with RDoc::ClassModule#is_alias_for
91
- # set.
92
- #
93
- # It updates the RDoc::ClassModule#constant_aliases attribute of "real"
94
- # classes or modules.
95
- #
96
- # It also completely removes the classes and modules that should be removed
97
- # from the documentation and the methods that have a visibility below
98
- # +min_visibility+, which is the <tt>--visibility</tt> option.
99
- #
100
- # See also RDoc::Context#remove_from_documentation?
101
-
102
- def self.complete min_visibility
103
- fix_basic_object_inheritance
104
-
105
- # cache included modules before they are removed from the documentation
106
- all_classes_and_modules.each { |cm| cm.ancestors }
107
-
108
- remove_nodoc @all_classes_hash
109
- remove_nodoc @all_modules_hash
110
-
111
- @unique_classes = find_unique @all_classes_hash
112
- @unique_modules = find_unique @all_modules_hash
113
-
114
- unique_classes_and_modules.each do |cm|
115
- cm.complete min_visibility
116
- end
117
-
118
- @all_files_hash.each_key do |file_name|
119
- tl = @all_files_hash[file_name]
120
-
121
- unless RDoc::Parser::Simple === tl.parser then
122
- tl.modules_hash.clear
123
- tl.classes_hash.clear
124
-
125
- tl.classes_or_modules.each do |cm|
126
- name = cm.full_name
127
- if cm.type == 'class' then
128
- tl.classes_hash[name] = cm if @all_classes_hash[name]
129
- else
130
- tl.modules_hash[name] = cm if @all_modules_hash[name]
131
- end
132
- end
133
- end
134
- end
135
- end
136
-
137
- ##
138
- # Finds the class with +name+ in all discovered classes
139
-
140
- def self.find_class_named(name)
141
- @all_classes_hash[name]
142
- end
143
-
144
- ##
145
- # Finds the class with +name+ starting in namespace +from+
146
-
147
- def self.find_class_named_from name, from
148
- from = find_class_named from unless RDoc::Context === from
149
-
150
- until RDoc::TopLevel === from do
151
- return nil unless from
152
-
153
- klass = from.find_class_named name
154
- return klass if klass
155
-
156
- from = from.parent
157
- end
158
-
159
- find_class_named name
160
- end
161
-
162
- ##
163
- # Finds the class or module with +name+
164
-
165
- def self.find_class_or_module(name)
166
- name = $' if name =~ /^::/
167
- RDoc::TopLevel.classes_hash[name] || RDoc::TopLevel.modules_hash[name]
168
- end
169
-
170
- ##
171
- # Finds the file with +name+ in all discovered files
172
-
173
- def self.find_file_named(name)
174
- @all_files_hash[name]
175
- end
176
-
177
- ##
178
- # Finds the module with +name+ in all discovered modules
179
-
180
- def self.find_module_named(name)
181
- modules_hash[name]
182
- end
183
-
184
- ##
185
- # Finds unique classes/modules defined in +all_hash+,
186
- # and returns them as an array. Performs the alias
187
- # updates in +all_hash+: see ::complete.
188
- #--
189
- # TODO aliases should be registered by Context#add_module_alias
190
-
191
- def self.find_unique(all_hash)
192
- unique = []
193
-
194
- all_hash.each_pair do |full_name, cm|
195
- unique << cm if full_name == cm.full_name
196
- end
197
-
198
- unique
199
- end
200
-
201
- ##
202
- # Fixes the erroneous <tt>BasicObject < Object</tt> in 1.9.
203
- #
204
- # Because we assumed all classes without a stated superclass
205
- # inherit from Object, we have the above wrong inheritance.
206
- #
207
- # We fix BasicObject right away if we are running in a Ruby
208
- # version >= 1.9. If not, we may be documenting 1.9 source
209
- # while running under 1.8: we search the files of BasicObject
210
- # for "object.c", and fix the inheritance if we find it.
211
-
212
- def self.fix_basic_object_inheritance
213
- basic = all_classes_hash['BasicObject']
214
- return unless basic
215
- if RUBY_VERSION >= '1.9'
216
- basic.superclass = nil
217
- elsif basic.in_files.any? { |f| File.basename(f.full_name) == 'object.c' }
218
- basic.superclass = nil
219
- end
220
- end
34
+ # The parser class that processed this file
221
35
 
222
- ##
223
- # Removes from +all_hash+ the contexts that are nodoc or have no content.
224
- #
225
- # See RDoc::Context#remove_from_documentation?
226
-
227
- def self.remove_nodoc(all_hash)
228
- all_hash.keys.each do |name|
229
- context = all_hash[name]
230
- all_hash.delete(name) if context.remove_from_documentation?
231
- end
232
- end
36
+ attr_reader :parser
233
37
 
234
38
  ##
235
- # Empties RDoc of stored class, module and file information
39
+ # Creates a new TopLevel for the file at +absolute_name+. If documentation
40
+ # is being generated outside the source dir +relative_name+ is relative to
41
+ # the source directory.
236
42
 
237
- def self.reset
238
- @all_classes_hash = {}
239
- @all_modules_hash = {}
240
- @all_files_hash = {}
241
- end
242
-
243
- ##
244
- # Returns the unique classes discovered by RDoc.
245
- #
246
- # ::complete must have been called prior to using this method.
43
+ def initialize absolute_name, relative_name = absolute_name
44
+ super()
45
+ @name = nil
46
+ @absolute_name = absolute_name
47
+ @relative_name = relative_name
48
+ @file_stat = File.stat(absolute_name) rescue nil # HACK for testing
49
+ @diagram = nil
50
+ @parser = nil
247
51
 
248
- def self.unique_classes
249
- @unique_classes
52
+ @classes_or_modules = []
250
53
  end
251
54
 
252
- ##
253
- # Returns the unique classes and modules discovered by RDoc.
254
- # ::complete must have been called prior to using this method.
255
-
256
- def self.unique_classes_and_modules
257
- @unique_classes + @unique_modules
55
+ def parser=(val)
56
+ @parser = val
57
+ @store.update_parser_of_file(absolute_name, val) if @store
58
+ @parser
258
59
  end
259
60
 
260
61
  ##
261
- # Returns the unique modules discovered by RDoc.
262
- # ::complete must have been called prior to using this method.
62
+ # An RDoc::TopLevel is equal to another with the same relative_name
263
63
 
264
- def self.unique_modules
265
- @unique_modules
64
+ def == other
65
+ self.class === other and @relative_name == other.relative_name
266
66
  end
267
67
 
268
- class << self
269
- alias classes all_classes
270
- alias classes_hash all_classes_hash
271
-
272
- alias files all_files
273
- alias files_hash all_files_hash
274
-
275
- alias modules all_modules
276
- alias modules_hash all_modules_hash
277
- end
278
-
279
- reset
280
-
281
- ##
282
- # Creates a new TopLevel for +file_name+
283
-
284
- def initialize(file_name)
285
- super()
286
- @name = nil
287
- @relative_name = file_name
288
- @absolute_name = file_name
289
- @file_stat = File.stat(file_name) rescue nil # HACK for testing
290
- @diagram = nil
291
- @parser = nil
292
-
293
- @classes_or_modules = []
294
-
295
- RDoc::TopLevel.files_hash[file_name] = self
296
- end
68
+ alias eql? ==
297
69
 
298
70
  ##
299
71
  # Adds +an_alias+ to +Object+ instead of +self+.
300
72
 
301
73
  def add_alias(an_alias)
74
+ object_class.record_location self
302
75
  return an_alias unless @document_self
303
76
  object_class.add_alias an_alias
304
77
  end
@@ -306,7 +79,8 @@ class RDoc::TopLevel < RDoc::Context
306
79
  ##
307
80
  # Adds +constant+ to +Object+ instead of +self+.
308
81
 
309
- def add_constant(constant)
82
+ def add_constant constant
83
+ object_class.record_location self
310
84
  return constant unless @document_self
311
85
  object_class.add_constant constant
312
86
  end
@@ -315,6 +89,7 @@ class RDoc::TopLevel < RDoc::Context
315
89
  # Adds +include+ to +Object+ instead of +self+.
316
90
 
317
91
  def add_include(include)
92
+ object_class.record_location self
318
93
  return include unless @document_self
319
94
  object_class.add_include include
320
95
  end
@@ -323,13 +98,14 @@ class RDoc::TopLevel < RDoc::Context
323
98
  # Adds +method+ to +Object+ instead of +self+.
324
99
 
325
100
  def add_method(method)
101
+ object_class.record_location self
326
102
  return method unless @document_self
327
103
  object_class.add_method method
328
104
  end
329
105
 
330
106
  ##
331
107
  # Adds class or module +mod+. Used in the building phase
332
- # by the ruby parser.
108
+ # by the Ruby parser.
333
109
 
334
110
  def add_to_classes_or_modules mod
335
111
  @classes_or_modules << mod
@@ -339,11 +115,19 @@ class RDoc::TopLevel < RDoc::Context
339
115
  # Base name of this file
340
116
 
341
117
  def base_name
342
- File.basename @absolute_name
118
+ File.basename @relative_name
343
119
  end
344
120
 
345
121
  alias name base_name
346
122
 
123
+ ##
124
+ # Only a TopLevel that contains text file) will be displayed. See also
125
+ # RDoc::CodeObject#display?
126
+
127
+ def display?
128
+ text? and super
129
+ end
130
+
347
131
  ##
348
132
  # See RDoc::TopLevel::find_class_or_module
349
133
  #--
@@ -351,7 +135,7 @@ class RDoc::TopLevel < RDoc::Context
351
135
  # ones of this instance?
352
136
 
353
137
  def find_class_or_module name
354
- RDoc::TopLevel.find_class_or_module name
138
+ @store.find_class_or_module name
355
139
  end
356
140
 
357
141
  ##
@@ -375,6 +159,14 @@ class RDoc::TopLevel < RDoc::Context
375
159
  @relative_name
376
160
  end
377
161
 
162
+ ##
163
+ # An RDoc::TopLevel has the same hash as another with the same
164
+ # relative_name
165
+
166
+ def hash
167
+ @relative_name.hash
168
+ end
169
+
378
170
  ##
379
171
  # URL for this with a +prefix+
380
172
 
@@ -400,6 +192,30 @@ class RDoc::TopLevel < RDoc::Context
400
192
  @file_stat ? file_stat.mtime : nil
401
193
  end
402
194
 
195
+ ##
196
+ # Dumps this TopLevel for use by ri. See also #marshal_load
197
+
198
+ def marshal_dump
199
+ [
200
+ MARSHAL_VERSION,
201
+ @relative_name,
202
+ @parser,
203
+ parse(@comment),
204
+ ]
205
+ end
206
+
207
+ ##
208
+ # Loads this TopLevel from +array+.
209
+
210
+ def marshal_load array # :nodoc:
211
+ initialize array[1]
212
+
213
+ @parser = array[2]
214
+ @comment = array[3]
215
+
216
+ @file_stat = nil
217
+ end
218
+
403
219
  ##
404
220
  # Returns the NormalClass "Object", creating it if not found.
405
221
  #
@@ -407,17 +223,27 @@ class RDoc::TopLevel < RDoc::Context
407
223
 
408
224
  def object_class
409
225
  @object_class ||= begin
410
- oc = self.class.find_class_named('Object') || add_class(RDoc::NormalClass, 'Object')
226
+ oc = @store.find_class_named('Object') || add_class(RDoc::NormalClass, 'Object')
411
227
  oc.record_location self
412
228
  oc
413
229
  end
414
230
  end
415
231
 
416
232
  ##
417
- # Path to this file
233
+ # Base name of this file without the extension
234
+
235
+ def page_name
236
+ basename = File.basename @relative_name
237
+ basename =~ /\.(rb|rdoc|txt|md)$/i
238
+
239
+ $` || basename
240
+ end
241
+
242
+ ##
243
+ # Path to this file for use with HTML generator output.
418
244
 
419
245
  def path
420
- http_url RDoc::RDoc.current.generator.file_dir
246
+ http_url @store.rdoc.generator.file_dir
421
247
  end
422
248
 
423
249
  def pretty_print q # :nodoc:
@@ -426,11 +252,35 @@ class RDoc::TopLevel < RDoc::Context
426
252
  q.breakable
427
253
 
428
254
  items = @modules.map { |n,m| m }
429
- items.push(*@modules.map { |n,c| c })
255
+ items.concat @modules.map { |n,c| c }
430
256
  q.seplist items do |mod| q.pp mod end
431
257
  end
432
258
  end
433
259
 
260
+ ##
261
+ # Search record used by RDoc::Generator::JsonIndex
262
+
263
+ def search_record
264
+ return unless @parser < RDoc::Parser::Text
265
+
266
+ [
267
+ page_name,
268
+ '',
269
+ page_name,
270
+ '',
271
+ path,
272
+ '',
273
+ snippet(@comment),
274
+ ]
275
+ end
276
+
277
+ ##
278
+ # Is this TopLevel from a text file instead of a source code file?
279
+
280
+ def text?
281
+ @parser and @parser.include? RDoc::Parser::Text
282
+ end
283
+
434
284
  def to_s # :nodoc:
435
285
  "file #{full_name}"
436
286
  end
@@ -0,0 +1,8 @@
1
+ module RDoc
2
+
3
+ ##
4
+ # RDoc version you are using
5
+
6
+ VERSION = '6.3.3'
7
+
8
+ end