yard 0.9.18 → 0.9.19

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

Potentially problematic release.


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

Files changed (567) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +26 -26
  3. data/CHANGELOG.md +742 -728
  4. data/LEGAL +66 -66
  5. data/LICENSE +22 -22
  6. data/README.md +328 -328
  7. data/Rakefile +42 -53
  8. data/benchmarks/builtins_vs_eval.rb +24 -24
  9. data/benchmarks/concat_vs_join.rb +13 -13
  10. data/benchmarks/erb_vs_erubis.rb +54 -54
  11. data/benchmarks/format_args.rb +47 -47
  12. data/benchmarks/generation.rb +38 -38
  13. data/benchmarks/marshal_vs_dbm.rb +64 -64
  14. data/benchmarks/parsing.rb +46 -46
  15. data/benchmarks/pathname_vs_string.rb +50 -50
  16. data/benchmarks/rdoc_vs_yardoc.rb +11 -11
  17. data/benchmarks/registry_store_types.rb +49 -49
  18. data/benchmarks/ri_vs_yri.rb +19 -19
  19. data/benchmarks/ripper_parser.rb +13 -13
  20. data/benchmarks/splat_vs_flatten.rb +13 -13
  21. data/benchmarks/template_erb.rb +23 -23
  22. data/benchmarks/template_format.rb +7 -7
  23. data/benchmarks/template_profile.rb +18 -18
  24. data/benchmarks/yri_cache.rb +20 -20
  25. data/bin/yard +13 -13
  26. data/bin/yardoc +13 -13
  27. data/bin/yri +13 -13
  28. data/docs/CodeObjects.md +115 -115
  29. data/docs/GettingStarted.md +679 -679
  30. data/docs/Handlers.md +152 -152
  31. data/docs/Overview.md +61 -61
  32. data/docs/Parser.md +191 -191
  33. data/docs/Tags.md +283 -283
  34. data/docs/TagsArch.md +123 -123
  35. data/docs/Templates.md +496 -496
  36. data/docs/WhatsNew.md +1245 -1245
  37. data/docs/templates/default/fulldoc/html/full_list_tag.erb +8 -8
  38. data/docs/templates/default/fulldoc/html/setup.rb +6 -6
  39. data/docs/templates/default/layout/html/setup.rb +9 -9
  40. data/docs/templates/default/layout/html/tag_list.erb +11 -11
  41. data/docs/templates/default/yard_tags/html/list.erb +18 -18
  42. data/docs/templates/default/yard_tags/html/setup.rb +26 -26
  43. data/docs/templates/plugin.rb +70 -70
  44. data/lib/rubygems_plugin.rb +9 -9
  45. data/lib/yard.rb +69 -69
  46. data/lib/yard/autoload.rb +308 -303
  47. data/lib/yard/cli/command.rb +85 -85
  48. data/lib/yard/cli/command_parser.rb +93 -93
  49. data/lib/yard/cli/config.rb +198 -198
  50. data/lib/yard/cli/diff.rb +270 -270
  51. data/lib/yard/cli/display.rb +69 -69
  52. data/lib/yard/cli/gems.rb +84 -84
  53. data/lib/yard/cli/graph.rb +125 -125
  54. data/lib/yard/cli/help.rb +20 -20
  55. data/lib/yard/cli/i18n.rb +70 -70
  56. data/lib/yard/cli/list.rb +23 -23
  57. data/lib/yard/cli/markup_types.rb +32 -32
  58. data/lib/yard/cli/server.rb +257 -257
  59. data/lib/yard/cli/stats.rb +231 -231
  60. data/lib/yard/cli/yardoc.rb +789 -788
  61. data/lib/yard/cli/yardopts_command.rb +110 -110
  62. data/lib/yard/cli/yri.rb +215 -215
  63. data/lib/yard/code_objects/base.rb +615 -615
  64. data/lib/yard/code_objects/class_object.rb +146 -146
  65. data/lib/yard/code_objects/class_variable_object.rb +11 -11
  66. data/lib/yard/code_objects/constant_object.rb +16 -16
  67. data/lib/yard/code_objects/extended_method_object.rb +24 -24
  68. data/lib/yard/code_objects/extra_file_object.rb +134 -131
  69. data/lib/yard/code_objects/macro_object.rb +172 -172
  70. data/lib/yard/code_objects/method_object.rb +196 -196
  71. data/lib/yard/code_objects/module_object.rb +21 -21
  72. data/lib/yard/code_objects/namespace_mapper.rb +114 -114
  73. data/lib/yard/code_objects/namespace_object.rb +200 -200
  74. data/lib/yard/code_objects/proxy.rb +240 -240
  75. data/lib/yard/code_objects/root_object.rb +19 -19
  76. data/lib/yard/config.rb +270 -270
  77. data/lib/yard/core_ext/array.rb +16 -16
  78. data/lib/yard/core_ext/file.rb +69 -69
  79. data/lib/yard/core_ext/hash.rb +16 -16
  80. data/lib/yard/core_ext/insertion.rb +63 -63
  81. data/lib/yard/core_ext/module.rb +11 -20
  82. data/lib/yard/core_ext/string.rb +68 -68
  83. data/lib/yard/core_ext/symbol_hash.rb +75 -75
  84. data/lib/yard/docstring.rb +386 -386
  85. data/lib/yard/docstring_parser.rb +345 -345
  86. data/lib/yard/gem_index.rb +29 -29
  87. data/lib/yard/globals.rb +22 -22
  88. data/lib/yard/handlers/base.rb +595 -595
  89. data/lib/yard/handlers/c/alias_handler.rb +16 -16
  90. data/lib/yard/handlers/c/attribute_handler.rb +13 -13
  91. data/lib/yard/handlers/c/base.rb +129 -129
  92. data/lib/yard/handlers/c/class_handler.rb +27 -27
  93. data/lib/yard/handlers/c/constant_handler.rb +13 -13
  94. data/lib/yard/handlers/c/handler_methods.rb +212 -211
  95. data/lib/yard/handlers/c/init_handler.rb +20 -20
  96. data/lib/yard/handlers/c/method_handler.rb +45 -45
  97. data/lib/yard/handlers/c/mixin_handler.rb +21 -21
  98. data/lib/yard/handlers/c/module_handler.rb +17 -17
  99. data/lib/yard/handlers/c/override_comment_handler.rb +31 -31
  100. data/lib/yard/handlers/c/path_handler.rb +11 -11
  101. data/lib/yard/handlers/c/struct_handler.rb +13 -13
  102. data/lib/yard/handlers/c/symbol_handler.rb +8 -8
  103. data/lib/yard/handlers/common/method_handler.rb +19 -0
  104. data/lib/yard/handlers/processor.rb +200 -200
  105. data/lib/yard/handlers/ruby/alias_handler.rb +44 -44
  106. data/lib/yard/handlers/ruby/attribute_handler.rb +87 -87
  107. data/lib/yard/handlers/ruby/base.rb +165 -165
  108. data/lib/yard/handlers/ruby/class_condition_handler.rb +92 -92
  109. data/lib/yard/handlers/ruby/class_handler.rb +119 -119
  110. data/lib/yard/handlers/ruby/class_variable_handler.rb +17 -17
  111. data/lib/yard/handlers/ruby/comment_handler.rb +10 -10
  112. data/lib/yard/handlers/ruby/constant_handler.rb +59 -59
  113. data/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -123
  114. data/lib/yard/handlers/ruby/dsl_handler.rb +15 -15
  115. data/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -96
  116. data/lib/yard/handlers/ruby/exception_handler.rb +27 -27
  117. data/lib/yard/handlers/ruby/extend_handler.rb +22 -22
  118. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -37
  119. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -65
  120. data/lib/yard/handlers/ruby/legacy/base.rb +245 -245
  121. data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -83
  122. data/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -113
  123. data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -15
  124. data/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -10
  125. data/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -29
  126. data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -17
  127. data/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -13
  128. data/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -21
  129. data/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -90
  130. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -39
  131. data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -19
  132. data/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -12
  133. data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -22
  134. data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -22
  135. data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -17
  136. data/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -29
  137. data/lib/yard/handlers/ruby/method_condition_handler.rb +9 -9
  138. data/lib/yard/handlers/ruby/method_handler.rb +114 -118
  139. data/lib/yard/handlers/ruby/mixin_handler.rb +37 -37
  140. data/lib/yard/handlers/ruby/module_function_handler.rb +27 -27
  141. data/lib/yard/handlers/ruby/module_handler.rb +12 -12
  142. data/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -14
  143. data/lib/yard/handlers/ruby/private_constant_handler.rb +43 -43
  144. data/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -14
  145. data/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -143
  146. data/lib/yard/handlers/ruby/visibility_handler.rb +22 -22
  147. data/lib/yard/handlers/ruby/yield_handler.rb +31 -31
  148. data/lib/yard/i18n/locale.rb +67 -67
  149. data/lib/yard/i18n/message.rb +57 -57
  150. data/lib/yard/i18n/messages.rb +56 -56
  151. data/lib/yard/i18n/po_parser.rb +61 -61
  152. data/lib/yard/i18n/pot_generator.rb +290 -290
  153. data/lib/yard/i18n/text.rb +173 -173
  154. data/lib/yard/logging.rb +205 -205
  155. data/lib/yard/options.rb +217 -217
  156. data/lib/yard/parser/base.rb +57 -57
  157. data/lib/yard/parser/c/c_parser.rb +235 -235
  158. data/lib/yard/parser/c/comment_parser.rb +134 -134
  159. data/lib/yard/parser/c/statement.rb +64 -64
  160. data/lib/yard/parser/ruby/ast_node.rb +540 -540
  161. data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1354 -1354
  162. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -32
  163. data/lib/yard/parser/ruby/legacy/statement.rb +66 -66
  164. data/lib/yard/parser/ruby/legacy/statement_list.rb +394 -394
  165. data/lib/yard/parser/ruby/legacy/token_list.rb +74 -74
  166. data/lib/yard/parser/ruby/ruby_parser.rb +687 -687
  167. data/lib/yard/parser/ruby/token_resolver.rb +156 -156
  168. data/lib/yard/parser/source_parser.rb +526 -526
  169. data/lib/yard/rake/yardoc_task.rb +81 -81
  170. data/lib/yard/registry.rb +439 -439
  171. data/lib/yard/registry_resolver.rb +189 -189
  172. data/lib/yard/registry_store.rb +337 -337
  173. data/lib/yard/rubygems/backports.rb +10 -10
  174. data/lib/yard/rubygems/backports/LICENSE.txt +57 -57
  175. data/lib/yard/rubygems/backports/MIT.txt +20 -20
  176. data/lib/yard/rubygems/backports/gem.rb +10 -10
  177. data/lib/yard/rubygems/backports/source_index.rb +365 -365
  178. data/lib/yard/rubygems/doc_manager.rb +90 -90
  179. data/lib/yard/rubygems/hook.rb +197 -197
  180. data/lib/yard/rubygems/specification.rb +50 -50
  181. data/lib/yard/serializers/base.rb +83 -83
  182. data/lib/yard/serializers/file_system_serializer.rb +123 -123
  183. data/lib/yard/serializers/process_serializer.rb +24 -24
  184. data/lib/yard/serializers/stdout_serializer.rb +34 -34
  185. data/lib/yard/serializers/yardoc_serializer.rb +152 -152
  186. data/lib/yard/server.rb +13 -13
  187. data/lib/yard/server/adapter.rb +100 -100
  188. data/lib/yard/server/commands/base.rb +209 -209
  189. data/lib/yard/server/commands/display_file_command.rb +29 -29
  190. data/lib/yard/server/commands/display_object_command.rb +65 -65
  191. data/lib/yard/server/commands/frames_command.rb +16 -16
  192. data/lib/yard/server/commands/library_command.rb +187 -187
  193. data/lib/yard/server/commands/library_index_command.rb +28 -28
  194. data/lib/yard/server/commands/list_command.rb +25 -25
  195. data/lib/yard/server/commands/root_request_command.rb +15 -15
  196. data/lib/yard/server/commands/search_command.rb +79 -79
  197. data/lib/yard/server/commands/static_file_command.rb +23 -23
  198. data/lib/yard/server/commands/static_file_helpers.rb +62 -62
  199. data/lib/yard/server/doc_server_helper.rb +91 -91
  200. data/lib/yard/server/doc_server_serializer.rb +39 -39
  201. data/lib/yard/server/library_version.rb +277 -277
  202. data/lib/yard/server/rack_adapter.rb +89 -89
  203. data/lib/yard/server/router.rb +187 -187
  204. data/lib/yard/server/static_caching.rb +46 -46
  205. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -127
  206. data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +11 -11
  207. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -37
  208. data/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -7
  209. data/lib/yard/server/templates/default/layout/html/setup.rb +8 -8
  210. data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -4
  211. data/lib/yard/server/templates/default/method_details/html/setup.rb +5 -5
  212. data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -8
  213. data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -14
  214. data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -13
  215. data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -6
  216. data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -2
  217. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -52
  218. data/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -4
  219. data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -18
  220. data/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -9
  221. data/lib/yard/server/webrick_adapter.rb +45 -45
  222. data/lib/yard/tags/default_factory.rb +191 -191
  223. data/lib/yard/tags/default_tag.rb +13 -13
  224. data/lib/yard/tags/directives.rb +616 -616
  225. data/lib/yard/tags/library.rb +633 -633
  226. data/lib/yard/tags/option_tag.rb +13 -13
  227. data/lib/yard/tags/overload_tag.rb +71 -71
  228. data/lib/yard/tags/ref_tag.rb +8 -8
  229. data/lib/yard/tags/ref_tag_list.rb +28 -28
  230. data/lib/yard/tags/tag.rb +71 -71
  231. data/lib/yard/tags/tag_format_error.rb +7 -7
  232. data/lib/yard/tags/types_explainer.rb +162 -162
  233. data/lib/yard/templates/engine.rb +186 -186
  234. data/lib/yard/templates/erb_cache.rb +23 -23
  235. data/lib/yard/templates/helpers/base_helper.rb +215 -215
  236. data/lib/yard/templates/helpers/filter_helper.rb +27 -27
  237. data/lib/yard/templates/helpers/html_helper.rb +646 -646
  238. data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -78
  239. data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -23
  240. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +109 -109
  241. data/lib/yard/templates/helpers/markup_helper.rb +172 -172
  242. data/lib/yard/templates/helpers/method_helper.rb +75 -75
  243. data/lib/yard/templates/helpers/module_helper.rb +21 -21
  244. data/lib/yard/templates/helpers/text_helper.rb +112 -112
  245. data/lib/yard/templates/helpers/uml_helper.rb +47 -47
  246. data/lib/yard/templates/section.rb +105 -105
  247. data/lib/yard/templates/template.rb +418 -418
  248. data/lib/yard/templates/template_options.rb +92 -92
  249. data/lib/yard/verifier.rb +151 -151
  250. data/lib/yard/version.rb +6 -6
  251. data/spec/cli/command_parser_spec.rb +43 -43
  252. data/spec/cli/command_spec.rb +36 -36
  253. data/spec/cli/config_spec.rb +148 -148
  254. data/spec/cli/diff_spec.rb +254 -254
  255. data/spec/cli/display_spec.rb +30 -30
  256. data/spec/cli/gems_spec.rb +81 -81
  257. data/spec/cli/graph_spec.rb +18 -18
  258. data/spec/cli/help_spec.rb +22 -22
  259. data/spec/cli/i18n_spec.rb +107 -107
  260. data/spec/cli/list_spec.rb +8 -8
  261. data/spec/cli/markup_types_spec.rb +22 -22
  262. data/spec/cli/server_spec.rb +324 -324
  263. data/spec/cli/stats_spec.rb +96 -96
  264. data/spec/cli/yard_on_yard_spec.rb +38 -38
  265. data/spec/cli/yardoc_spec.rb +896 -862
  266. data/spec/cli/yri_spec.rb +101 -101
  267. data/spec/code_objects/base_spec.rb +470 -470
  268. data/spec/code_objects/class_object_spec.rb +226 -226
  269. data/spec/code_objects/code_object_list_spec.rb +36 -36
  270. data/spec/code_objects/constants_spec.rb +116 -116
  271. data/spec/code_objects/extra_file_object_spec.rb +160 -160
  272. data/spec/code_objects/macro_object_spec.rb +150 -150
  273. data/spec/code_objects/method_object_spec.rb +184 -184
  274. data/spec/code_objects/module_object_spec.rb +142 -142
  275. data/spec/code_objects/namespace_object_spec.rb +171 -171
  276. data/spec/code_objects/proxy_spec.rb +141 -141
  277. data/spec/code_objects/spec_helper.rb +3 -3
  278. data/spec/config_spec.rb +171 -171
  279. data/spec/core_ext/array_spec.rb +13 -13
  280. data/spec/core_ext/file_spec.rb +72 -72
  281. data/spec/core_ext/hash_spec.rb +14 -14
  282. data/spec/core_ext/insertion_spec.rb +37 -37
  283. data/spec/core_ext/module_spec.rb +9 -15
  284. data/spec/core_ext/string_spec.rb +42 -42
  285. data/spec/core_ext/symbol_hash_spec.rb +89 -89
  286. data/spec/docstring_parser_spec.rb +280 -280
  287. data/spec/docstring_spec.rb +373 -373
  288. data/spec/examples.txt +1883 -1875
  289. data/spec/handlers/alias_handler_spec.rb +82 -82
  290. data/spec/handlers/attribute_handler_spec.rb +96 -96
  291. data/spec/handlers/base_spec.rb +216 -216
  292. data/spec/handlers/c/alias_handler_spec.rb +34 -34
  293. data/spec/handlers/c/attribute_handler_spec.rb +41 -41
  294. data/spec/handlers/c/class_handler_spec.rb +78 -78
  295. data/spec/handlers/c/constant_handler_spec.rb +71 -71
  296. data/spec/handlers/c/init_handler_spec.rb +48 -48
  297. data/spec/handlers/c/method_handler_spec.rb +327 -325
  298. data/spec/handlers/c/mixin_handler_spec.rb +44 -44
  299. data/spec/handlers/c/module_handler_spec.rb +71 -71
  300. data/spec/handlers/c/override_comment_handler_spec.rb +47 -47
  301. data/spec/handlers/c/path_handler_spec.rb +36 -36
  302. data/spec/handlers/c/spec_helper.rb +23 -23
  303. data/spec/handlers/c/struct_handler_spec.rb +16 -16
  304. data/spec/handlers/class_condition_handler_spec.rb +87 -87
  305. data/spec/handlers/class_handler_spec.rb +247 -247
  306. data/spec/handlers/class_method_handler_shared_examples.rb +133 -133
  307. data/spec/handlers/class_variable_handler_spec.rb +12 -12
  308. data/spec/handlers/constant_handler_spec.rb +112 -112
  309. data/spec/handlers/decorator_handler_methods_spec.rb +393 -393
  310. data/spec/handlers/dsl_handler_spec.rb +219 -219
  311. data/spec/handlers/examples/alias_handler_001.rb.txt +45 -45
  312. data/spec/handlers/examples/attribute_handler_001.rb.txt +31 -31
  313. data/spec/handlers/examples/class_condition_handler_001.rb.txt +68 -68
  314. data/spec/handlers/examples/class_handler_001.rb.txt +120 -120
  315. data/spec/handlers/examples/class_variable_handler_001.rb.txt +9 -9
  316. data/spec/handlers/examples/constant_handler_001.rb.txt +35 -35
  317. data/spec/handlers/examples/dsl_handler_001.rb.txt +154 -154
  318. data/spec/handlers/examples/exception_handler_001.rb.txt +58 -58
  319. data/spec/handlers/examples/extend_handler_001.rb.txt +15 -15
  320. data/spec/handlers/examples/method_condition_handler_001.rb.txt +9 -9
  321. data/spec/handlers/examples/method_handler_001.rb.txt +128 -128
  322. data/spec/handlers/examples/mixin_handler_001.rb.txt +37 -37
  323. data/spec/handlers/examples/module_handler_001.rb.txt +29 -29
  324. data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -8
  325. data/spec/handlers/examples/process_handler_001.rb.txt +11 -11
  326. data/spec/handlers/examples/visibility_handler_001.rb.txt +35 -35
  327. data/spec/handlers/examples/yield_handler_001.rb.txt +54 -54
  328. data/spec/handlers/exception_handler_spec.rb +49 -49
  329. data/spec/handlers/extend_handler_spec.rb +24 -24
  330. data/spec/handlers/legacy_base_spec.rb +128 -128
  331. data/spec/handlers/method_condition_handler_spec.rb +15 -15
  332. data/spec/handlers/method_handler_spec.rb +190 -190
  333. data/spec/handlers/mixin_handler_spec.rb +56 -56
  334. data/spec/handlers/module_function_handler_spec.rb +106 -106
  335. data/spec/handlers/module_handler_spec.rb +35 -35
  336. data/spec/handlers/private_class_method_handler_spec.rb +11 -11
  337. data/spec/handlers/private_constant_handler_spec.rb +25 -25
  338. data/spec/handlers/processor_spec.rb +35 -35
  339. data/spec/handlers/public_class_method_handler_spec.rb +11 -11
  340. data/spec/handlers/ruby/base_spec.rb +95 -95
  341. data/spec/handlers/ruby/legacy/base_spec.rb +84 -84
  342. data/spec/handlers/spec_helper.rb +33 -33
  343. data/spec/handlers/visibility_handler_spec.rb +44 -44
  344. data/spec/handlers/yield_handler_spec.rb +52 -52
  345. data/spec/i18n/locale_spec.rb +81 -81
  346. data/spec/i18n/message_spec.rb +52 -52
  347. data/spec/i18n/messages_spec.rb +67 -67
  348. data/spec/i18n/pot_generator_spec.rb +295 -295
  349. data/spec/i18n/text_spec.rb +184 -184
  350. data/spec/logging_spec.rb +44 -44
  351. data/spec/options_spec.rb +171 -171
  352. data/spec/parser/base_spec.rb +24 -24
  353. data/spec/parser/c_parser_spec.rb +236 -236
  354. data/spec/parser/examples/array.c.txt +6267 -6267
  355. data/spec/parser/examples/example1.rb.txt +7 -7
  356. data/spec/parser/examples/extrafile.c.txt +8 -8
  357. data/spec/parser/examples/file.c.txt +28 -28
  358. data/spec/parser/examples/multifile.c.txt +22 -22
  359. data/spec/parser/examples/namespace.cpp.txt +68 -68
  360. data/spec/parser/examples/override.c.txt +424 -424
  361. data/spec/parser/examples/parse_in_order_001.rb.txt +2 -2
  362. data/spec/parser/examples/parse_in_order_002.rb.txt +1 -1
  363. data/spec/parser/examples/tag_handler_001.rb.txt +7 -7
  364. data/spec/parser/ruby/ast_node_spec.rb +33 -33
  365. data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -299
  366. data/spec/parser/ruby/legacy/token_list_spec.rb +79 -79
  367. data/spec/parser/ruby/ruby_parser_spec.rb +508 -508
  368. data/spec/parser/ruby/token_resolver_spec.rb +165 -165
  369. data/spec/parser/source_parser_spec.rb +727 -727
  370. data/spec/parser/tag_parsing_spec.rb +17 -17
  371. data/spec/rake/yardoc_task_spec.rb +118 -118
  372. data/spec/registry_spec.rb +463 -463
  373. data/spec/registry_store_spec.rb +316 -316
  374. data/spec/rubygems/doc_manager_spec.rb +112 -112
  375. data/spec/serializers/data/serialized_yardoc/checksums +1 -1
  376. data/spec/serializers/file_system_serializer_spec.rb +145 -145
  377. data/spec/serializers/spec_helper.rb +2 -2
  378. data/spec/serializers/yardoc_serializer_spec.rb +78 -78
  379. data/spec/server/adapter_spec.rb +39 -39
  380. data/spec/server/commands/base_spec.rb +91 -91
  381. data/spec/server/commands/library_command_spec.rb +39 -39
  382. data/spec/server/doc_server_helper_spec.rb +72 -72
  383. data/spec/server/doc_server_serializer_spec.rb +60 -60
  384. data/spec/server/rack_adapter_spec.rb +21 -21
  385. data/spec/server/router_spec.rb +123 -123
  386. data/spec/server/spec_helper.rb +22 -22
  387. data/spec/server/static_caching_spec.rb +47 -47
  388. data/spec/server/webrick_servlet_spec.rb +20 -20
  389. data/spec/server_spec.rb +19 -19
  390. data/spec/spec_helper.rb +212 -212
  391. data/spec/tags/default_factory_spec.rb +168 -168
  392. data/spec/tags/default_tag_spec.rb +11 -11
  393. data/spec/tags/directives_spec.rb +463 -463
  394. data/spec/tags/library_spec.rb +48 -48
  395. data/spec/tags/overload_tag_spec.rb +53 -53
  396. data/spec/tags/ref_tag_list_spec.rb +53 -53
  397. data/spec/tags/types_explainer_spec.rb +203 -203
  398. data/spec/templates/class_spec.rb +45 -45
  399. data/spec/templates/constant_spec.rb +41 -41
  400. data/spec/templates/engine_spec.rb +131 -131
  401. data/spec/templates/examples/class001.html +308 -308
  402. data/spec/templates/examples/class001.txt +36 -36
  403. data/spec/templates/examples/class002.html +39 -39
  404. data/spec/templates/examples/constant001.txt +24 -24
  405. data/spec/templates/examples/constant002.txt +6 -6
  406. data/spec/templates/examples/constant003.txt +10 -10
  407. data/spec/templates/examples/method001.html +137 -137
  408. data/spec/templates/examples/method001.txt +35 -35
  409. data/spec/templates/examples/method002.html +91 -91
  410. data/spec/templates/examples/method002.txt +20 -20
  411. data/spec/templates/examples/method003.html +165 -165
  412. data/spec/templates/examples/method003.txt +45 -45
  413. data/spec/templates/examples/method004.html +48 -48
  414. data/spec/templates/examples/method004.txt +10 -10
  415. data/spec/templates/examples/method005.html +105 -105
  416. data/spec/templates/examples/method005.txt +33 -33
  417. data/spec/templates/examples/method006.html +107 -107
  418. data/spec/templates/examples/method006.txt +20 -20
  419. data/spec/templates/examples/module001.dot +33 -33
  420. data/spec/templates/examples/module001.html +833 -833
  421. data/spec/templates/examples/module001.txt +33 -33
  422. data/spec/templates/examples/module002.html +341 -341
  423. data/spec/templates/examples/module003.html +202 -202
  424. data/spec/templates/examples/module004.html +394 -394
  425. data/spec/templates/examples/module005.html +81 -81
  426. data/spec/templates/examples/tag001.txt +82 -82
  427. data/spec/templates/helpers/base_helper_spec.rb +171 -171
  428. data/spec/templates/helpers/html_helper_spec.rb +687 -668
  429. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +65 -65
  430. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +84 -84
  431. data/spec/templates/helpers/markup_helper_spec.rb +136 -136
  432. data/spec/templates/helpers/method_helper_spec.rb +107 -107
  433. data/spec/templates/helpers/module_helper_spec.rb +35 -35
  434. data/spec/templates/helpers/shared_signature_examples.rb +126 -126
  435. data/spec/templates/helpers/text_helper_spec.rb +65 -65
  436. data/spec/templates/method_spec.rb +118 -118
  437. data/spec/templates/module_spec.rb +203 -203
  438. data/spec/templates/onefile_spec.rb +66 -66
  439. data/spec/templates/section_spec.rb +144 -144
  440. data/spec/templates/spec_helper.rb +76 -76
  441. data/spec/templates/tag_spec.rb +52 -52
  442. data/spec/templates/template_spec.rb +410 -410
  443. data/spec/verifier_spec.rb +106 -106
  444. data/templates/default/class/dot/setup.rb +7 -7
  445. data/templates/default/class/dot/superklass.erb +2 -2
  446. data/templates/default/class/html/constructor_details.erb +8 -8
  447. data/templates/default/class/html/setup.rb +2 -2
  448. data/templates/default/class/html/subclasses.erb +4 -4
  449. data/templates/default/class/setup.rb +36 -36
  450. data/templates/default/class/text/setup.rb +12 -12
  451. data/templates/default/class/text/subclasses.erb +5 -5
  452. data/templates/default/constant/text/header.erb +11 -11
  453. data/templates/default/constant/text/setup.rb +4 -4
  454. data/templates/default/docstring/html/abstract.erb +4 -4
  455. data/templates/default/docstring/html/deprecated.erb +1 -1
  456. data/templates/default/docstring/html/index.erb +5 -5
  457. data/templates/default/docstring/html/note.erb +6 -6
  458. data/templates/default/docstring/html/private.erb +4 -4
  459. data/templates/default/docstring/html/text.erb +1 -1
  460. data/templates/default/docstring/html/todo.erb +6 -6
  461. data/templates/default/docstring/setup.rb +52 -52
  462. data/templates/default/docstring/text/abstract.erb +2 -2
  463. data/templates/default/docstring/text/deprecated.erb +2 -2
  464. data/templates/default/docstring/text/index.erb +2 -2
  465. data/templates/default/docstring/text/note.erb +3 -3
  466. data/templates/default/docstring/text/private.erb +2 -2
  467. data/templates/default/docstring/text/text.erb +1 -1
  468. data/templates/default/docstring/text/todo.erb +3 -3
  469. data/templates/default/fulldoc/html/css/full_list.css +58 -58
  470. data/templates/default/fulldoc/html/css/style.css +496 -496
  471. data/templates/default/fulldoc/html/frames.erb +17 -17
  472. data/templates/default/fulldoc/html/full_list.erb +37 -37
  473. data/templates/default/fulldoc/html/full_list_class.erb +2 -2
  474. data/templates/default/fulldoc/html/full_list_file.erb +7 -7
  475. data/templates/default/fulldoc/html/full_list_method.erb +10 -10
  476. data/templates/default/fulldoc/html/js/app.js +303 -292
  477. data/templates/default/fulldoc/html/js/full_list.js +216 -216
  478. data/templates/default/fulldoc/html/js/jquery.js +3 -3
  479. data/templates/default/fulldoc/html/setup.rb +241 -241
  480. data/templates/default/layout/dot/header.erb +5 -5
  481. data/templates/default/layout/dot/setup.rb +15 -15
  482. data/templates/default/layout/html/breadcrumb.erb +11 -11
  483. data/templates/default/layout/html/files.erb +11 -11
  484. data/templates/default/layout/html/footer.erb +5 -5
  485. data/templates/default/layout/html/headers.erb +15 -15
  486. data/templates/default/layout/html/index.erb +2 -2
  487. data/templates/default/layout/html/layout.erb +23 -23
  488. data/templates/default/layout/html/listing.erb +4 -4
  489. data/templates/default/layout/html/objects.erb +32 -32
  490. data/templates/default/layout/html/script_setup.erb +4 -4
  491. data/templates/default/layout/html/search.erb +12 -12
  492. data/templates/default/layout/html/setup.rb +89 -89
  493. data/templates/default/method/html/header.erb +16 -16
  494. data/templates/default/method/setup.rb +4 -4
  495. data/templates/default/method_details/html/header.erb +2 -2
  496. data/templates/default/method_details/html/method_signature.erb +24 -24
  497. data/templates/default/method_details/html/source.erb +9 -9
  498. data/templates/default/method_details/setup.rb +11 -11
  499. data/templates/default/method_details/text/header.erb +10 -10
  500. data/templates/default/method_details/text/method_signature.erb +12 -12
  501. data/templates/default/method_details/text/setup.rb +11 -11
  502. data/templates/default/module/dot/child.erb +1 -1
  503. data/templates/default/module/dot/dependencies.erb +2 -2
  504. data/templates/default/module/dot/header.erb +6 -6
  505. data/templates/default/module/dot/info.erb +13 -13
  506. data/templates/default/module/dot/setup.rb +15 -15
  507. data/templates/default/module/html/attribute_details.erb +10 -10
  508. data/templates/default/module/html/attribute_summary.erb +8 -8
  509. data/templates/default/module/html/box_info.erb +43 -43
  510. data/templates/default/module/html/children.erb +8 -8
  511. data/templates/default/module/html/constant_summary.erb +17 -17
  512. data/templates/default/module/html/defines.erb +2 -2
  513. data/templates/default/module/html/header.erb +5 -5
  514. data/templates/default/module/html/inherited_attributes.erb +14 -14
  515. data/templates/default/module/html/inherited_constants.erb +8 -8
  516. data/templates/default/module/html/inherited_methods.erb +18 -18
  517. data/templates/default/module/html/item_summary.erb +40 -40
  518. data/templates/default/module/html/method_details_list.erb +9 -9
  519. data/templates/default/module/html/method_summary.erb +13 -13
  520. data/templates/default/module/html/methodmissing.erb +12 -12
  521. data/templates/default/module/setup.rb +167 -167
  522. data/templates/default/module/text/children.erb +9 -9
  523. data/templates/default/module/text/class_meths_list.erb +7 -7
  524. data/templates/default/module/text/extends.erb +7 -7
  525. data/templates/default/module/text/header.erb +7 -7
  526. data/templates/default/module/text/includes.erb +7 -7
  527. data/templates/default/module/text/instance_meths_list.erb +7 -7
  528. data/templates/default/module/text/setup.rb +13 -13
  529. data/templates/default/onefile/html/files.erb +4 -4
  530. data/templates/default/onefile/html/headers.erb +6 -6
  531. data/templates/default/onefile/html/layout.erb +17 -17
  532. data/templates/default/onefile/html/readme.erb +2 -2
  533. data/templates/default/onefile/html/setup.rb +62 -62
  534. data/templates/default/root/dot/child.erb +2 -2
  535. data/templates/default/root/dot/setup.rb +6 -6
  536. data/templates/default/root/html/setup.rb +2 -2
  537. data/templates/default/tags/html/example.erb +10 -10
  538. data/templates/default/tags/html/index.erb +2 -2
  539. data/templates/default/tags/html/option.erb +24 -24
  540. data/templates/default/tags/html/overload.erb +13 -13
  541. data/templates/default/tags/html/see.erb +7 -7
  542. data/templates/default/tags/html/tag.erb +20 -20
  543. data/templates/default/tags/setup.rb +57 -57
  544. data/templates/default/tags/text/example.erb +12 -12
  545. data/templates/default/tags/text/index.erb +1 -1
  546. data/templates/default/tags/text/option.erb +20 -20
  547. data/templates/default/tags/text/overload.erb +19 -19
  548. data/templates/default/tags/text/see.erb +11 -11
  549. data/templates/default/tags/text/tag.erb +13 -13
  550. data/templates/guide/class/html/setup.rb +2 -2
  551. data/templates/guide/docstring/html/setup.rb +2 -2
  552. data/templates/guide/fulldoc/html/css/style.css +108 -108
  553. data/templates/guide/fulldoc/html/js/app.js +33 -33
  554. data/templates/guide/fulldoc/html/setup.rb +74 -74
  555. data/templates/guide/layout/html/layout.erb +81 -81
  556. data/templates/guide/layout/html/setup.rb +25 -25
  557. data/templates/guide/method/html/header.erb +17 -17
  558. data/templates/guide/method/html/setup.rb +22 -22
  559. data/templates/guide/module/html/header.erb +6 -6
  560. data/templates/guide/module/html/method_list.erb +4 -4
  561. data/templates/guide/module/html/setup.rb +27 -27
  562. data/templates/guide/onefile/html/files.erb +4 -4
  563. data/templates/guide/onefile/html/setup.rb +6 -6
  564. data/templates/guide/onefile/html/toc.erb +3 -3
  565. data/templates/guide/tags/html/setup.rb +9 -9
  566. data/yard.gemspec +43 -43
  567. metadata +4 -3
