rdoc 4.2.1 → 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 (277) hide show
  1. checksums.yaml +5 -5
  2. data/CONTRIBUTING.rdoc +8 -7
  3. data/Gemfile +12 -0
  4. data/History.rdoc +48 -4
  5. data/LEGAL.rdoc +2 -2
  6. data/README.rdoc +5 -5
  7. data/Rakefile +73 -155
  8. data/bin/console +7 -0
  9. data/bin/setup +6 -0
  10. data/{bin → exe}/rdoc +0 -0
  11. data/{bin → exe}/ri +0 -0
  12. data/lib/rdoc/alias.rb +1 -0
  13. data/lib/rdoc/anon_class.rb +1 -0
  14. data/lib/rdoc/any_method.rb +59 -14
  15. data/lib/rdoc/attr.rb +1 -0
  16. data/lib/rdoc/class_module.rb +5 -2
  17. data/lib/rdoc/code_object.rb +3 -11
  18. data/lib/rdoc/code_objects.rb +1 -0
  19. data/lib/rdoc/comment.rb +32 -11
  20. data/lib/rdoc/constant.rb +3 -2
  21. data/lib/rdoc/context/section.rb +7 -13
  22. data/lib/rdoc/context.rb +78 -23
  23. data/lib/rdoc/cross_reference.rb +33 -14
  24. data/lib/rdoc/encoding.rb +92 -55
  25. data/lib/rdoc/erb_partial.rb +2 -1
  26. data/lib/rdoc/erbio.rb +8 -3
  27. data/lib/rdoc/extend.rb +1 -0
  28. data/lib/rdoc/generator/darkfish.rb +62 -32
  29. data/lib/rdoc/generator/json_index.rb +8 -5
  30. data/lib/rdoc/generator/markup.rb +3 -12
  31. data/lib/rdoc/generator/pot/message_extractor.rb +68 -0
  32. data/lib/rdoc/generator/pot/po.rb +84 -0
  33. data/lib/rdoc/generator/pot/po_entry.rb +141 -0
  34. data/lib/rdoc/generator/pot.rb +4 -3
  35. data/lib/rdoc/generator/ri.rb +1 -0
  36. data/lib/rdoc/generator/template/darkfish/_footer.rhtml +2 -2
  37. data/lib/rdoc/generator/template/darkfish/_head.rhtml +11 -8
  38. data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +2 -2
  39. data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +2 -2
  40. data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
  41. data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +2 -2
  42. data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
  43. data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
  44. data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +5 -5
  45. data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +5 -5
  46. data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +5 -5
  47. data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
  48. data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +4 -4
  49. data/lib/rdoc/generator/template/darkfish/class.rhtml +45 -47
  50. data/lib/rdoc/generator/template/darkfish/css/fonts.css +6 -6
  51. data/lib/rdoc/generator/template/darkfish/css/rdoc.css +55 -6
  52. data/lib/rdoc/generator/template/darkfish/index.rhtml +3 -4
  53. data/lib/rdoc/generator/template/darkfish/js/darkfish.js +23 -100
  54. data/lib/rdoc/generator/template/darkfish/js/search.js +32 -31
  55. data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +15 -16
  56. data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +16 -16
  57. data/lib/rdoc/generator/template/json_index/js/navigation.js +4 -41
  58. data/lib/rdoc/generator/template/json_index/js/searcher.js +7 -6
  59. data/lib/rdoc/generator.rb +1 -1
  60. data/lib/rdoc/ghost_method.rb +1 -0
  61. data/lib/rdoc/i18n/locale.rb +2 -1
  62. data/lib/rdoc/i18n/text.rb +5 -4
  63. data/lib/rdoc/i18n.rb +3 -2
  64. data/lib/rdoc/include.rb +1 -0
  65. data/lib/rdoc/known_classes.rb +1 -0
  66. data/lib/rdoc/markdown/entities.rb +1 -0
  67. data/lib/rdoc/markdown/{literals_1_9.kpeg → literals.kpeg} +1 -0
  68. data/lib/rdoc/markdown/{literals_1_9.rb → literals.rb} +1 -4
  69. data/lib/rdoc/markdown.kpeg +94 -51
  70. data/lib/rdoc/markdown.rb +1171 -619
  71. data/lib/rdoc/markup/attr_changer.rb +1 -0
  72. data/lib/rdoc/markup/attr_span.rb +9 -2
  73. data/lib/rdoc/markup/attribute_manager.rb +115 -49
  74. data/lib/rdoc/markup/attributes.rb +7 -6
  75. data/lib/rdoc/markup/blank_line.rb +1 -0
  76. data/lib/rdoc/markup/block_quote.rb +1 -0
  77. data/lib/rdoc/markup/document.rb +1 -0
  78. data/lib/rdoc/markup/formatter.rb +25 -23
  79. data/lib/rdoc/markup/hard_break.rb +1 -0
  80. data/lib/rdoc/markup/heading.rb +4 -3
  81. data/lib/rdoc/markup/include.rb +1 -0
  82. data/lib/rdoc/markup/indented_paragraph.rb +1 -0
  83. data/lib/rdoc/markup/list.rb +1 -0
  84. data/lib/rdoc/markup/list_item.rb +1 -0
  85. data/lib/rdoc/markup/paragraph.rb +1 -0
  86. data/lib/rdoc/markup/parser.rb +78 -61
  87. data/lib/rdoc/markup/pre_process.rb +12 -9
  88. data/lib/rdoc/markup/raw.rb +1 -0
  89. data/lib/rdoc/markup/regexp_handling.rb +41 -0
  90. data/lib/rdoc/markup/rule.rb +1 -0
  91. data/lib/rdoc/markup/to_ansi.rb +1 -0
  92. data/lib/rdoc/markup/to_bs.rb +4 -5
  93. data/lib/rdoc/markup/to_html.rb +71 -25
  94. data/lib/rdoc/markup/to_html_crossref.rb +41 -25
  95. data/lib/rdoc/markup/to_html_snippet.rb +10 -9
  96. data/lib/rdoc/markup/to_joined_paragraph.rb +7 -31
  97. data/lib/rdoc/markup/to_label.rb +10 -9
  98. data/lib/rdoc/markup/to_markdown.rb +9 -8
  99. data/lib/rdoc/markup/to_rdoc.rb +35 -6
  100. data/lib/rdoc/markup/to_table_of_contents.rb +2 -0
  101. data/lib/rdoc/markup/to_test.rb +1 -0
  102. data/lib/rdoc/markup/to_tt_only.rb +3 -2
  103. data/lib/rdoc/markup/verbatim.rb +1 -0
  104. data/lib/rdoc/markup.rb +14 -16
  105. data/lib/rdoc/meta_method.rb +1 -0
  106. data/lib/rdoc/method_attr.rb +2 -1
  107. data/lib/rdoc/mixin.rb +1 -0
  108. data/lib/rdoc/normal_class.rb +3 -2
  109. data/lib/rdoc/normal_module.rb +1 -0
  110. data/lib/rdoc/options.rb +92 -58
  111. data/lib/rdoc/parser/c.rb +219 -223
  112. data/lib/rdoc/parser/changelog.rb +155 -18
  113. data/lib/rdoc/parser/markdown.rb +1 -0
  114. data/lib/rdoc/parser/rd.rb +1 -0
  115. data/lib/rdoc/parser/ripper_state_lex.rb +590 -0
  116. data/lib/rdoc/parser/ruby.rb +635 -468
  117. data/lib/rdoc/parser/ruby_tools.rb +33 -33
  118. data/lib/rdoc/parser/simple.rb +3 -3
  119. data/lib/rdoc/parser/text.rb +1 -0
  120. data/lib/rdoc/parser.rb +17 -50
  121. data/lib/rdoc/rd/block_parser.rb +66 -65
  122. data/lib/rdoc/rd/block_parser.ry +3 -3
  123. data/lib/rdoc/rd/inline.rb +5 -4
  124. data/lib/rdoc/rd/inline_parser.rb +52 -51
  125. data/lib/rdoc/rd/inline_parser.ry +1 -1
  126. data/lib/rdoc/rd.rb +1 -0
  127. data/lib/rdoc/rdoc.rb +68 -63
  128. data/lib/rdoc/require.rb +1 -0
  129. data/lib/rdoc/ri/driver.rb +133 -58
  130. data/lib/rdoc/ri/formatter.rb +1 -0
  131. data/lib/rdoc/ri/paths.rb +4 -20
  132. data/lib/rdoc/ri/store.rb +1 -0
  133. data/lib/rdoc/ri/task.rb +71 -0
  134. data/lib/rdoc/ri.rb +1 -0
  135. data/lib/rdoc/rubygems_hook.rb +5 -12
  136. data/lib/rdoc/servlet.rb +24 -14
  137. data/lib/rdoc/single_class.rb +1 -0
  138. data/lib/rdoc/stats/normal.rb +20 -21
  139. data/lib/rdoc/stats/quiet.rb +1 -0
  140. data/lib/rdoc/stats/verbose.rb +1 -0
  141. data/lib/rdoc/stats.rb +1 -0
  142. data/lib/rdoc/store.rb +41 -41
  143. data/lib/rdoc/task.rb +2 -3
  144. data/lib/rdoc/text.rb +19 -38
  145. data/lib/rdoc/token_stream.rb +56 -32
  146. data/lib/rdoc/tom_doc.rb +17 -11
  147. data/lib/rdoc/top_level.rb +9 -2
  148. data/lib/rdoc/version.rb +8 -0
  149. data/lib/rdoc.rb +24 -10
  150. data/man/ri.1 +247 -0
  151. data/rdoc.gemspec +248 -0
  152. metadata +43 -236
  153. data/.autotest +0 -24
  154. data/.document +0 -5
  155. data/Manifest.txt +0 -306
  156. data/lib/gauntlet_rdoc.rb +0 -84
  157. data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
  158. data/lib/rdoc/markdown/literals_1_8.kpeg +0 -18
  159. data/lib/rdoc/markdown/literals_1_8.rb +0 -416
  160. data/lib/rdoc/markup/formatter_test_case.rb +0 -767
  161. data/lib/rdoc/markup/inline.rb +0 -1
  162. data/lib/rdoc/markup/special.rb +0 -40
  163. data/lib/rdoc/markup/text_formatter_test_case.rb +0 -114
  164. data/lib/rdoc/ruby_lex.rb +0 -1377
  165. data/lib/rdoc/ruby_token.rb +0 -460
  166. data/lib/rdoc/test_case.rb +0 -217
  167. data/test/MarkdownTest_1.0.3/Amps and angle encoding.text +0 -21
  168. data/test/MarkdownTest_1.0.3/Auto links.text +0 -13
  169. data/test/MarkdownTest_1.0.3/Backslash escapes.text +0 -120
  170. data/test/MarkdownTest_1.0.3/Blockquotes with code blocks.text +0 -11
  171. data/test/MarkdownTest_1.0.3/Code Blocks.text +0 -14
  172. data/test/MarkdownTest_1.0.3/Code Spans.text +0 -6
  173. data/test/MarkdownTest_1.0.3/Hard-wrapped paragraphs with list-like lines.text +0 -8
  174. data/test/MarkdownTest_1.0.3/Horizontal rules.text +0 -67
  175. data/test/MarkdownTest_1.0.3/Inline HTML (Advanced).text +0 -15
  176. data/test/MarkdownTest_1.0.3/Inline HTML (Simple).text +0 -69
  177. data/test/MarkdownTest_1.0.3/Inline HTML comments.text +0 -13
  178. data/test/MarkdownTest_1.0.3/Links, inline style.text +0 -12
  179. data/test/MarkdownTest_1.0.3/Links, reference style.text +0 -71
  180. data/test/MarkdownTest_1.0.3/Links, shortcut references.text +0 -20
  181. data/test/MarkdownTest_1.0.3/Literal quotes in titles.text +0 -7
  182. data/test/MarkdownTest_1.0.3/Markdown Documentation - Basics.text +0 -306
  183. data/test/MarkdownTest_1.0.3/Markdown Documentation - Syntax.text +0 -888
  184. data/test/MarkdownTest_1.0.3/Nested blockquotes.text +0 -5
  185. data/test/MarkdownTest_1.0.3/Ordered and unordered lists.text +0 -131
  186. data/test/MarkdownTest_1.0.3/Strong and em together.text +0 -7
  187. data/test/MarkdownTest_1.0.3/Tabs.text +0 -21
  188. data/test/MarkdownTest_1.0.3/Tidyness.text +0 -5
  189. data/test/README +0 -1
  190. data/test/binary.dat +0 -0
  191. data/test/hidden.zip.txt +0 -1
  192. data/test/test.ja.largedoc +0 -3
  193. data/test/test.ja.rdoc +0 -10
  194. data/test/test.ja.txt +0 -8
  195. data/test/test.txt +0 -1
  196. data/test/test_rdoc_alias.rb +0 -13
  197. data/test/test_rdoc_any_method.rb +0 -460
  198. data/test/test_rdoc_attr.rb +0 -190
  199. data/test/test_rdoc_class_module.rb +0 -1492
  200. data/test/test_rdoc_code_object.rb +0 -450
  201. data/test/test_rdoc_comment.rb +0 -504
  202. data/test/test_rdoc_constant.rb +0 -181
  203. data/test/test_rdoc_context.rb +0 -901
  204. data/test/test_rdoc_context_section.rb +0 -130
  205. data/test/test_rdoc_cross_reference.rb +0 -192
  206. data/test/test_rdoc_encoding.rb +0 -227
  207. data/test/test_rdoc_extend.rb +0 -94
  208. data/test/test_rdoc_generator_darkfish.rb +0 -229
  209. data/test/test_rdoc_generator_json_index.rb +0 -324
  210. data/test/test_rdoc_generator_markup.rb +0 -59
  211. data/test/test_rdoc_generator_pot.rb +0 -91
  212. data/test/test_rdoc_generator_pot_po.rb +0 -51
  213. data/test/test_rdoc_generator_pot_po_entry.rb +0 -139
  214. data/test/test_rdoc_generator_ri.rb +0 -78
  215. data/test/test_rdoc_i18n_locale.rb +0 -73
  216. data/test/test_rdoc_i18n_text.rb +0 -123
  217. data/test/test_rdoc_include.rb +0 -108
  218. data/test/test_rdoc_markdown.rb +0 -980
  219. data/test/test_rdoc_markdown_test.rb +0 -1884
  220. data/test/test_rdoc_markup.rb +0 -95
  221. data/test/test_rdoc_markup_attribute_manager.rb +0 -364
  222. data/test/test_rdoc_markup_attributes.rb +0 -39
  223. data/test/test_rdoc_markup_document.rb +0 -207
  224. data/test/test_rdoc_markup_formatter.rb +0 -175
  225. data/test/test_rdoc_markup_hard_break.rb +0 -31
  226. data/test/test_rdoc_markup_heading.rb +0 -29
  227. data/test/test_rdoc_markup_include.rb +0 -19
  228. data/test/test_rdoc_markup_indented_paragraph.rb +0 -53
  229. data/test/test_rdoc_markup_paragraph.rb +0 -32
  230. data/test/test_rdoc_markup_parser.rb +0 -1680
  231. data/test/test_rdoc_markup_pre_process.rb +0 -473
  232. data/test/test_rdoc_markup_raw.rb +0 -22
  233. data/test/test_rdoc_markup_to_ansi.rb +0 -369
  234. data/test/test_rdoc_markup_to_bs.rb +0 -366
  235. data/test/test_rdoc_markup_to_html.rb +0 -662
  236. data/test/test_rdoc_markup_to_html_crossref.rb +0 -225
  237. data/test/test_rdoc_markup_to_html_snippet.rb +0 -711
  238. data/test/test_rdoc_markup_to_joined_paragraph.rb +0 -32
  239. data/test/test_rdoc_markup_to_label.rb +0 -112
  240. data/test/test_rdoc_markup_to_markdown.rb +0 -389
  241. data/test/test_rdoc_markup_to_rdoc.rb +0 -377
  242. data/test/test_rdoc_markup_to_table_of_contents.rb +0 -126
  243. data/test/test_rdoc_markup_to_tt_only.rb +0 -246
  244. data/test/test_rdoc_markup_verbatim.rb +0 -29
  245. data/test/test_rdoc_method_attr.rb +0 -193
  246. data/test/test_rdoc_normal_class.rb +0 -47
  247. data/test/test_rdoc_normal_module.rb +0 -42
  248. data/test/test_rdoc_options.rb +0 -766
  249. data/test/test_rdoc_parser.rb +0 -327
  250. data/test/test_rdoc_parser_c.rb +0 -1896
  251. data/test/test_rdoc_parser_changelog.rb +0 -315
  252. data/test/test_rdoc_parser_markdown.rb +0 -61
  253. data/test/test_rdoc_parser_rd.rb +0 -55
  254. data/test/test_rdoc_parser_ruby.rb +0 -3322
  255. data/test/test_rdoc_parser_simple.rb +0 -115
  256. data/test/test_rdoc_rd.rb +0 -30
  257. data/test/test_rdoc_rd_block_parser.rb +0 -535
  258. data/test/test_rdoc_rd_inline.rb +0 -63
  259. data/test/test_rdoc_rd_inline_parser.rb +0 -177
  260. data/test/test_rdoc_rdoc.rb +0 -455
  261. data/test/test_rdoc_require.rb +0 -25
  262. data/test/test_rdoc_ri_driver.rb +0 -1436
  263. data/test/test_rdoc_ri_paths.rb +0 -155
  264. data/test/test_rdoc_ruby_lex.rb +0 -421
  265. data/test/test_rdoc_ruby_token.rb +0 -19
  266. data/test/test_rdoc_rubygems_hook.rb +0 -251
  267. data/test/test_rdoc_servlet.rb +0 -534
  268. data/test/test_rdoc_single_class.rb +0 -20
  269. data/test/test_rdoc_stats.rb +0 -722
  270. data/test/test_rdoc_store.rb +0 -993
  271. data/test/test_rdoc_task.rb +0 -173
  272. data/test/test_rdoc_text.rb +0 -557
  273. data/test/test_rdoc_token_stream.rb +0 -42
  274. data/test/test_rdoc_tom_doc.rb +0 -520
  275. data/test/test_rdoc_top_level.rb +0 -287
  276. data/test/xref_data.rb +0 -76
  277. data/test/xref_test_case.rb +0 -67
data/lib/rdoc/servlet.rb CHANGED
@@ -1,7 +1,14 @@
1
+ # frozen_string_literal: true
1
2
  require 'rdoc'
3
+ require 'erb'
2
4
  require 'time'
3
5
  require 'json'
4
- 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
5
12
 
6
13
  ##
7
14
  # This is a WEBrick servlet that allows you to browse ri documentation.
@@ -100,9 +107,9 @@ class RDoc::Servlet < WEBrick::HTTPServlet::AbstractServlet
100
107
  res.body = File.read asset_path
101
108
 
102
109
  res.content_type = case req.path
103
- when /css$/ then 'text/css'
104
- when /js$/ then 'application/javascript'
105
- else 'application/octet-stream'
110
+ when /\.css\z/ then 'text/css'
111
+ when /\.js\z/ then 'application/javascript'
112
+ else 'application/octet-stream'
106
113
  end
107
114
  end
108
115
 
@@ -110,13 +117,13 @@ class RDoc::Servlet < WEBrick::HTTPServlet::AbstractServlet
110
117
  # GET request entry point. Fills in +res+ for the path, etc. in +req+.
111
118
 
112
119
  def do_GET req, res
113
- req.path.sub!(/^#{Regexp.escape @mount_path}/o, '') if @mount_path
120
+ req.path.sub!(/\A#{Regexp.escape @mount_path}/, '') if @mount_path
114
121
 
115
122
  case req.path
116
123
  when '/' then
117
124
  root req, res
118
- when '/rdoc.css', '/js/darkfish.js', '/js/jquery.js', '/js/search.js',
119
- %r%^/images/% then
125
+ when '/js/darkfish.js', '/js/jquery.js', '/js/search.js',
126
+ %r%^/css/%, %r%^/images/%, %r%^/fonts/% then
120
127
  asset :darkfish, req, res
121
128
  when '/js/navigation.js', '/js/searcher.js' then
122
129
  asset :json_index, req, res
@@ -143,11 +150,14 @@ class RDoc::Servlet < WEBrick::HTTPServlet::AbstractServlet
143
150
  # +generator+ is used to create the page.
144
151
 
145
152
  def documentation_page store, generator, path, req, res
146
- name = path.sub(/.html$/, '').gsub '/', '::'
153
+ text_name = path.chomp '.html'
154
+ name = text_name.gsub '/', '::'
147
155
 
148
156
  if klass = store.find_class_or_module(name) then
149
157
  res.body = generator.generate_class klass
150
- 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
151
161
  res.body = generator.generate_page page
152
162
  else
153
163
  not_found generator, req, res
@@ -203,7 +213,7 @@ class RDoc::Servlet < WEBrick::HTTPServlet::AbstractServlet
203
213
 
204
214
  <title>Error - #{ERB::Util.html_escape exception.class}</title>
205
215
 
206
- <link type="text/css" media="screen" href="#{@mount_path}/rdoc.css" rel="stylesheet">
216
+ <link type="text/css" media="screen" href="#{@mount_path}/css/rdoc.css" rel="stylesheet">
207
217
  </head>
208
218
  <body>
209
219
  <h1>Error</h1>
@@ -216,7 +226,7 @@ exception:
216
226
  <pre>#{ERB::Util.html_escape exception.message}</pre>
217
227
 
218
228
  <p>Please report this to the
219
- <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
220
230
  include the RDoc version, the URI above and exception class, message and
221
231
  backtrace. If you're viewing a gem's documentation, include the gem name and
222
232
  version. If you're viewing Ruby's documentation, include the version of ruby.
@@ -414,7 +424,7 @@ version. If you're viewing Ruby's documentation, include the version of ruby.
414
424
  RDoc::Store.new RDoc::RI::Paths.system_dir, :system
415
425
  when 'site' then
416
426
  RDoc::Store.new RDoc::RI::Paths.site_dir, :site
417
- when /^extra-(\d+)$/ then
427
+ when /\Aextra-(\d+)\z/ then
418
428
  index = $1.to_i - 1
419
429
  ri_dir = installed_docs[index][4]
420
430
  RDoc::Store.new ri_dir, :extra
@@ -426,14 +436,14 @@ version. If you're viewing Ruby's documentation, include the version of ruby.
426
436
  end
427
437
 
428
438
  raise WEBrick::HTTPStatus::NotFound,
429
- "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
430
440
 
431
441
  store = RDoc::Store.new ri_dir, type
432
442
 
433
443
  return store if File.exist? store.cache_path
434
444
 
435
445
  raise WEBrick::HTTPStatus::NotFound,
436
- "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`"
437
447
 
438
448
  end
439
449
  end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  ##
2
3
  # A singleton class
3
4
 
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
1
2
  begin
2
3
  require 'io/console/size'
3
4
  rescue LoadError
5
+ # for JRuby
6
+ require 'io/console'
4
7
  end
5
8
 
6
9
  ##
@@ -23,31 +26,28 @@ class RDoc::Stats::Normal < RDoc::Stats::Quiet
23
26
  files_so_far,
24
27
  @num_files)
25
28
 
26
- # Print a progress bar, but make sure it fits on a single line. Filename
27
- # will be truncated if necessary.
28
- terminal_width = if defined?(IO) && IO.respond_to?(:console_size)
29
- IO.console_size[1].to_i.nonzero? || 80
30
- else
31
- 80
32
- end
33
- max_filename_size = terminal_width - progress_bar.size
34
-
35
- if filename.size > max_filename_size then
36
- # Turn "some_long_filename.rb" to "...ong_filename.rb"
37
- filename = filename[(filename.size - max_filename_size) .. -1]
38
- filename[0..2] = "..."
39
- end
40
-
41
- line = "#{progress_bar}#{filename}"
42
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
+
43
42
  # Clean the line with whitespaces so that leftover output from the
44
43
  # previous line doesn't show up.
45
- $stdout.print("\r" << (" " * @last_width) << ("\b" * @last_width) << "\r") if @last_width && @last_width > 0
46
- @last_width = line.size
47
- $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"
48
47
  else
49
- $stdout.puts(line)
48
+ term = "\n"
50
49
  end
50
+ $stdout.print(progress_bar, filename, term)
51
51
  $stdout.flush
52
52
  end
53
53
 
@@ -56,4 +56,3 @@ class RDoc::Stats::Normal < RDoc::Stats::Quiet
56
56
  end
57
57
 
58
58
  end
59
-
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  ##
2
3
  # Stats printer that prints nothing
3
4
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  ##
2
3
  # Stats printer that prints everything documented, including the documented
3
4
  # status
data/lib/rdoc/stats.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  ##
2
3
  # RDoc statistics collector which prints a summary and report of a project's
3
4
  # documentation totals.
data/lib/rdoc/store.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'fileutils'
2
3
 
3
4
  ##
@@ -115,6 +116,11 @@ class RDoc::Store
115
116
 
116
117
  attr_accessor :encoding
117
118
 
119
+ ##
120
+ # The lazy constants alias will be discovered in passing
121
+
122
+ attr_reader :unmatched_constant_alias
123
+
118
124
  ##
119
125
  # Creates a new Store of +type+ that will load or save to +path+
120
126
 
@@ -142,6 +148,7 @@ class RDoc::Store
142
148
  @classes_hash = {}
143
149
  @modules_hash = {}
144
150
  @files_hash = {}
151
+ @text_files_hash = {}
145
152
 
146
153
  @c_enclosure_classes = {}
147
154
  @c_enclosure_names = {}
@@ -151,6 +158,8 @@ class RDoc::Store
151
158
 
152
159
  @unique_classes = nil
153
160
  @unique_modules = nil
161
+
162
+ @unmatched_constant_alias = {}
154
163
  end
155
164
 
156
165
  ##
@@ -176,16 +185,24 @@ class RDoc::Store
176
185
  # Adds the file with +name+ as an RDoc::TopLevel to the store. Returns the
177
186
  # created RDoc::TopLevel.
178
187
 
179
- def add_file absolute_name, relative_name = absolute_name
188
+ def add_file absolute_name, relative_name: absolute_name, parser: nil
180
189
  unless top_level = @files_hash[relative_name] then
181
190
  top_level = RDoc::TopLevel.new absolute_name, relative_name
191
+ top_level.parser = parser if parser
182
192
  top_level.store = self
183
193
  @files_hash[relative_name] = top_level
194
+ @text_files_hash[relative_name] = top_level if top_level.text?
184
195
  end
185
196
 
186
197
  top_level
187
198
  end
188
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
+
189
206
  ##
190
207
  # Returns all classes discovered by RDoc
191
208
 
@@ -420,8 +437,8 @@ class RDoc::Store
420
437
  # +file_name+
421
438
 
422
439
  def find_text_page file_name
423
- @files_hash.each_value.find do |file|
424
- file.text? and file.full_name == file_name
440
+ @text_files_hash.each_value.find do |file|
441
+ file.full_name == file_name
425
442
  end
426
443
  end
427
444
 
@@ -449,18 +466,12 @@ class RDoc::Store
449
466
  # inherit from Object, we have the above wrong inheritance.
450
467
  #
451
468
  # We fix BasicObject right away if we are running in a Ruby
452
- # version >= 1.9. If not, we may be documenting 1.9 source
453
- # while running under 1.8: we search the files of BasicObject
454
- # for "object.c", and fix the inheritance if we find it.
469
+ # version >= 1.9.
455
470
 
456
471
  def fix_basic_object_inheritance
457
472
  basic = classes_hash['BasicObject']
458
473
  return unless basic
459
- if RUBY_VERSION >= '1.9'
460
- basic.superclass = nil
461
- elsif basic.in_files.any? { |f| File.basename(f.full_name) == 'object.c' }
462
- basic.superclass = nil
463
- end
474
+ basic.superclass = nil
464
475
  end
465
476
 
466
477
  ##
@@ -471,7 +482,7 @@ class RDoc::Store
471
482
  when :gem then
472
483
  parent = File.expand_path '..', @path
473
484
  "gem #{File.basename parent}"
474
- when :home then '~/.rdoc'
485
+ when :home then RDoc.home
475
486
  when :site then 'ruby site'
476
487
  when :system then 'ruby core'
477
488
  else @path
@@ -535,6 +546,7 @@ class RDoc::Store
535
546
  @cache[:pages].each do |page_name|
536
547
  page = load_page page_name
537
548
  @files_hash[page_name] = page
549
+ @text_files_hash[page_name] = page if page.text?
538
550
  end
539
551
  end
540
552
 
@@ -544,7 +556,7 @@ class RDoc::Store
544
556
  def load_cache
545
557
  #orig_enc = @encoding
546
558
 
547
- open cache_path, 'rb' do |io|
559
+ File.open cache_path, 'rb' do |io|
548
560
  @cache = Marshal.load io.read
549
561
  end
550
562
 
@@ -590,6 +602,8 @@ class RDoc::Store
590
602
  case obj
591
603
  when RDoc::NormalClass then
592
604
  @classes_hash[klass_name] = obj
605
+ when RDoc::SingleClass then
606
+ @classes_hash[klass_name] = obj
593
607
  when RDoc::NormalModule then
594
608
  @modules_hash[klass_name] = obj
595
609
  end
@@ -601,7 +615,7 @@ class RDoc::Store
601
615
  def load_class_data klass_name
602
616
  file = class_file klass_name
603
617
 
604
- open file, 'rb' do |io|
618
+ File.open file, 'rb' do |io|
605
619
  Marshal.load io.read
606
620
  end
607
621
  rescue Errno::ENOENT => e
@@ -616,7 +630,7 @@ class RDoc::Store
616
630
  def load_method klass_name, method_name
617
631
  file = method_file klass_name, method_name
618
632
 
619
- open file, 'rb' do |io|
633
+ File.open file, 'rb' do |io|
620
634
  obj = Marshal.load io.read
621
635
  obj.store = self
622
636
  obj.parent =
@@ -636,7 +650,7 @@ class RDoc::Store
636
650
  def load_page page_name
637
651
  file = page_file page_name
638
652
 
639
- open file, 'rb' do |io|
653
+ File.open file, 'rb' do |io|
640
654
  obj = Marshal.load io.read
641
655
  obj.store = self
642
656
  obj
@@ -684,12 +698,7 @@ class RDoc::Store
684
698
  method_name =~ /#(.*)/
685
699
  method_type = $1 ? 'i' : 'c'
686
700
  method_name = $1 if $1
687
-
688
- method_name = if ''.respond_to? :ord then
689
- method_name.gsub(/\W/) { "%%%02x" % $&[0].ord }
690
- else
691
- method_name.gsub(/\W/) { "%%%02x" % $&[0] }
692
- end
701
+ method_name = method_name.gsub(/\W/) { "%%%02x" % $&[0].ord }
693
702
 
694
703
  File.join class_path(klass_name), "#{method_name}-#{method_type}.ri"
695
704
  end
@@ -713,8 +722,8 @@ class RDoc::Store
713
722
  # Returns the RDoc::TopLevel that is a text file and has the given +name+
714
723
 
715
724
  def page name
716
- @files_hash.each_value.find do |file|
717
- 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
718
727
  end
719
728
  end
720
729
 
@@ -786,10 +795,8 @@ class RDoc::Store
786
795
 
787
796
  return if @dry_run
788
797
 
789
- marshal = Marshal.dump @cache
790
-
791
- open cache_path, 'wb' do |io|
792
- io.write marshal
798
+ File.open cache_path, 'wb' do |io|
799
+ Marshal.dump @cache, io
793
800
  end
794
801
  end
795
802
 
@@ -862,10 +869,8 @@ class RDoc::Store
862
869
 
863
870
  FileUtils.rm_f to_delete
864
871
 
865
- marshal = Marshal.dump klass
866
-
867
- open path, 'wb' do |io|
868
- io.write marshal
872
+ File.open path, 'wb' do |io|
873
+ Marshal.dump klass, io
869
874
  end
870
875
  end
871
876
 
@@ -887,10 +892,8 @@ class RDoc::Store
887
892
 
888
893
  return if @dry_run
889
894
 
890
- marshal = Marshal.dump method
891
-
892
- open method_file(full_name, method.full_name), 'wb' do |io|
893
- io.write marshal
895
+ File.open method_file(full_name, method.full_name), 'wb' do |io|
896
+ Marshal.dump method, io
894
897
  end
895
898
  end
896
899
 
@@ -909,10 +912,8 @@ class RDoc::Store
909
912
 
910
913
  return if @dry_run
911
914
 
912
- marshal = Marshal.dump page
913
-
914
- open path, 'wb' do |io|
915
- io.write marshal
915
+ File.open path, 'wb' do |io|
916
+ Marshal.dump page, io
916
917
  end
917
918
  end
918
919
 
@@ -976,4 +977,3 @@ class RDoc::Store
976
977
  end
977
978
 
978
979
  end
979
-
data/lib/rdoc/task.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #--
2
3
  # Copyright (c) 2003, 2004 Jim Weirich, 2009 Eric Hodel
3
4
  #
@@ -21,7 +22,6 @@
21
22
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
23
  #++
23
24
 
24
- require 'rubygems'
25
25
  begin
26
26
  gem 'rdoc'
27
27
  rescue Gem::LoadError
@@ -128,7 +128,7 @@ class RDoc::Task < Rake::TaskLib
128
128
  attr_accessor :template
129
129
 
130
130
  ##
131
- # Name of format generator (<tt>--format<tt>) used by rdoc. (defaults to
131
+ # Name of format generator (<tt>--format</tt>) used by rdoc. (defaults to
132
132
  # rdoc's default)
133
133
 
134
134
  attr_accessor :generator
@@ -327,4 +327,3 @@ module Rake
327
327
 
328
328
  end
329
329
  # :startdoc:
330
-
data/lib/rdoc/text.rb CHANGED
@@ -1,25 +1,17 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  ##
4
4
  # For RDoc::Text#to_html
5
5
 
6
6
  require 'strscan'
7
7
 
8
- ##
9
- # For RDoc::Text#snippet
10
-
11
- begin
12
- gem 'json'
13
- rescue NameError => e # --disable-gems
14
- raise unless e.name == :gem
15
- rescue Gem::LoadError
16
- end
17
-
18
8
  ##
19
9
  # Methods for manipulating comment text
20
10
 
21
11
  module RDoc::Text
22
12
 
13
+ attr_accessor :language
14
+
23
15
  ##
24
16
  # Maps markup formats to classes that can parse them. If the format is
25
17
  # unknown, "rdoc" format is used.
@@ -51,7 +43,7 @@ module RDoc::Text
51
43
  :open_squote => encode_fallback('‘', encoding, '\''),
52
44
  :trademark => encode_fallback('®', encoding, '(r)'),
53
45
  }
54
- end if Object.const_defined? :Encoding
46
+ end
55
47
 
56
48
  ##
57
49
  # Transcodes +character+ to +encoding+ with a +fallback+ character.
@@ -70,7 +62,7 @@ module RDoc::Text
70
62
  text.each_line do |line|
71
63
  nil while line.gsub!(/(?:\G|\r)((?:.{8})*?)([^\t\r\n]{0,7})\t/) do
72
64
  r = "#{$1}#{$2}#{' ' * (8 - $2.size)}"
73
- r.force_encoding text.encoding if Object.const_defined? :Encoding
65
+ r = RDoc::Encoding.change_encoding r, text.encoding
74
66
  r
75
67
  end
76
68
 
@@ -92,7 +84,7 @@ module RDoc::Text
92
84
  end
93
85
 
94
86
  empty = ''
95
- empty.force_encoding text.encoding if Object.const_defined? :Encoding
87
+ empty = RDoc::Encoding.change_encoding empty, text.encoding
96
88
 
97
89
  text.gsub(/^ {0,#{indent}}/, empty)
98
90
  end
@@ -121,8 +113,12 @@ module RDoc::Text
121
113
  def normalize_comment text
122
114
  return text if text.empty?
123
115
 
124
- text = strip_stars text
125
- text = strip_hashes text
116
+ case language
117
+ when :ruby
118
+ text = strip_hashes text
119
+ when :c
120
+ text = strip_stars text
121
+ end
126
122
  text = expand_tabs text
127
123
  text = flush_left text
128
124
  text = strip_newlines text
@@ -159,7 +155,7 @@ module RDoc::Text
159
155
  return text if text =~ /^(?>\s*)[^\#]/
160
156
 
161
157
  empty = ''
162
- empty.force_encoding text.encoding if Object.const_defined? :Encoding
158
+ empty = RDoc::Encoding.change_encoding empty, text.encoding
163
159
 
164
160
  text.gsub(/^\s*(#+)/) { $1.tr '#', ' ' }.gsub(/^\s+$/, empty)
165
161
  end
@@ -177,19 +173,19 @@ module RDoc::Text
177
173
  def strip_stars text
178
174
  return text unless text =~ %r%/\*.*\*/%m
179
175
 
180
- encoding = text.encoding if Object.const_defined? :Encoding
176
+ encoding = text.encoding
181
177
 
182
- text = text.gsub %r%Document-method:\s+[\w:.#=!?]+%, ''
178
+ text = text.gsub %r%Document-method:\s+[\w:.#=!?|^&<>~+\-/*\%@`\[\]]+%, ''
183
179
 
184
180
  space = ' '
185
- space.force_encoding encoding if encoding
181
+ space = RDoc::Encoding.change_encoding space, encoding if encoding
186
182
 
187
183
  text.sub! %r%/\*+% do space * $&.length end
188
184
  text.sub! %r%\*+/% do space * $&.length end
189
185
  text.gsub! %r%^[ \t]*\*%m do space * $&.length end
190
186
 
191
187
  empty = ''
192
- empty.force_encoding encoding if encoding
188
+ empty = RDoc::Encoding.change_encoding empty, encoding if encoding
193
189
  text.gsub(/^\s+$/, empty)
194
190
  end
195
191
 
@@ -198,24 +194,9 @@ module RDoc::Text
198
194
  # trademark symbols in +text+ to properly encoded characters.
199
195
 
200
196
  def to_html text
201
- if Object.const_defined? :Encoding then
202
- html = ''.encode text.encoding
197
+ html = (''.encode text.encoding).dup
203
198
 
204
- encoded = RDoc::Text::TO_HTML_CHARACTERS[text.encoding]
205
- else
206
- html = ''
207
- encoded = {
208
- :close_dquote => '”',
209
- :close_squote => '’',
210
- :copyright => '©',
211
- :ellipsis => '…',
212
- :em_dash => '—',
213
- :en_dash => '–',
214
- :open_dquote => '“',
215
- :open_squote => '‘',
216
- :trademark => '®',
217
- }
218
- end
199
+ encoded = RDoc::Text::TO_HTML_CHARACTERS[text.encoding]
219
200
 
220
201
  s = StringScanner.new text
221
202
  insquotes = false