mega-max-hub 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/mega-max-hub.gemspec +11 -0
  3. data/rdoc-8.0.0/CONTRIBUTING.md +195 -0
  4. data/rdoc-8.0.0/CVE-2013-0256.rdoc +49 -0
  5. data/rdoc-8.0.0/History.rdoc +1668 -0
  6. data/rdoc-8.0.0/LEGAL.rdoc +56 -0
  7. data/rdoc-8.0.0/LICENSE.rdoc +63 -0
  8. data/rdoc-8.0.0/README.md +236 -0
  9. data/rdoc-8.0.0/RI.md +842 -0
  10. data/rdoc-8.0.0/TODO.rdoc +60 -0
  11. data/rdoc-8.0.0/doc/markup_reference/markdown.md +659 -0
  12. data/rdoc-8.0.0/doc/markup_reference/rdoc.rdoc +1169 -0
  13. data/rdoc-8.0.0/exe/rdoc +43 -0
  14. data/rdoc-8.0.0/exe/ri +12 -0
  15. data/rdoc-8.0.0/lib/rdoc/code_object/alias.rb +98 -0
  16. data/rdoc-8.0.0/lib/rdoc/code_object/any_method.rb +387 -0
  17. data/rdoc-8.0.0/lib/rdoc/code_object/attr.rb +178 -0
  18. data/rdoc-8.0.0/lib/rdoc/code_object/class_module.rb +969 -0
  19. data/rdoc-8.0.0/lib/rdoc/code_object/constant.rb +221 -0
  20. data/rdoc-8.0.0/lib/rdoc/code_object/context/section.rb +182 -0
  21. data/rdoc-8.0.0/lib/rdoc/code_object/context.rb +1238 -0
  22. data/rdoc-8.0.0/lib/rdoc/code_object/extend.rb +9 -0
  23. data/rdoc-8.0.0/lib/rdoc/code_object/include.rb +9 -0
  24. data/rdoc-8.0.0/lib/rdoc/code_object/method_attr.rb +417 -0
  25. data/rdoc-8.0.0/lib/rdoc/code_object/mixin.rb +123 -0
  26. data/rdoc-8.0.0/lib/rdoc/code_object/normal_class.rb +92 -0
  27. data/rdoc-8.0.0/lib/rdoc/code_object/normal_module.rb +73 -0
  28. data/rdoc-8.0.0/lib/rdoc/code_object/require.rb +51 -0
  29. data/rdoc-8.0.0/lib/rdoc/code_object/single_class.rb +30 -0
  30. data/rdoc-8.0.0/lib/rdoc/code_object/top_level.rb +286 -0
  31. data/rdoc-8.0.0/lib/rdoc/code_object.rb +393 -0
  32. data/rdoc-8.0.0/lib/rdoc/code_objects.rb +5 -0
  33. data/rdoc-8.0.0/lib/rdoc/comment.rb +353 -0
  34. data/rdoc-8.0.0/lib/rdoc/cross_reference.rb +215 -0
  35. data/rdoc-8.0.0/lib/rdoc/encoding.rb +120 -0
  36. data/rdoc-8.0.0/lib/rdoc/erb_partial.rb +18 -0
  37. data/rdoc-8.0.0/lib/rdoc/erbio.rb +37 -0
  38. data/rdoc-8.0.0/lib/rdoc/generator/aliki.rb +200 -0
  39. data/rdoc-8.0.0/lib/rdoc/generator/darkfish.rb +824 -0
  40. data/rdoc-8.0.0/lib/rdoc/generator/json_index.rb +284 -0
  41. data/rdoc-8.0.0/lib/rdoc/generator/markup.rb +196 -0
  42. data/rdoc-8.0.0/lib/rdoc/generator/pot/message_extractor.rb +68 -0
  43. data/rdoc-8.0.0/lib/rdoc/generator/pot/po.rb +84 -0
  44. data/rdoc-8.0.0/lib/rdoc/generator/pot/po_entry.rb +141 -0
  45. data/rdoc-8.0.0/lib/rdoc/generator/pot.rb +94 -0
  46. data/rdoc-8.0.0/lib/rdoc/generator/ri.rb +30 -0
  47. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/DESIGN.md +536 -0
  48. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_aside_toc.rhtml +8 -0
  49. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_footer.rhtml +23 -0
  50. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_head.rhtml +163 -0
  51. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_header.rhtml +56 -0
  52. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_icons.rhtml +208 -0
  53. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_ancestors.rhtml +16 -0
  54. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_classes.rhtml +15 -0
  55. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_extends.rhtml +27 -0
  56. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_includes.rhtml +27 -0
  57. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_installed.rhtml +16 -0
  58. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_methods.rhtml +41 -0
  59. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_pages.rhtml +67 -0
  60. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_search.rhtml +15 -0
  61. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_sections.rhtml +21 -0
  62. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/_sidebar_toggle.rhtml +3 -0
  63. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/class.rhtml +230 -0
  64. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/css/rdoc.css +2181 -0
  65. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/index.rhtml +22 -0
  66. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/aliki.js +513 -0
  67. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/bash_highlighter.js +167 -0
  68. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/c_highlighter.js +299 -0
  69. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/search_controller.js +129 -0
  70. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/search_navigation.js +105 -0
  71. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/search_ranker.js +239 -0
  72. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/js/theme-toggle.js +112 -0
  73. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/page.rhtml +18 -0
  74. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/servlet_not_found.rhtml +14 -0
  75. data/rdoc-8.0.0/lib/rdoc/generator/template/aliki/servlet_root.rhtml +65 -0
  76. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_footer.rhtml +5 -0
  77. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_head.rhtml +43 -0
  78. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +5 -0
  79. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +17 -0
  80. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +17 -0
  81. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +16 -0
  82. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +21 -0
  83. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_navigation.rhtml +11 -0
  84. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +32 -0
  85. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +6 -0
  86. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_search.rhtml +15 -0
  87. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +11 -0
  88. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +39 -0
  89. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/_sidebar_toggle.rhtml +3 -0
  90. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/class.rhtml +220 -0
  91. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/css/fonts.css +167 -0
  92. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/css/rdoc.css +701 -0
  93. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/Lato-Light.ttf +0 -0
  94. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/Lato-LightItalic.ttf +0 -0
  95. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/Lato-Regular.ttf +0 -0
  96. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/Lato-RegularItalic.ttf +0 -0
  97. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Bold.ttf +0 -0
  98. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/fonts/SourceCodePro-Regular.ttf +0 -0
  99. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/add.png +0 -0
  100. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/arrow_up.png +0 -0
  101. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/brick.png +0 -0
  102. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/brick_link.png +0 -0
  103. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/bug.png +0 -0
  104. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/bullet_black.png +0 -0
  105. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/bullet_toggle_minus.png +0 -0
  106. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/bullet_toggle_plus.png +0 -0
  107. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/date.png +0 -0
  108. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/delete.png +0 -0
  109. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/find.png +0 -0
  110. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/loadingAnimation.gif +0 -0
  111. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/macFFBgHack.png +0 -0
  112. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/package.png +0 -0
  113. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/page_green.png +0 -0
  114. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/page_white_text.png +0 -0
  115. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/page_white_width.png +0 -0
  116. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/plugin.png +0 -0
  117. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/ruby.png +0 -0
  118. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/tag_blue.png +0 -0
  119. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/tag_green.png +0 -0
  120. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/transparent.png +0 -0
  121. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/wrench.png +0 -0
  122. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/wrench_orange.png +0 -0
  123. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/images/zoom.png +0 -0
  124. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/index.rhtml +24 -0
  125. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/js/darkfish.js +140 -0
  126. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/js/search.js +120 -0
  127. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/page.rhtml +19 -0
  128. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +21 -0
  129. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +65 -0
  130. data/rdoc-8.0.0/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +72 -0
  131. data/rdoc-8.0.0/lib/rdoc/generator/template/json_index/js/navigation.js +105 -0
  132. data/rdoc-8.0.0/lib/rdoc/generator/template/json_index/js/searcher.js +271 -0
  133. data/rdoc-8.0.0/lib/rdoc/generator.rb +52 -0
  134. data/rdoc-8.0.0/lib/rdoc/i18n/locale.rb +102 -0
  135. data/rdoc-8.0.0/lib/rdoc/i18n/text.rb +126 -0
  136. data/rdoc-8.0.0/lib/rdoc/i18n.rb +10 -0
  137. data/rdoc-8.0.0/lib/rdoc/known_classes.rb +74 -0
  138. data/rdoc-8.0.0/lib/rdoc/markdown/entities.rb +2131 -0
  139. data/rdoc-8.0.0/lib/rdoc/markdown/literals.kpeg +21 -0
  140. data/rdoc-8.0.0/lib/rdoc/markdown/literals.rb +454 -0
  141. data/rdoc-8.0.0/lib/rdoc/markdown.kpeg +1315 -0
  142. data/rdoc-8.0.0/lib/rdoc/markdown.rb +16865 -0
  143. data/rdoc-8.0.0/lib/rdoc/markup/blank_line.rb +29 -0
  144. data/rdoc-8.0.0/lib/rdoc/markup/block_quote.rb +14 -0
  145. data/rdoc-8.0.0/lib/rdoc/markup/document.rb +164 -0
  146. data/rdoc-8.0.0/lib/rdoc/markup/element.rb +21 -0
  147. data/rdoc-8.0.0/lib/rdoc/markup/formatter.rb +285 -0
  148. data/rdoc-8.0.0/lib/rdoc/markup/hard_break.rb +34 -0
  149. data/rdoc-8.0.0/lib/rdoc/markup/heading.rb +170 -0
  150. data/rdoc-8.0.0/lib/rdoc/markup/include.rb +42 -0
  151. data/rdoc-8.0.0/lib/rdoc/markup/indented_paragraph.rb +47 -0
  152. data/rdoc-8.0.0/lib/rdoc/markup/inline_parser.rb +312 -0
  153. data/rdoc-8.0.0/lib/rdoc/markup/list.rb +101 -0
  154. data/rdoc-8.0.0/lib/rdoc/markup/list_item.rb +99 -0
  155. data/rdoc-8.0.0/lib/rdoc/markup/paragraph.rb +28 -0
  156. data/rdoc-8.0.0/lib/rdoc/markup/parser.rb +585 -0
  157. data/rdoc-8.0.0/lib/rdoc/markup/pre_process.rb +317 -0
  158. data/rdoc-8.0.0/lib/rdoc/markup/raw.rb +66 -0
  159. data/rdoc-8.0.0/lib/rdoc/markup/rule.rb +20 -0
  160. data/rdoc-8.0.0/lib/rdoc/markup/table.rb +64 -0
  161. data/rdoc-8.0.0/lib/rdoc/markup/to_ansi.rb +144 -0
  162. data/rdoc-8.0.0/lib/rdoc/markup/to_bs.rb +86 -0
  163. data/rdoc-8.0.0/lib/rdoc/markup/to_html.rb +682 -0
  164. data/rdoc-8.0.0/lib/rdoc/markup/to_html_crossref.rb +261 -0
  165. data/rdoc-8.0.0/lib/rdoc/markup/to_html_snippet.rb +287 -0
  166. data/rdoc-8.0.0/lib/rdoc/markup/to_joined_paragraph.rb +41 -0
  167. data/rdoc-8.0.0/lib/rdoc/markup/to_label.rb +84 -0
  168. data/rdoc-8.0.0/lib/rdoc/markup/to_markdown.rb +215 -0
  169. data/rdoc-8.0.0/lib/rdoc/markup/to_rdoc.rb +421 -0
  170. data/rdoc-8.0.0/lib/rdoc/markup/to_table_of_contents.rb +88 -0
  171. data/rdoc-8.0.0/lib/rdoc/markup/to_test.rb +77 -0
  172. data/rdoc-8.0.0/lib/rdoc/markup/to_tt_only.rb +107 -0
  173. data/rdoc-8.0.0/lib/rdoc/markup/verbatim.rb +83 -0
  174. data/rdoc-8.0.0/lib/rdoc/markup.rb +219 -0
  175. data/rdoc-8.0.0/lib/rdoc/options.rb +1412 -0
  176. data/rdoc-8.0.0/lib/rdoc/parser/c.rb +1227 -0
  177. data/rdoc-8.0.0/lib/rdoc/parser/changelog.rb +379 -0
  178. data/rdoc-8.0.0/lib/rdoc/parser/markdown.rb +22 -0
  179. data/rdoc-8.0.0/lib/rdoc/parser/rbs.rb +275 -0
  180. data/rdoc-8.0.0/lib/rdoc/parser/rd.rb +22 -0
  181. data/rdoc-8.0.0/lib/rdoc/parser/ruby.rb +1266 -0
  182. data/rdoc-8.0.0/lib/rdoc/parser/ruby_colorizer.rb +253 -0
  183. data/rdoc-8.0.0/lib/rdoc/parser/simple.rb +44 -0
  184. data/rdoc-8.0.0/lib/rdoc/parser/text.rb +11 -0
  185. data/rdoc-8.0.0/lib/rdoc/parser.rb +298 -0
  186. data/rdoc-8.0.0/lib/rdoc/rbs_helper.rb +186 -0
  187. data/rdoc-8.0.0/lib/rdoc/rd/block_parser.rb +1706 -0
  188. data/rdoc-8.0.0/lib/rdoc/rd/block_parser.ry +643 -0
  189. data/rdoc-8.0.0/lib/rdoc/rd/inline.rb +71 -0
  190. data/rdoc-8.0.0/lib/rdoc/rd/inline_parser.rb +1854 -0
  191. data/rdoc-8.0.0/lib/rdoc/rd/inline_parser.ry +593 -0
  192. data/rdoc-8.0.0/lib/rdoc/rd.rb +99 -0
  193. data/rdoc-8.0.0/lib/rdoc/rdoc.rb +724 -0
  194. data/rdoc-8.0.0/lib/rdoc/ri/driver.rb +1572 -0
  195. data/rdoc-8.0.0/lib/rdoc/ri/formatter.rb +6 -0
  196. data/rdoc-8.0.0/lib/rdoc/ri/paths.rb +171 -0
  197. data/rdoc-8.0.0/lib/rdoc/ri/servlet.rb +452 -0
  198. data/rdoc-8.0.0/lib/rdoc/ri/store.rb +6 -0
  199. data/rdoc-8.0.0/lib/rdoc/ri/task.rb +71 -0
  200. data/rdoc-8.0.0/lib/rdoc/ri.rb +21 -0
  201. data/rdoc-8.0.0/lib/rdoc/rubygems_hook.rb +327 -0
  202. data/rdoc-8.0.0/lib/rdoc/server.rb +460 -0
  203. data/rdoc-8.0.0/lib/rdoc/stats/normal.rb +58 -0
  204. data/rdoc-8.0.0/lib/rdoc/stats/quiet.rb +59 -0
  205. data/rdoc-8.0.0/lib/rdoc/stats/verbose.rb +44 -0
  206. data/rdoc-8.0.0/lib/rdoc/stats.rb +484 -0
  207. data/rdoc-8.0.0/lib/rdoc/store.rb +1205 -0
  208. data/rdoc-8.0.0/lib/rdoc/task.rb +355 -0
  209. data/rdoc-8.0.0/lib/rdoc/text.rb +244 -0
  210. data/rdoc-8.0.0/lib/rdoc/token_stream.rb +104 -0
  211. data/rdoc-8.0.0/lib/rdoc/tom_doc.rb +257 -0
  212. data/rdoc-8.0.0/lib/rdoc/version.rb +10 -0
  213. data/rdoc-8.0.0/lib/rdoc.rb +239 -0
  214. data/rdoc-8.0.0/lib/rubygems_plugin.rb +14 -0
  215. data/rdoc-8.0.0/man/ri.1 +249 -0
  216. data/rdoc-8.0.0/rdoc-logo.svg +43 -0
  217. data/rdoc-8.0.0/rdoc.gemspec +74 -0
  218. metadata +256 -0
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+ require_relative '../rdoc'
3
+
4
+ ##
5
+ # Namespace for the ri command line tool's implementation.
6
+ #
7
+ # See <tt>ri --help</tt> for details.
8
+
9
+ module RDoc::RI
10
+
11
+ ##
12
+ # Base RI error class
13
+
14
+ class Error < RDoc::Error; end
15
+
16
+ autoload :Driver, "#{__dir__}/ri/driver"
17
+ autoload :Paths, "#{__dir__}/ri/paths"
18
+ autoload :Servlet, "#{__dir__}/ri/servlet"
19
+ autoload :Store, "#{__dir__}/ri/store"
20
+
21
+ end
@@ -0,0 +1,327 @@
1
+ # frozen_string_literal: true
2
+ require 'rubygems/user_interaction'
3
+ require 'fileutils'
4
+ require_relative '../rdoc'
5
+
6
+ # We define the following two similar name classes in this file:
7
+ #
8
+ # - RDoc::RubyGemsHook
9
+ # - RDoc::RubygemsHook
10
+ #
11
+ # RDoc::RubyGemsHook is the main class that has real logic.
12
+ #
13
+ # RDoc::RubygemsHook is a class that is only for
14
+ # compatibility. RDoc::RubygemsHook is used by RubyGems directly. We
15
+ # can remove this when all maintained RubyGems remove
16
+ # `rubygems/rdoc.rb`.
17
+
18
+ class RDoc::RubyGemsHook
19
+
20
+ include Gem::UserInteraction
21
+ extend Gem::UserInteraction
22
+
23
+ @rdoc_version = nil
24
+ @specs = []
25
+
26
+ ##
27
+ # Force installation of documentation?
28
+
29
+ attr_accessor :force
30
+
31
+ ##
32
+ # Generate rdoc?
33
+
34
+ attr_accessor :generate_rdoc
35
+
36
+ ##
37
+ # Generate ri data?
38
+
39
+ attr_accessor :generate_ri
40
+
41
+ class << self
42
+
43
+ ##
44
+ # Loaded version of RDoc. Set by ::load_rdoc
45
+
46
+ attr_reader :rdoc_version
47
+
48
+ end
49
+
50
+ ##
51
+ # Post installs hook that generates documentation for each specification in
52
+ # +specs+
53
+
54
+ def self.generate(installer, specs)
55
+ start = Time.now
56
+ types = installer.document
57
+
58
+ generate_rdoc = types.include? 'rdoc'
59
+ generate_ri = types.include? 'ri'
60
+
61
+ specs.each do |spec|
62
+ new(spec, generate_rdoc, generate_ri).generate
63
+ end
64
+
65
+ return unless generate_rdoc or generate_ri
66
+
67
+ duration = (Time.now - start).to_i
68
+ names = specs.map(&:name).join ', '
69
+
70
+ say "Done installing documentation for #{names} after #{duration} seconds"
71
+ end
72
+
73
+ def self.remove(uninstaller)
74
+ new(uninstaller.spec).remove
75
+ end
76
+
77
+ ##
78
+ # Loads the RDoc generator
79
+
80
+ def self.load_rdoc
81
+ return if @rdoc_version
82
+
83
+ require_relative 'rdoc'
84
+
85
+ @rdoc_version = Gem::Version.new ::RDoc::VERSION
86
+ end
87
+
88
+ ##
89
+ # Creates a new documentation generator for +spec+. RDoc and ri data
90
+ # generation can be enabled or disabled through +generate_rdoc+ and
91
+ # +generate_ri+ respectively.
92
+ #
93
+ # Only +generate_ri+ is enabled by default.
94
+
95
+ def initialize(spec, generate_rdoc = false, generate_ri = true)
96
+ @doc_dir = spec.doc_dir
97
+ @force = false
98
+ @rdoc = nil
99
+ @spec = spec
100
+
101
+ @generate_rdoc = generate_rdoc
102
+ @generate_ri = generate_ri
103
+
104
+ @rdoc_dir = spec.doc_dir 'rdoc'
105
+ @ri_dir = spec.doc_dir 'ri'
106
+ end
107
+
108
+ ##
109
+ # Removes legacy rdoc arguments from +args+
110
+ #--
111
+ # TODO move to RDoc::Options
112
+
113
+ def delete_legacy_args(args)
114
+ args.delete '--inline-source'
115
+ args.delete '--promiscuous'
116
+ args.delete '-p'
117
+ args.delete '--one-file'
118
+ end
119
+
120
+ ##
121
+ # Generates documentation using the named +generator+ ("aliki" or "ri")
122
+ # and following the given +options+.
123
+ #
124
+ # Documentation will be generated into +destination+
125
+
126
+ def document(generator, options, destination)
127
+ generator_name = generator
128
+
129
+ options = options.dup
130
+ options.exclude ||= [] # TODO maybe move to RDoc::Options#finish
131
+ options.setup_generator generator
132
+ options.op_dir = destination
133
+ Dir.chdir @spec.full_gem_path do
134
+ options.finish
135
+ end
136
+
137
+ generator = options.generator.new @rdoc.store, options
138
+
139
+ @rdoc.options = options
140
+ @rdoc.generator = generator
141
+
142
+ say "Installing #{generator_name} documentation for #{@spec.full_name}"
143
+
144
+ FileUtils.mkdir_p options.op_dir
145
+
146
+ Dir.chdir options.op_dir do
147
+ begin
148
+ @rdoc.class.current = @rdoc
149
+ @rdoc.generator.generate
150
+ ensure
151
+ @rdoc.class.current = nil
152
+ end
153
+ end
154
+ end
155
+
156
+ ##
157
+ # Generates RDoc and ri data
158
+
159
+ def generate
160
+ return if @spec.default_gem?
161
+ return unless @generate_ri or @generate_rdoc
162
+
163
+ setup
164
+
165
+ options = nil
166
+
167
+ args = @spec.rdoc_options
168
+ args.concat @spec.source_paths
169
+ args.concat @spec.extra_rdoc_files
170
+
171
+ case config_args = Gem.configuration[:rdoc]
172
+ when String then
173
+ args = args.concat config_args.split(' ')
174
+ when Array then
175
+ args = args.concat config_args
176
+ end
177
+
178
+ delete_legacy_args args
179
+
180
+ Dir.chdir @spec.full_gem_path do
181
+ options = ::RDoc::Options.new
182
+ options.default_title = "#{@spec.full_name} Documentation"
183
+ options.parse args
184
+ options.quiet = !Gem.configuration.really_verbose
185
+ end
186
+
187
+ @rdoc = new_rdoc
188
+
189
+ say "Parsing documentation for #{@spec.full_name}"
190
+
191
+ Dir.chdir @spec.full_gem_path do
192
+ # RDoc::Options#finish must be called before parse_files.
193
+ # RDoc::Options#finish is also called after ri/aliki generator setup.
194
+ # We need to dup the options to avoid modifying it after finish is called.
195
+ parse_options = options.dup
196
+ parse_options.finish
197
+ @rdoc.options = parse_options
198
+ @rdoc.store = RDoc::Store.new(parse_options)
199
+ @rdoc.parse_files parse_options.files
200
+ end
201
+
202
+ document 'ri', options, @ri_dir if
203
+ @generate_ri and (@force or not File.exist? @ri_dir)
204
+
205
+ document 'aliki', options, @rdoc_dir if
206
+ @generate_rdoc and (@force or not File.exist? @rdoc_dir)
207
+ end
208
+
209
+ ##
210
+ # #new_rdoc creates a new RDoc instance. This method is provided only to
211
+ # make testing easier.
212
+
213
+ def new_rdoc # :nodoc:
214
+ ::RDoc::RDoc.new
215
+ end
216
+
217
+ ##
218
+ # Is rdoc documentation installed?
219
+
220
+ def rdoc_installed?
221
+ File.exist? @rdoc_dir
222
+ end
223
+
224
+ ##
225
+ # Removes generated RDoc and ri data
226
+
227
+ def remove
228
+ base_dir = @spec.base_dir
229
+
230
+ raise Gem::FilePermissionError, base_dir unless File.writable? base_dir
231
+
232
+ FileUtils.rm_rf @rdoc_dir
233
+ FileUtils.rm_rf @ri_dir
234
+ end
235
+
236
+ ##
237
+ # Is ri data installed?
238
+
239
+ def ri_installed?
240
+ File.exist? @ri_dir
241
+ end
242
+
243
+ ##
244
+ # Prepares the spec for documentation generation
245
+
246
+ def setup
247
+ self.class.load_rdoc
248
+
249
+ raise Gem::FilePermissionError, @doc_dir if
250
+ File.exist?(@doc_dir) and not File.writable?(@doc_dir)
251
+
252
+ FileUtils.mkdir_p @doc_dir unless File.exist? @doc_dir
253
+ end
254
+
255
+ end
256
+
257
+ module RDoc
258
+ # This class is referenced by RubyGems to create documents.
259
+ # All implementations are moved to the above RubyGemsHook.
260
+ #
261
+ # This class does nothing when this RDoc is installed as a normal gem
262
+ # or a bundled gem.
263
+ #
264
+ # This class does generate/remove documents for compatibility when
265
+ # this RDoc is installed as a default gem.
266
+ #
267
+ # We can remove this when all maintained RubyGems remove
268
+ # `rubygems/rdoc.rb`.
269
+ class RubygemsHook
270
+
271
+ attr_accessor :generate_rdoc, :generate_ri, :force
272
+
273
+ def self.default_gem?
274
+ !File.exist?(File.join(__dir__, "..", "rubygems_plugin.rb"))
275
+ end
276
+
277
+ def initialize(spec, generate_rdoc = false, generate_ri = true)
278
+ @spec = spec
279
+ @generate_rdoc = generate_rdoc
280
+ @generate_ri = generate_ri
281
+ @force = false
282
+ end
283
+
284
+ def generate
285
+ # Do nothing if this is NOT a default gem.
286
+ return unless self.class.default_gem?
287
+
288
+ # Generate document for compatibility if this is a default gem.
289
+ hook = RubyGemsHook.new(@spec, @generate_rdoc, @generate_ri)
290
+ hook.force = @force
291
+ hook.generate
292
+ end
293
+
294
+ def remove
295
+ # Do nothing if this is NOT a default gem.
296
+ return unless self.class.default_gem?
297
+
298
+ # Remove generated document for compatibility if this is a
299
+ # default gem.
300
+ RubyGemsHook.new(@spec).remove
301
+ end
302
+
303
+ def self.generation_hook(installer, specs)
304
+ # Do nothing if this is NOT a default gem.
305
+ return unless default_gem?
306
+
307
+ # Generate document for compatibility if this is a default gem.
308
+ RubyGemsHook.generate(installer, specs)
309
+ end
310
+
311
+ def self.load_rdoc
312
+ RubyGemsHook.load_rdoc
313
+ end
314
+
315
+ def self.rdoc_version
316
+ RubyGemsHook.rdoc_version
317
+ end
318
+
319
+ def rdoc_installed?
320
+ RubyGemsHook.new(@spec).rdoc_installed?
321
+ end
322
+
323
+ def ri_installed?
324
+ RubyGemsHook.new(@spec).ri_installed?
325
+ end
326
+ end
327
+ end