@@ -1,10 +1,10 @@
1
- # frozen_string_literal: true
2
- begin
3
- require 'rubygems'
4
- if defined?(Gem::VERSION) && Gem::VERSION >= '1.8.0'
5
- require File.dirname(__FILE__) + '/backports/gem'
6
- require File.dirname(__FILE__) + '/backports/source_index'
7
- end
8
- rescue LoadError
9
- nil # noop
10
- end
1
+ # frozen_string_literal: true
2
+ begin
3
+ require 'rubygems'
4
+ if defined?(Gem::VERSION) && Gem::VERSION >= '1.8.0'
5
+ require File.dirname(__FILE__) + '/backports/gem'
6
+ require File.dirname(__FILE__) + '/backports/source_index'
7
+ end
8
+ rescue LoadError
9
+ nil # noop
10
+ end
@@ -1,57 +1,57 @@
1
- RubyGems is copyrighted free software by Chad Fowler, Rich Kilmer, Jim
2
- Weirich and others. You can redistribute it and/or modify it under
3
- either the terms of the MIT license (see the file MIT.txt), or the
4
- conditions below:
5
-
6
- 1. You may make and give away verbatim copies of the source form of the
7
- software without restriction, provided that you duplicate all of the
8
- original copyright notices and associated disclaimers.
9
-
10
- 2. You may modify your copy of the software in any way, provided that
11
- you do at least ONE of the following:
12
-
13
- a. place your modifications in the Public Domain or otherwise
14
- make them Freely Available, such as by posting said
15
- modifications to Usenet or an equivalent medium, or by allowing
16
- the author to include your modifications in the software.
17
-
18
- b. use the modified software only within your corporation or
19
- organization.
20
-
21
- c. give non-standard executables non-standard names, with
22
- instructions on where to get the original software distribution.
23
-
24
- d. make other distribution arrangements with the author.
25
-
26
- 3. You may distribute the software in object code or executable
27
- form, provided that you do at least ONE of the following:
28
-
29
- a. distribute the executables and library files of the software,
30
- together with instructions (in the manual page or equivalent)
31
- on where to get the original distribution.
32
-
33
- b. accompany the distribution with the machine-readable source of
34
- the software.
35
-
36
- c. give non-standard executables non-standard names, with
37
- instructions on where to get the original software distribution.
38
-
39
- d. make other distribution arrangements with the author.
40
-
41
- 4. You may modify and include the part of the software into any other
42
- software (possibly commercial). But some files in the distribution
43
- are not written by the author, so that they are not under these terms.
44
-
45
- For the list of those files and their copying conditions, see the
46
- file LEGAL.
47
-
48
- 5. The scripts and library files supplied as input to or produced as
49
- output from the software do not automatically fall under the
50
- copyright of the software, but belong to whomever generated them,
51
- and may be sold commercially, and may be aggregated with this
52
- software.
53
-
54
- 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
55
- IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
56
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
57
- PURPOSE.
1
+ RubyGems is copyrighted free software by Chad Fowler, Rich Kilmer, Jim
2
+ Weirich and others. You can redistribute it and/or modify it under
3
+ either the terms of the MIT license (see the file MIT.txt), or the
4
+ conditions below:
5
+
6
+ 1. You may make and give away verbatim copies of the source form of the
7
+ software without restriction, provided that you duplicate all of the
8
+ original copyright notices and associated disclaimers.
9
+
10
+ 2. You may modify your copy of the software in any way, provided that
11
+ you do at least ONE of the following:
12
+
13
+ a. place your modifications in the Public Domain or otherwise
14
+ make them Freely Available, such as by posting said
15
+ modifications to Usenet or an equivalent medium, or by allowing
16
+ the author to include your modifications in the software.
17
+
18
+ b. use the modified software only within your corporation or
19
+ organization.
20
+
21
+ c. give non-standard executables non-standard names, with
22
+ instructions on where to get the original software distribution.
23
+
24
+ d. make other distribution arrangements with the author.
25
+
26
+ 3. You may distribute the software in object code or executable
27
+ form, provided that you do at least ONE of the following:
28
+
29
+ a. distribute the executables and library files of the software,
30
+ together with instructions (in the manual page or equivalent)
31
+ on where to get the original distribution.
32
+
33
+ b. accompany the distribution with the machine-readable source of
34
+ the software.
35
+
36
+ c. give non-standard executables non-standard names, with
37
+ instructions on where to get the original software distribution.
38
+
39
+ d. make other distribution arrangements with the author.
40
+
41
+ 4. You may modify and include the part of the software into any other
42
+ software (possibly commercial). But some files in the distribution
43
+ are not written by the author, so that they are not under these terms.
44
+
45
+ For the list of those files and their copying conditions, see the
46
+ file LEGAL.
47
+
48
+ 5. The scripts and library files supplied as input to or produced as
49
+ output from the software do not automatically fall under the
50
+ copyright of the software, but belong to whomever generated them,
51
+ and may be sold commercially, and may be aggregated with this
52
+ software.
53
+
54
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
55
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
56
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
57
+ PURPOSE.
@@ -1,20 +1,20 @@
1
- Copyright (c) Chad Fowler, Rich Kilmer, Jim Weirich and others.
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- 'Software'), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ Copyright (c) Chad Fowler, Rich Kilmer, Jim Weirich and others.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ 'Software'), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,10 +1,10 @@
1
- # frozen_string_literal: true
2
- module Gem
3
- class << self
4
- undef source_index if method_defined?(:source_index)
5
- # Returns the Gem::SourceIndex of specifications that are in the Gem.path
6
- def source_index
7
- @@source_index ||= SourceIndex.from_installed_gems
8
- end
9
- end
10
- end
1
+ # frozen_string_literal: true
2
+ module Gem
3
+ class << self
4
+ undef source_index if method_defined?(:source_index)
5
+ # Returns the Gem::SourceIndex of specifications that are in the Gem.path
6
+ def source_index
7
+ @@source_index ||= SourceIndex.from_installed_gems
8
+ end
9
+ end
10
+ end
@@ -1,365 +1,365 @@
1
- # frozen_string_literal: true
2
- #--
3
- # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
- # All rights reserved.
5
- # See LICENSE.txt for permissions.
6
- #++
7
-
8
- require 'rubygems/specification'
9
-
10
- ##
11
- # The SourceIndex object indexes all the gems available from a
12
- # particular source (e.g. a list of gem directories, or a remote
13
- # source). A SourceIndex maps a gem full name to a gem
14
- # specification.
15
- #
16
- # NOTE:: The class used to be named Cache, but that became
17
- # confusing when cached source fetchers where introduced. The
18
- # constant Gem::Cache is an alias for this class to allow old
19
- # YAMLized source index objects to load properly.
20
-
21
- class Gem::SourceIndex
22
- # Undef old methods
23
- alias old_initialize initialize
24
- undef old_initialize
25
- %w(all_gems prerelease_gems load_gems_in latest_specs prerelease_specs
26
- released_specs add_spec add_specs remove_spec each specification
27
- index_signature gem_signature size length find_name search released_gems
28
- refresh! outdated == dump gems spec_dirs spec_dirs=).each do |meth|
29
- undef_method(meth) if method_defined?(meth)
30
- end
31
-
32
- include Enumerable
33
-
34
- attr_reader :gems # :nodoc:
35
-
36
- ##
37
- # Directories to use to refresh this SourceIndex when calling refresh!
38
-
39
- attr_accessor :spec_dirs
40
-
41
- class << self
42
- # Undef old methods
43
- %w(from_installed_gems installed_spec_directories
44
- from_gems_in load_specification).each do |meth|
45
- undef_method(meth) if instance_methods(true).find {|m| m.to_s == meth }
46
- end
47
-
48
- ##
49
- # Factory method to construct a source index instance for a given
50
- # path.
51
- #
52
- # deprecated::
53
- # If supplied, from_installed_gems will act just like
54
- # +from_gems_in+. This argument is deprecated and is provided
55
- # just for backwards compatibility, and should not generally
56
- # be used.
57
- #
58
- # return::
59
- # SourceIndex instance
60
-
61
- def from_installed_gems(*deprecated)
62
- if deprecated.empty?
63
- from_gems_in(*installed_spec_directories)
64
- else
65
- from_gems_in(*deprecated) # HACK: warn
66
- end
67
- end
68
-
69
- ##
70
- # Returns a list of directories from Gem.path that contain specifications.
71
-
72
- def installed_spec_directories
73
- Gem.path.collect {|dir| File.join(dir, "specifications") }
74
- end
75
-
76
- ##
77
- # Creates a new SourceIndex from the ruby format gem specifications in
78
- # +spec_dirs+.
79
-
80
- def from_gems_in(*spec_dirs)
81
- source_index = new
82
- source_index.spec_dirs = spec_dirs
83
- source_index.refresh!
84
- end
85
-
86
- ##
87
- # Loads a ruby-format specification from +file_name+ and returns the
88
- # loaded spec.
89
-
90
- def load_specification(file_name)
91
- Gem::Specification.load file_name
92
- end
93
- end
94
-
95
- ##
96
- # Constructs a source index instance from the provided specifications, which
97
- # is a Hash of gem full names and Gem::Specifications.
98
- #--
99
- # TODO merge @gems and @prerelease_gems and provide a separate method
100
- # #prerelease_gems
101
-
102
- def initialize(specifications = {})
103
- @gems = {}
104
- specifications.each {|_full_name, spec| add_spec spec }
105
- @spec_dirs = nil
106
- end
107
-
108
- # TODO: remove method
109
- def all_gems
110
- @gems
111
- end
112
-
113
- def prerelease_gems
114
- @gems.reject {|_name, gem| !gem.version.prerelease? }
115
- end
116
-
117
- def released_gems
118
- @gems.reject {|_name, gem| gem.version.prerelease? }
119
- end
120
-
121
- ##
122
- # Reconstruct the source index from the specifications in +spec_dirs+.
123
-
124
- def load_gems_in(*spec_dirs)
125
- @gems.clear
126
-
127
- spec_dirs.reverse_each do |spec_dir|
128
- spec_files = Dir.glob File.join(spec_dir, '*.gemspec')
129
-
130
- spec_files.each do |spec_file|
131
- gemspec = Gem::Specification.load spec_file
132
- add_spec gemspec if gemspec
133
- end
134
- end
135
-
136
- self
137
- end
138
-
139
- ##
140
- # Returns an Array specifications for the latest released versions
141
- # of each gem in this index.
142
-
143
- def latest_specs(include_prerelease = false)
144
- result = Hash.new {|h, k| h[k] = [] }
145
- latest = {}
146
-
147
- sort.each do |_, spec|
148
- name = spec.name
149
- curr_ver = spec.version
150
- prev_ver = latest.key?(name) ? latest[name].version : nil
151
-
152
- next if !include_prerelease && curr_ver.prerelease?
153
- next unless prev_ver.nil? || curr_ver >= prev_ver ||
154
- latest[name].platform != Gem::Platform::RUBY
155
-
156
- if prev_ver.nil? ||
157
- (curr_ver > prev_ver && spec.platform == Gem::Platform::RUBY)
158
- result[name].clear
159
- latest[name] = spec
160
- end
161
-
162
- if spec.platform != Gem::Platform::RUBY
163
- result[name].delete_if do |result_spec|
164
- result_spec.platform == spec.platform
165
- end
166
- end
167
-
168
- result[name] << spec
169
- end
170
-
171
- # TODO: why is this a hash while @gems is an array? Seems like
172
- # structural similarity would be good.
173
- result.values.flatten
174
- end
175
-
176
- ##
177
- # An array including only the prerelease gemspecs
178
-
179
- def prerelease_specs
180
- prerelease_gems.values
181
- end
182
-
183
- ##
184
- # An array including only the released gemspecs
185
-
186
- def released_specs
187
- released_gems.values
188
- end
189
-
190
- ##
191
- # Add a gem specification to the source index.
192
-
193
- def add_spec(gem_spec, name = gem_spec.full_name)
194
- # No idea why, but the Indexer wants to insert them using original_name
195
- # instead of full_name. So we make it an optional arg.
196
- @gems[name] = gem_spec
197
- end
198
-
199
- ##
200
- # Add gem specifications to the source index.
201
-
202
- def add_specs(*gem_specs)
203
- gem_specs.each do |spec|
204
- add_spec spec
205
- end
206
- end
207
-
208
- ##
209
- # Remove a gem specification named +full_name+.
210
-
211
- def remove_spec(full_name)
212
- @gems.delete full_name
213
- end
214
-
215
- ##
216
- # Iterate over the specifications in the source index.
217
-
218
- def each(&block) # :yields: gem.full_name, gem
219
- @gems.each(&block)
220
- end
221
-
222
- ##
223
- # The gem specification given a full gem spec name.
224
-
225
- def specification(full_name)
226
- @gems[full_name]
227
- end
228
-
229
- ##
230
- # The signature for the source index. Changes in the signature indicate a
231
- # change in the index.
232
-
233
- def index_signature
234
- require 'digest'
235
-
236
- Digest::SHA256.new.hexdigest(@gems.keys.sort.join(',')).to_s
237
- end
238
-
239
- ##
240
- # The signature for the given gem specification.
241
-
242
- def gem_signature(gem_full_name)
243
- require 'digest'
244
-
245
- Digest::SHA256.new.hexdigest(@gems[gem_full_name].to_yaml).to_s
246
- end
247
-
248
- def size
249
- @gems.size
250
- end
251
- alias length size
252
-
253
- ##
254
- # Find a gem by an exact match on the short name.
255
-
256
- def find_name(gem_name, requirement = Gem::Requirement.default)
257
- dep = Gem::Dependency.new gem_name, requirement
258
- search dep
259
- end
260
-
261
- ##
262
- # Search for a gem by Gem::Dependency +gem_pattern+. If +only_platform+
263
- # is true, only gems matching Gem::Platform.local will be returned. An
264
- # Array of matching Gem::Specification objects is returned.
265
- #
266
- # For backwards compatibility, a String or Regexp pattern may be passed as
267
- # +gem_pattern+, and a Gem::Requirement for +platform_only+. This
268
- # behavior is deprecated and will be removed.
269
-
270
- def search(gem_pattern, platform_only = false)
271
- requirement = nil
272
- only_platform = false
273
-
274
- # TODO: Remove support and warning for legacy arguments after 2008/11
275
- unless Gem::Dependency === gem_pattern
276
- warn "#{Gem.location_of_caller.join ':'}:Warning: Gem::SourceIndex#search support for #{gem_pattern.class} patterns is deprecated, use #find_name"
277
- end
278
-
279
- case gem_pattern
280
- when Regexp then
281
- requirement = platform_only || Gem::Requirement.default
282
- when Gem::Dependency then
283
- only_platform = platform_only
284
- requirement = gem_pattern.requirement
285
-
286
- gem_pattern = if Regexp === gem_pattern.name
287
- gem_pattern.name
288
- elsif gem_pattern.name.empty?
289
- //
290
- else
291
- /^#{Regexp.escape gem_pattern.name}$/
292
- end
293
- else
294
- requirement = platform_only || Gem::Requirement.default
295
- gem_pattern = /#{gem_pattern}/i
296
- end
297
-
298
- unless Gem::Requirement === requirement
299
- requirement = Gem::Requirement.create requirement
300
- end
301
-
302
- specs = all_gems.values.select do |spec|
303
- spec.name =~ gem_pattern &&
304
- requirement.satisfied_by?(spec.version)
305
- end
306
-
307
- if only_platform
308
- specs = specs.select do |spec|
309
- Gem::Platform.match spec.platform
310
- end
311
- end
312
-
313
- specs.sort_by(&:sort_obj)
314
- end
315
-
316
- ##
317
- # Replaces the gems in the source index from specifications in the
318
- # directories this source index was created from. Raises an exception if
319
- # this source index wasn't created from a directory (via from_gems_in or
320
- # from_installed_gems, or having spec_dirs set).
321
-
322
- def refresh!
323
- raise 'source index not created from disk' if @spec_dirs.nil?
324
- load_gems_in(*@spec_dirs)
325
- end
326
-
327
- ##
328
- # Returns an Array of Gem::Specifications that are not up to date.
329
-
330
- def outdated
331
- outdateds = []
332
-
333
- latest_specs.each do |local|
334
- dependency = Gem::Dependency.new local.name, ">= #{local.version}"
335
-
336
- fetcher = Gem::SpecFetcher.fetcher
337
- remotes = fetcher.find_matching dependency
338
- remotes = remotes.map {|(_, version, _), _| version }
339
-
340
- latest = remotes.sort.last
341
-
342
- outdateds << local.name if latest && local.version < latest
343
- end
344
-
345
- outdateds
346
- end
347
-
348
- def ==(other) # :nodoc:
349
- self.class === other && @gems == other.gems
350
- end
351
-
352
- def dump
353
- Marshal.dump(self)
354
- end
355
- end
356
-
357
- # :stopdoc:
358
- module Gem
359
- ##
360
- # Cache is an alias for SourceIndex to allow older YAMLized source index
361
- # objects to load properly.
362
-
363
- Cache = SourceIndex unless defined?(Cache)
364
- end
365
- # :startdoc:
1
+ # frozen_string_literal: true
2
+ #--
3
+ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
4
+ # All rights reserved.
5
+ # See LICENSE.txt for permissions.
6
+ #++
7
+
8
+ require 'rubygems/specification'
9
+
10
+ ##
11
+ # The SourceIndex object indexes all the gems available from a
12
+ # particular source (e.g. a list of gem directories, or a remote
13
+ # source). A SourceIndex maps a gem full name to a gem
14
+ # specification.
15
+ #
16
+ # NOTE:: The class used to be named Cache, but that became
17
+ # confusing when cached source fetchers where introduced. The
18
+ # constant Gem::Cache is an alias for this class to allow old
19
+ # YAMLized source index objects to load properly.
20
+
21
+ class Gem::SourceIndex
22
+ # Undef old methods
23
+ alias old_initialize initialize
24
+ undef old_initialize
25
+ %w(all_gems prerelease_gems load_gems_in latest_specs prerelease_specs
26
+ released_specs add_spec add_specs remove_spec each specification
27
+ index_signature gem_signature size length find_name search released_gems
28
+ refresh! outdated == dump gems spec_dirs spec_dirs=).each do |meth|
29
+ undef_method(meth) if method_defined?(meth)
30
+ end
31
+
32
+ include Enumerable
33
+
34
+ attr_reader :gems # :nodoc:
35
+
36
+ ##
37
+ # Directories to use to refresh this SourceIndex when calling refresh!
38
+
39
+ attr_accessor :spec_dirs
40
+
41
+ class << self
42
+ # Undef old methods
43
+ %w(from_installed_gems installed_spec_directories
44
+ from_gems_in load_specification).each do |meth|
45
+ undef_method(meth) if instance_methods(true).find {|m| m.to_s == meth }
46
+ end
47
+
48
+ ##
49
+ # Factory method to construct a source index instance for a given
50
+ # path.
51
+ #
52
+ # deprecated::
53
+ # If supplied, from_installed_gems will act just like
54
+ # +from_gems_in+. This argument is deprecated and is provided
55
+ # just for backwards compatibility, and should not generally
56
+ # be used.
57
+ #
58
+ # return::
59
+ # SourceIndex instance
60
+
61
+ def from_installed_gems(*deprecated)
62
+ if deprecated.empty?
63
+ from_gems_in(*installed_spec_directories)
64
+ else
65
+ from_gems_in(*deprecated) # HACK: warn
66
+ end
67
+ end
68
+
69
+ ##
70
+ # Returns a list of directories from Gem.path that contain specifications.
71
+
72
+ def installed_spec_directories
73
+ Gem.path.collect {|dir| File.join(dir, "specifications") }
74
+ end
75
+
76
+ ##
77
+ # Creates a new SourceIndex from the ruby format gem specifications in
78
+ # +spec_dirs+.
79
+
80
+ def from_gems_in(*spec_dirs)
81
+ source_index = new
82
+ source_index.spec_dirs = spec_dirs
83
+ source_index.refresh!
84
+ end
85
+
86
+ ##
87
+ # Loads a ruby-format specification from +file_name+ and returns the
88
+ # loaded spec.
89
+
90
+ def load_specification(file_name)
91
+ Gem::Specification.load file_name
92
+ end
93
+ end
94
+
95
+ ##
96
+ # Constructs a source index instance from the provided specifications, which
97
+ # is a Hash of gem full names and Gem::Specifications.
98
+ #--
99
+ # TODO merge @gems and @prerelease_gems and provide a separate method
100
+ # #prerelease_gems
101
+
102
+ def initialize(specifications = {})
103
+ @gems = {}
104
+ specifications.each {|_full_name, spec| add_spec spec }
105
+ @spec_dirs = nil
106
+ end
107
+
108
+ # TODO: remove method
109
+ def all_gems
110
+ @gems
111
+ end
112
+
113
+ def prerelease_gems
114
+ @gems.reject {|_name, gem| !gem.version.prerelease? }
115
+ end
116
+
117
+ def released_gems
118
+ @gems.reject {|_name, gem| gem.version.prerelease? }
119
+ end
120
+
121
+ ##
122
+ # Reconstruct the source index from the specifications in +spec_dirs+.
123
+
124
+ def load_gems_in(*spec_dirs)
125
+ @gems.clear
126
+
127
+ spec_dirs.reverse_each do |spec_dir|
128
+ spec_files = Dir.glob File.join(spec_dir, '*.gemspec')
129
+
130
+ spec_files.each do |spec_file|
131
+ gemspec = Gem::Specification.load spec_file
132
+ add_spec gemspec if gemspec
133
+ end
134
+ end
135
+
136
+ self
137
+ end
138
+
139
+ ##
140
+ # Returns an Array specifications for the latest released versions
141
+ # of each gem in this index.
142
+
143
+ def latest_specs(include_prerelease = false)
144
+ result = Hash.new {|h, k| h[k] = [] }
145
+ latest = {}
146
+
147
+ sort.each do |_, spec|
148
+ name = spec.name
149
+ curr_ver = spec.version
150
+ prev_ver = latest.key?(name) ? latest[name].version : nil
151
+
152
+ next if !include_prerelease && curr_ver.prerelease?
153
+ next unless prev_ver.nil? || curr_ver >= prev_ver ||
154
+ latest[name].platform != Gem::Platform::RUBY
155
+
156
+ if prev_ver.nil? ||
157
+ (curr_ver > prev_ver && spec.platform == Gem::Platform::RUBY)
158
+ result[name].clear
159
+ latest[name] = spec
160
+ end
161
+
162
+ if spec.platform != Gem::Platform::RUBY
163
+ result[name].delete_if do |result_spec|
164
+ result_spec.platform == spec.platform
165
+ end
166
+ end
167
+
168
+ result[name] << spec
169
+ end
170
+
171
+ # TODO: why is this a hash while @gems is an array? Seems like
172
+ # structural similarity would be good.
173
+ result.values.flatten
174
+ end
175
+
176
+ ##
177
+ # An array including only the prerelease gemspecs
178
+
179
+ def prerelease_specs
180
+ prerelease_gems.values
181
+ end
182
+
183
+ ##
184
+ # An array including only the released gemspecs
185
+
186
+ def released_specs
187
+ released_gems.values
188
+ end
189
+
190
+ ##
191
+ # Add a gem specification to the source index.
192
+
193
+ def add_spec(gem_spec, name = gem_spec.full_name)
194
+ # No idea why, but the Indexer wants to insert them using original_name
195
+ # instead of full_name. So we make it an optional arg.
196
+ @gems[name] = gem_spec
197
+ end
198
+
199
+ ##
200
+ # Add gem specifications to the source index.
201
+
202
+ def add_specs(*gem_specs)
203
+ gem_specs.each do |spec|
204
+ add_spec spec
205
+ end
206
+ end
207
+
208
+ ##
209
+ # Remove a gem specification named +full_name+.
210
+
211
+ def remove_spec(full_name)
212
+ @gems.delete full_name
213
+ end
214
+
215
+ ##
216
+ # Iterate over the specifications in the source index.
217
+
218
+ def each(&block) # :yields: gem.full_name, gem
219
+ @gems.each(&block)
220
+ end
221
+
222
+ ##
223
+ # The gem specification given a full gem spec name.
224
+
225
+ def specification(full_name)
226
+ @gems[full_name]
227
+ end
228
+
229
+ ##
230
+ # The signature for the source index. Changes in the signature indicate a
231
+ # change in the index.
232
+
233
+ def index_signature
234
+ require 'digest'
235
+
236
+ Digest::SHA256.new.hexdigest(@gems.keys.sort.join(',')).to_s
237
+ end
238
+
239
+ ##
240
+ # The signature for the given gem specification.
241
+
242
+ def gem_signature(gem_full_name)
243
+ require 'digest'
244
+
245
+ Digest::SHA256.new.hexdigest(@gems[gem_full_name].to_yaml).to_s
246
+ end
247
+
248
+ def size
249
+ @gems.size
250
+ end
251
+ alias length size
252
+
253
+ ##
254
+ # Find a gem by an exact match on the short name.
255
+
256
+ def find_name(gem_name, requirement = Gem::Requirement.default)
257
+ dep = Gem::Dependency.new gem_name, requirement
258
+ search dep
259
+ end
260
+
261
+ ##
262
+ # Search for a gem by Gem::Dependency +gem_pattern+. If +only_platform+
263
+ # is true, only gems matching Gem::Platform.local will be returned. An
264
+ # Array of matching Gem::Specification objects is returned.
265
+ #
266
+ # For backwards compatibility, a String or Regexp pattern may be passed as
267
+ # +gem_pattern+, and a Gem::Requirement for +platform_only+. This
268
+ # behavior is deprecated and will be removed.
269
+
270
+ def search(gem_pattern, platform_only = false)
271
+ requirement = nil
272
+ only_platform = false
273
+
274
+ # TODO: Remove support and warning for legacy arguments after 2008/11
275
+ unless Gem::Dependency === gem_pattern
276
+ warn "#{Gem.location_of_caller.join ':'}:Warning: Gem::SourceIndex#search support for #{gem_pattern.class} patterns is deprecated, use #find_name"
277
+ end
278
+
279
+ case gem_pattern
280
+ when Regexp then
281
+ requirement = platform_only || Gem::Requirement.default
282
+ when Gem::Dependency then
283
+ only_platform = platform_only
284
+ requirement = gem_pattern.requirement
285
+
286
+ gem_pattern = if Regexp === gem_pattern.name
287
+ gem_pattern.name
288
+ elsif gem_pattern.name.empty?
289
+ //
290
+ else
291
+ /^#{Regexp.escape gem_pattern.name}$/
292
+ end
293
+ else
294
+ requirement = platform_only || Gem::Requirement.default
295
+ gem_pattern = /#{gem_pattern}/i
296
+ end
297
+
298
+ unless Gem::Requirement === requirement
299
+ requirement = Gem::Requirement.create requirement
300
+ end
301
+
302
+ specs = all_gems.values.select do |spec|
303
+ spec.name =~ gem_pattern &&
304
+ requirement.satisfied_by?(spec.version)
305
+ end
306
+
307
+ if only_platform
308
+ specs = specs.select do |spec|
309
+ Gem::Platform.match spec.platform
310
+ end
311
+ end
312
+
313
+ specs.sort_by(&:sort_obj)
314
+ end
315
+
316
+ ##
317
+ # Replaces the gems in the source index from specifications in the
318
+ # directories this source index was created from. Raises an exception if
319
+ # this source index wasn't created from a directory (via from_gems_in or
320
+ # from_installed_gems, or having spec_dirs set).
321
+
322
+ def refresh!
323
+ raise 'source index not created from disk' if @spec_dirs.nil?
324
+ load_gems_in(*@spec_dirs)
325
+ end
326
+
327
+ ##
328
+ # Returns an Array of Gem::Specifications that are not up to date.
329
+
330
+ def outdated
331
+ outdateds = []
332
+
333
+ latest_specs.each do |local|
334
+ dependency = Gem::Dependency.new local.name, ">= #{local.version}"
335
+
336
+ fetcher = Gem::SpecFetcher.fetcher
337
+ remotes = fetcher.find_matching dependency
338
+ remotes = remotes.map {|(_, version, _), _| version }
339
+
340
+ latest = remotes.sort.last
341
+
342
+ outdateds << local.name if latest && local.version < latest
343
+ end
344
+
345
+ outdateds
346
+ end
347
+
348
+ def ==(other) # :nodoc:
349
+ self.class === other && @gems == other.gems
350
+ end
351
+
352
+ def dump
353
+ Marshal.dump(self)
354
+ end
355
+ end
356
+
357
+ # :stopdoc:
358
+ module Gem
359
+ ##
360
+ # Cache is an alias for SourceIndex to allow older YAMLized source index
361
+ # objects to load properly.
362
+
363
+ Cache = SourceIndex unless defined?(Cache)
364
+ end
365
+ # :startdoc: