yard 0.9.16 → 0.9.17

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 (566) hide show
  1. checksums.yaml +5 -5
  2. data/.yardopts +26 -26
  3. data/CHANGELOG.md +728 -728
  4. data/LEGAL +66 -66
  5. data/LICENSE +22 -22
  6. data/README.md +328 -328
  7. data/Rakefile +53 -47
  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 +303 -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 +788 -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 -610
  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 +131 -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 +20 -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 -378
  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 +211 -211
  95. data/lib/yard/handlers/c/init_handler.rb +20 -20
  96. data/lib/yard/handlers/c/method_handler.rb +45 -36
  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/processor.rb +200 -200
  104. data/lib/yard/handlers/ruby/alias_handler.rb +44 -44
  105. data/lib/yard/handlers/ruby/attribute_handler.rb +87 -87
  106. data/lib/yard/handlers/ruby/base.rb +165 -165
  107. data/lib/yard/handlers/ruby/class_condition_handler.rb +92 -92
  108. data/lib/yard/handlers/ruby/class_handler.rb +119 -119
  109. data/lib/yard/handlers/ruby/class_variable_handler.rb +17 -17
  110. data/lib/yard/handlers/ruby/comment_handler.rb +10 -10
  111. data/lib/yard/handlers/ruby/constant_handler.rb +59 -59
  112. data/lib/yard/handlers/ruby/decorator_handler_methods.rb +123 -123
  113. data/lib/yard/handlers/ruby/dsl_handler.rb +15 -15
  114. data/lib/yard/handlers/ruby/dsl_handler_methods.rb +96 -95
  115. data/lib/yard/handlers/ruby/exception_handler.rb +27 -27
  116. data/lib/yard/handlers/ruby/extend_handler.rb +22 -22
  117. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +37 -37
  118. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +65 -65
  119. data/lib/yard/handlers/ruby/legacy/base.rb +245 -245
  120. data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -83
  121. data/lib/yard/handlers/ruby/legacy/class_handler.rb +113 -113
  122. data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +15 -15
  123. data/lib/yard/handlers/ruby/legacy/comment_handler.rb +10 -10
  124. data/lib/yard/handlers/ruby/legacy/constant_handler.rb +29 -29
  125. data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +17 -17
  126. data/lib/yard/handlers/ruby/legacy/exception_handler.rb +13 -13
  127. data/lib/yard/handlers/ruby/legacy/extend_handler.rb +21 -21
  128. data/lib/yard/handlers/ruby/legacy/method_handler.rb +90 -90
  129. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -39
  130. data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +19 -19
  131. data/lib/yard/handlers/ruby/legacy/module_handler.rb +12 -12
  132. data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +22 -22
  133. data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +22 -22
  134. data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +17 -17
  135. data/lib/yard/handlers/ruby/legacy/yield_handler.rb +29 -29
  136. data/lib/yard/handlers/ruby/method_condition_handler.rb +9 -9
  137. data/lib/yard/handlers/ruby/method_handler.rb +118 -118
  138. data/lib/yard/handlers/ruby/mixin_handler.rb +37 -37
  139. data/lib/yard/handlers/ruby/module_function_handler.rb +27 -27
  140. data/lib/yard/handlers/ruby/module_handler.rb +12 -12
  141. data/lib/yard/handlers/ruby/private_class_method_handler.rb +14 -14
  142. data/lib/yard/handlers/ruby/private_constant_handler.rb +43 -43
  143. data/lib/yard/handlers/ruby/public_class_method_handler.rb +14 -14
  144. data/lib/yard/handlers/ruby/struct_handler_methods.rb +143 -143
  145. data/lib/yard/handlers/ruby/visibility_handler.rb +22 -22
  146. data/lib/yard/handlers/ruby/yield_handler.rb +31 -31
  147. data/lib/yard/i18n/locale.rb +67 -67
  148. data/lib/yard/i18n/message.rb +57 -57
  149. data/lib/yard/i18n/messages.rb +56 -56
  150. data/lib/yard/i18n/po_parser.rb +61 -61
  151. data/lib/yard/i18n/pot_generator.rb +290 -290
  152. data/lib/yard/i18n/text.rb +173 -173
  153. data/lib/yard/logging.rb +205 -205
  154. data/lib/yard/options.rb +217 -217
  155. data/lib/yard/parser/base.rb +57 -57
  156. data/lib/yard/parser/c/c_parser.rb +235 -235
  157. data/lib/yard/parser/c/comment_parser.rb +134 -134
  158. data/lib/yard/parser/c/statement.rb +64 -64
  159. data/lib/yard/parser/ruby/ast_node.rb +540 -540
  160. data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1354 -1354
  161. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +32 -32
  162. data/lib/yard/parser/ruby/legacy/statement.rb +66 -66
  163. data/lib/yard/parser/ruby/legacy/statement_list.rb +394 -394
  164. data/lib/yard/parser/ruby/legacy/token_list.rb +74 -74
  165. data/lib/yard/parser/ruby/ruby_parser.rb +687 -687
  166. data/lib/yard/parser/ruby/token_resolver.rb +156 -156
  167. data/lib/yard/parser/source_parser.rb +526 -526
  168. data/lib/yard/rake/yardoc_task.rb +81 -81
  169. data/lib/yard/registry.rb +439 -439
  170. data/lib/yard/registry_resolver.rb +189 -189
  171. data/lib/yard/registry_store.rb +337 -337
  172. data/lib/yard/rubygems/backports.rb +10 -10
  173. data/lib/yard/rubygems/backports/LICENSE.txt +57 -57
  174. data/lib/yard/rubygems/backports/MIT.txt +20 -20
  175. data/lib/yard/rubygems/backports/gem.rb +10 -10
  176. data/lib/yard/rubygems/backports/source_index.rb +365 -365
  177. data/lib/yard/rubygems/doc_manager.rb +90 -90
  178. data/lib/yard/rubygems/hook.rb +197 -197
  179. data/lib/yard/rubygems/specification.rb +50 -50
  180. data/lib/yard/serializers/base.rb +83 -83
  181. data/lib/yard/serializers/file_system_serializer.rb +123 -123
  182. data/lib/yard/serializers/process_serializer.rb +24 -24
  183. data/lib/yard/serializers/stdout_serializer.rb +34 -34
  184. data/lib/yard/serializers/yardoc_serializer.rb +152 -152
  185. data/lib/yard/server.rb +13 -13
  186. data/lib/yard/server/adapter.rb +100 -100
  187. data/lib/yard/server/commands/base.rb +209 -209
  188. data/lib/yard/server/commands/display_file_command.rb +29 -29
  189. data/lib/yard/server/commands/display_object_command.rb +65 -65
  190. data/lib/yard/server/commands/frames_command.rb +16 -16
  191. data/lib/yard/server/commands/library_command.rb +187 -187
  192. data/lib/yard/server/commands/library_index_command.rb +28 -28
  193. data/lib/yard/server/commands/list_command.rb +25 -25
  194. data/lib/yard/server/commands/root_request_command.rb +15 -15
  195. data/lib/yard/server/commands/search_command.rb +79 -79
  196. data/lib/yard/server/commands/static_file_command.rb +23 -23
  197. data/lib/yard/server/commands/static_file_helpers.rb +62 -62
  198. data/lib/yard/server/doc_server_helper.rb +91 -91
  199. data/lib/yard/server/doc_server_serializer.rb +39 -39
  200. data/lib/yard/server/library_version.rb +277 -277
  201. data/lib/yard/server/rack_adapter.rb +89 -89
  202. data/lib/yard/server/router.rb +187 -187
  203. data/lib/yard/server/static_caching.rb +46 -46
  204. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +127 -127
  205. data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +11 -11
  206. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +37 -37
  207. data/lib/yard/server/templates/default/layout/html/script_setup.erb +7 -7
  208. data/lib/yard/server/templates/default/layout/html/setup.rb +8 -8
  209. data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -4
  210. data/lib/yard/server/templates/default/method_details/html/setup.rb +5 -5
  211. data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +8 -8
  212. data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +14 -14
  213. data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +13 -13
  214. data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +6 -6
  215. data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -2
  216. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +52 -52
  217. data/lib/yard/server/templates/doc_server/processing/html/setup.rb +4 -4
  218. data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -18
  219. data/lib/yard/server/templates/doc_server/search/html/setup.rb +9 -9
  220. data/lib/yard/server/webrick_adapter.rb +45 -45
  221. data/lib/yard/tags/default_factory.rb +191 -191
  222. data/lib/yard/tags/default_tag.rb +13 -13
  223. data/lib/yard/tags/directives.rb +616 -616
  224. data/lib/yard/tags/library.rb +633 -633
  225. data/lib/yard/tags/option_tag.rb +13 -13
  226. data/lib/yard/tags/overload_tag.rb +71 -71
  227. data/lib/yard/tags/ref_tag.rb +8 -8
  228. data/lib/yard/tags/ref_tag_list.rb +28 -28
  229. data/lib/yard/tags/tag.rb +71 -71
  230. data/lib/yard/tags/tag_format_error.rb +7 -7
  231. data/lib/yard/tags/types_explainer.rb +162 -162
  232. data/lib/yard/templates/engine.rb +186 -186
  233. data/lib/yard/templates/erb_cache.rb +23 -23
  234. data/lib/yard/templates/helpers/base_helper.rb +215 -215
  235. data/lib/yard/templates/helpers/filter_helper.rb +27 -27
  236. data/lib/yard/templates/helpers/html_helper.rb +646 -642
  237. data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +78 -78
  238. data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +23 -23
  239. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +109 -109
  240. data/lib/yard/templates/helpers/markup_helper.rb +172 -172
  241. data/lib/yard/templates/helpers/method_helper.rb +75 -75
  242. data/lib/yard/templates/helpers/module_helper.rb +21 -21
  243. data/lib/yard/templates/helpers/text_helper.rb +112 -112
  244. data/lib/yard/templates/helpers/uml_helper.rb +47 -47
  245. data/lib/yard/templates/section.rb +105 -105
  246. data/lib/yard/templates/template.rb +418 -418
  247. data/lib/yard/templates/template_options.rb +92 -92
  248. data/lib/yard/verifier.rb +151 -151
  249. data/lib/yard/version.rb +3 -1
  250. data/spec/cli/command_parser_spec.rb +43 -43
  251. data/spec/cli/command_spec.rb +36 -36
  252. data/spec/cli/config_spec.rb +148 -148
  253. data/spec/cli/diff_spec.rb +254 -254
  254. data/spec/cli/display_spec.rb +30 -30
  255. data/spec/cli/gems_spec.rb +81 -81
  256. data/spec/cli/graph_spec.rb +18 -18
  257. data/spec/cli/help_spec.rb +22 -22
  258. data/spec/cli/i18n_spec.rb +107 -107
  259. data/spec/cli/list_spec.rb +8 -8
  260. data/spec/cli/markup_types_spec.rb +22 -22
  261. data/spec/cli/server_spec.rb +324 -324
  262. data/spec/cli/stats_spec.rb +96 -96
  263. data/spec/cli/yard_on_yard_spec.rb +38 -38
  264. data/spec/cli/yardoc_spec.rb +862 -849
  265. data/spec/cli/yri_spec.rb +101 -101
  266. data/spec/code_objects/base_spec.rb +470 -460
  267. data/spec/code_objects/class_object_spec.rb +226 -226
  268. data/spec/code_objects/code_object_list_spec.rb +36 -36
  269. data/spec/code_objects/constants_spec.rb +116 -116
  270. data/spec/code_objects/extra_file_object_spec.rb +160 -160
  271. data/spec/code_objects/macro_object_spec.rb +150 -150
  272. data/spec/code_objects/method_object_spec.rb +184 -184
  273. data/spec/code_objects/module_object_spec.rb +142 -142
  274. data/spec/code_objects/namespace_object_spec.rb +171 -171
  275. data/spec/code_objects/proxy_spec.rb +141 -141
  276. data/spec/code_objects/spec_helper.rb +3 -3
  277. data/spec/config_spec.rb +171 -171
  278. data/spec/core_ext/array_spec.rb +13 -13
  279. data/spec/core_ext/file_spec.rb +72 -72
  280. data/spec/core_ext/hash_spec.rb +14 -14
  281. data/spec/core_ext/insertion_spec.rb +37 -37
  282. data/spec/core_ext/module_spec.rb +15 -15
  283. data/spec/core_ext/string_spec.rb +42 -42
  284. data/spec/core_ext/symbol_hash_spec.rb +89 -89
  285. data/spec/docstring_parser_spec.rb +280 -262
  286. data/spec/docstring_spec.rb +373 -364
  287. data/spec/examples.txt +1875 -1871
  288. data/spec/handlers/alias_handler_spec.rb +82 -82
  289. data/spec/handlers/attribute_handler_spec.rb +96 -96
  290. data/spec/handlers/base_spec.rb +216 -216
  291. data/spec/handlers/c/alias_handler_spec.rb +34 -34
  292. data/spec/handlers/c/attribute_handler_spec.rb +41 -41
  293. data/spec/handlers/c/class_handler_spec.rb +78 -78
  294. data/spec/handlers/c/constant_handler_spec.rb +71 -71
  295. data/spec/handlers/c/init_handler_spec.rb +48 -48
  296. data/spec/handlers/c/method_handler_spec.rb +325 -325
  297. data/spec/handlers/c/mixin_handler_spec.rb +44 -44
  298. data/spec/handlers/c/module_handler_spec.rb +71 -71
  299. data/spec/handlers/c/override_comment_handler_spec.rb +47 -47
  300. data/spec/handlers/c/path_handler_spec.rb +36 -36
  301. data/spec/handlers/c/spec_helper.rb +23 -23
  302. data/spec/handlers/c/struct_handler_spec.rb +16 -16
  303. data/spec/handlers/class_condition_handler_spec.rb +87 -87
  304. data/spec/handlers/class_handler_spec.rb +247 -247
  305. data/spec/handlers/class_method_handler_shared_examples.rb +133 -133
  306. data/spec/handlers/class_variable_handler_spec.rb +12 -12
  307. data/spec/handlers/constant_handler_spec.rb +112 -112
  308. data/spec/handlers/decorator_handler_methods_spec.rb +393 -393
  309. data/spec/handlers/dsl_handler_spec.rb +219 -219
  310. data/spec/handlers/examples/alias_handler_001.rb.txt +45 -45
  311. data/spec/handlers/examples/attribute_handler_001.rb.txt +31 -31
  312. data/spec/handlers/examples/class_condition_handler_001.rb.txt +68 -68
  313. data/spec/handlers/examples/class_handler_001.rb.txt +120 -120
  314. data/spec/handlers/examples/class_variable_handler_001.rb.txt +9 -9
  315. data/spec/handlers/examples/constant_handler_001.rb.txt +35 -35
  316. data/spec/handlers/examples/dsl_handler_001.rb.txt +154 -154
  317. data/spec/handlers/examples/exception_handler_001.rb.txt +58 -58
  318. data/spec/handlers/examples/extend_handler_001.rb.txt +15 -15
  319. data/spec/handlers/examples/method_condition_handler_001.rb.txt +9 -9
  320. data/spec/handlers/examples/method_handler_001.rb.txt +128 -128
  321. data/spec/handlers/examples/mixin_handler_001.rb.txt +37 -37
  322. data/spec/handlers/examples/module_handler_001.rb.txt +29 -29
  323. data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -8
  324. data/spec/handlers/examples/process_handler_001.rb.txt +11 -11
  325. data/spec/handlers/examples/visibility_handler_001.rb.txt +35 -35
  326. data/spec/handlers/examples/yield_handler_001.rb.txt +54 -54
  327. data/spec/handlers/exception_handler_spec.rb +49 -49
  328. data/spec/handlers/extend_handler_spec.rb +24 -24
  329. data/spec/handlers/legacy_base_spec.rb +128 -128
  330. data/spec/handlers/method_condition_handler_spec.rb +15 -15
  331. data/spec/handlers/method_handler_spec.rb +190 -190
  332. data/spec/handlers/mixin_handler_spec.rb +56 -56
  333. data/spec/handlers/module_function_handler_spec.rb +106 -106
  334. data/spec/handlers/module_handler_spec.rb +35 -35
  335. data/spec/handlers/private_class_method_handler_spec.rb +11 -11
  336. data/spec/handlers/private_constant_handler_spec.rb +25 -25
  337. data/spec/handlers/processor_spec.rb +35 -35
  338. data/spec/handlers/public_class_method_handler_spec.rb +11 -11
  339. data/spec/handlers/ruby/base_spec.rb +95 -95
  340. data/spec/handlers/ruby/legacy/base_spec.rb +84 -84
  341. data/spec/handlers/spec_helper.rb +33 -33
  342. data/spec/handlers/visibility_handler_spec.rb +44 -44
  343. data/spec/handlers/yield_handler_spec.rb +52 -52
  344. data/spec/i18n/locale_spec.rb +81 -81
  345. data/spec/i18n/message_spec.rb +52 -52
  346. data/spec/i18n/messages_spec.rb +67 -67
  347. data/spec/i18n/pot_generator_spec.rb +295 -295
  348. data/spec/i18n/text_spec.rb +184 -184
  349. data/spec/logging_spec.rb +44 -44
  350. data/spec/options_spec.rb +171 -171
  351. data/spec/parser/base_spec.rb +24 -24
  352. data/spec/parser/c_parser_spec.rb +236 -223
  353. data/spec/parser/examples/array.c.txt +6267 -6267
  354. data/spec/parser/examples/example1.rb.txt +7 -7
  355. data/spec/parser/examples/extrafile.c.txt +8 -8
  356. data/spec/parser/examples/file.c.txt +28 -0
  357. data/spec/parser/examples/multifile.c.txt +22 -22
  358. data/spec/parser/examples/namespace.cpp.txt +68 -68
  359. data/spec/parser/examples/override.c.txt +424 -424
  360. data/spec/parser/examples/parse_in_order_001.rb.txt +2 -2
  361. data/spec/parser/examples/parse_in_order_002.rb.txt +1 -1
  362. data/spec/parser/examples/tag_handler_001.rb.txt +7 -7
  363. data/spec/parser/ruby/ast_node_spec.rb +33 -33
  364. data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -299
  365. data/spec/parser/ruby/legacy/token_list_spec.rb +79 -79
  366. data/spec/parser/ruby/ruby_parser_spec.rb +508 -508
  367. data/spec/parser/ruby/token_resolver_spec.rb +165 -165
  368. data/spec/parser/source_parser_spec.rb +727 -727
  369. data/spec/parser/tag_parsing_spec.rb +17 -17
  370. data/spec/rake/yardoc_task_spec.rb +118 -118
  371. data/spec/registry_spec.rb +463 -463
  372. data/spec/registry_store_spec.rb +316 -316
  373. data/spec/rubygems/doc_manager_spec.rb +112 -112
  374. data/spec/serializers/data/serialized_yardoc/checksums +1 -1
  375. data/spec/serializers/file_system_serializer_spec.rb +145 -145
  376. data/spec/serializers/spec_helper.rb +2 -2
  377. data/spec/serializers/yardoc_serializer_spec.rb +78 -78
  378. data/spec/server/adapter_spec.rb +39 -39
  379. data/spec/server/commands/base_spec.rb +91 -91
  380. data/spec/server/commands/library_command_spec.rb +39 -39
  381. data/spec/server/doc_server_helper_spec.rb +72 -72
  382. data/spec/server/doc_server_serializer_spec.rb +60 -60
  383. data/spec/server/rack_adapter_spec.rb +21 -21
  384. data/spec/server/router_spec.rb +123 -123
  385. data/spec/server/spec_helper.rb +22 -22
  386. data/spec/server/static_caching_spec.rb +47 -47
  387. data/spec/server/webrick_servlet_spec.rb +20 -20
  388. data/spec/server_spec.rb +19 -19
  389. data/spec/spec_helper.rb +212 -212
  390. data/spec/tags/default_factory_spec.rb +168 -168
  391. data/spec/tags/default_tag_spec.rb +11 -11
  392. data/spec/tags/directives_spec.rb +463 -463
  393. data/spec/tags/library_spec.rb +48 -48
  394. data/spec/tags/overload_tag_spec.rb +53 -53
  395. data/spec/tags/ref_tag_list_spec.rb +53 -53
  396. data/spec/tags/types_explainer_spec.rb +203 -203
  397. data/spec/templates/class_spec.rb +45 -45
  398. data/spec/templates/constant_spec.rb +41 -41
  399. data/spec/templates/engine_spec.rb +131 -131
  400. data/spec/templates/examples/class001.html +308 -308
  401. data/spec/templates/examples/class001.txt +36 -36
  402. data/spec/templates/examples/class002.html +39 -39
  403. data/spec/templates/examples/constant001.txt +24 -24
  404. data/spec/templates/examples/constant002.txt +6 -6
  405. data/spec/templates/examples/constant003.txt +10 -10
  406. data/spec/templates/examples/method001.html +137 -137
  407. data/spec/templates/examples/method001.txt +35 -35
  408. data/spec/templates/examples/method002.html +91 -91
  409. data/spec/templates/examples/method002.txt +20 -20
  410. data/spec/templates/examples/method003.html +165 -165
  411. data/spec/templates/examples/method003.txt +45 -45
  412. data/spec/templates/examples/method004.html +48 -48
  413. data/spec/templates/examples/method004.txt +10 -10
  414. data/spec/templates/examples/method005.html +105 -105
  415. data/spec/templates/examples/method005.txt +33 -33
  416. data/spec/templates/examples/method006.html +107 -107
  417. data/spec/templates/examples/method006.txt +20 -20
  418. data/spec/templates/examples/module001.dot +33 -33
  419. data/spec/templates/examples/module001.html +833 -833
  420. data/spec/templates/examples/module001.txt +33 -33
  421. data/spec/templates/examples/module002.html +341 -341
  422. data/spec/templates/examples/module003.html +202 -202
  423. data/spec/templates/examples/module004.html +394 -394
  424. data/spec/templates/examples/module005.html +81 -81
  425. data/spec/templates/examples/tag001.txt +82 -82
  426. data/spec/templates/helpers/base_helper_spec.rb +171 -171
  427. data/spec/templates/helpers/html_helper_spec.rb +668 -653
  428. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +65 -65
  429. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +84 -84
  430. data/spec/templates/helpers/markup_helper_spec.rb +136 -136
  431. data/spec/templates/helpers/method_helper_spec.rb +107 -107
  432. data/spec/templates/helpers/module_helper_spec.rb +35 -35
  433. data/spec/templates/helpers/shared_signature_examples.rb +126 -126
  434. data/spec/templates/helpers/text_helper_spec.rb +65 -65
  435. data/spec/templates/method_spec.rb +118 -118
  436. data/spec/templates/module_spec.rb +203 -203
  437. data/spec/templates/onefile_spec.rb +66 -66
  438. data/spec/templates/section_spec.rb +144 -144
  439. data/spec/templates/spec_helper.rb +76 -76
  440. data/spec/templates/tag_spec.rb +52 -52
  441. data/spec/templates/template_spec.rb +410 -410
  442. data/spec/verifier_spec.rb +106 -106
  443. data/templates/default/class/dot/setup.rb +7 -7
  444. data/templates/default/class/dot/superklass.erb +2 -2
  445. data/templates/default/class/html/constructor_details.erb +8 -8
  446. data/templates/default/class/html/setup.rb +2 -2
  447. data/templates/default/class/html/subclasses.erb +4 -4
  448. data/templates/default/class/setup.rb +36 -36
  449. data/templates/default/class/text/setup.rb +12 -12
  450. data/templates/default/class/text/subclasses.erb +5 -5
  451. data/templates/default/constant/text/header.erb +11 -11
  452. data/templates/default/constant/text/setup.rb +4 -4
  453. data/templates/default/docstring/html/abstract.erb +4 -4
  454. data/templates/default/docstring/html/deprecated.erb +1 -1
  455. data/templates/default/docstring/html/index.erb +5 -5
  456. data/templates/default/docstring/html/note.erb +6 -6
  457. data/templates/default/docstring/html/private.erb +4 -4
  458. data/templates/default/docstring/html/text.erb +1 -1
  459. data/templates/default/docstring/html/todo.erb +6 -6
  460. data/templates/default/docstring/setup.rb +52 -52
  461. data/templates/default/docstring/text/abstract.erb +2 -2
  462. data/templates/default/docstring/text/deprecated.erb +2 -2
  463. data/templates/default/docstring/text/index.erb +2 -2
  464. data/templates/default/docstring/text/note.erb +3 -3
  465. data/templates/default/docstring/text/private.erb +2 -2
  466. data/templates/default/docstring/text/text.erb +1 -1
  467. data/templates/default/docstring/text/todo.erb +3 -3
  468. data/templates/default/fulldoc/html/css/full_list.css +58 -58
  469. data/templates/default/fulldoc/html/css/style.css +496 -496
  470. data/templates/default/fulldoc/html/frames.erb +17 -17
  471. data/templates/default/fulldoc/html/full_list.erb +37 -37
  472. data/templates/default/fulldoc/html/full_list_class.erb +2 -2
  473. data/templates/default/fulldoc/html/full_list_file.erb +7 -7
  474. data/templates/default/fulldoc/html/full_list_method.erb +10 -10
  475. data/templates/default/fulldoc/html/js/app.js +292 -292
  476. data/templates/default/fulldoc/html/js/full_list.js +216 -216
  477. data/templates/default/fulldoc/html/js/jquery.js +3 -3
  478. data/templates/default/fulldoc/html/setup.rb +241 -241
  479. data/templates/default/layout/dot/header.erb +5 -5
  480. data/templates/default/layout/dot/setup.rb +15 -15
  481. data/templates/default/layout/html/breadcrumb.erb +11 -11
  482. data/templates/default/layout/html/files.erb +11 -11
  483. data/templates/default/layout/html/footer.erb +5 -5
  484. data/templates/default/layout/html/headers.erb +15 -15
  485. data/templates/default/layout/html/index.erb +2 -2
  486. data/templates/default/layout/html/layout.erb +23 -23
  487. data/templates/default/layout/html/listing.erb +4 -4
  488. data/templates/default/layout/html/objects.erb +32 -32
  489. data/templates/default/layout/html/script_setup.erb +4 -4
  490. data/templates/default/layout/html/search.erb +12 -12
  491. data/templates/default/layout/html/setup.rb +89 -89
  492. data/templates/default/method/html/header.erb +16 -16
  493. data/templates/default/method/setup.rb +4 -4
  494. data/templates/default/method_details/html/header.erb +2 -2
  495. data/templates/default/method_details/html/method_signature.erb +24 -24
  496. data/templates/default/method_details/html/source.erb +9 -9
  497. data/templates/default/method_details/setup.rb +11 -11
  498. data/templates/default/method_details/text/header.erb +10 -10
  499. data/templates/default/method_details/text/method_signature.erb +12 -12
  500. data/templates/default/method_details/text/setup.rb +11 -11
  501. data/templates/default/module/dot/child.erb +1 -1
  502. data/templates/default/module/dot/dependencies.erb +2 -2
  503. data/templates/default/module/dot/header.erb +6 -6
  504. data/templates/default/module/dot/info.erb +13 -13
  505. data/templates/default/module/dot/setup.rb +15 -15
  506. data/templates/default/module/html/attribute_details.erb +10 -10
  507. data/templates/default/module/html/attribute_summary.erb +8 -8
  508. data/templates/default/module/html/box_info.erb +43 -43
  509. data/templates/default/module/html/children.erb +8 -8
  510. data/templates/default/module/html/constant_summary.erb +17 -17
  511. data/templates/default/module/html/defines.erb +2 -2
  512. data/templates/default/module/html/header.erb +5 -5
  513. data/templates/default/module/html/inherited_attributes.erb +14 -14
  514. data/templates/default/module/html/inherited_constants.erb +8 -8
  515. data/templates/default/module/html/inherited_methods.erb +18 -18
  516. data/templates/default/module/html/item_summary.erb +40 -40
  517. data/templates/default/module/html/method_details_list.erb +9 -9
  518. data/templates/default/module/html/method_summary.erb +13 -13
  519. data/templates/default/module/html/methodmissing.erb +12 -12
  520. data/templates/default/module/setup.rb +167 -167
  521. data/templates/default/module/text/children.erb +9 -9
  522. data/templates/default/module/text/class_meths_list.erb +7 -7
  523. data/templates/default/module/text/extends.erb +7 -7
  524. data/templates/default/module/text/header.erb +7 -7
  525. data/templates/default/module/text/includes.erb +7 -7
  526. data/templates/default/module/text/instance_meths_list.erb +7 -7
  527. data/templates/default/module/text/setup.rb +13 -13
  528. data/templates/default/onefile/html/files.erb +4 -4
  529. data/templates/default/onefile/html/headers.erb +6 -6
  530. data/templates/default/onefile/html/layout.erb +17 -17
  531. data/templates/default/onefile/html/readme.erb +2 -2
  532. data/templates/default/onefile/html/setup.rb +62 -62
  533. data/templates/default/root/dot/child.erb +2 -2
  534. data/templates/default/root/dot/setup.rb +6 -6
  535. data/templates/default/root/html/setup.rb +2 -2
  536. data/templates/default/tags/html/example.erb +10 -10
  537. data/templates/default/tags/html/index.erb +2 -2
  538. data/templates/default/tags/html/option.erb +24 -24
  539. data/templates/default/tags/html/overload.erb +13 -13
  540. data/templates/default/tags/html/see.erb +7 -7
  541. data/templates/default/tags/html/tag.erb +20 -20
  542. data/templates/default/tags/setup.rb +57 -57
  543. data/templates/default/tags/text/example.erb +12 -12
  544. data/templates/default/tags/text/index.erb +1 -1
  545. data/templates/default/tags/text/option.erb +20 -20
  546. data/templates/default/tags/text/overload.erb +19 -19
  547. data/templates/default/tags/text/see.erb +11 -11
  548. data/templates/default/tags/text/tag.erb +13 -13
  549. data/templates/guide/class/html/setup.rb +2 -2
  550. data/templates/guide/docstring/html/setup.rb +2 -2
  551. data/templates/guide/fulldoc/html/css/style.css +108 -108
  552. data/templates/guide/fulldoc/html/js/app.js +33 -33
  553. data/templates/guide/fulldoc/html/setup.rb +74 -74
  554. data/templates/guide/layout/html/layout.erb +81 -81
  555. data/templates/guide/layout/html/setup.rb +25 -25
  556. data/templates/guide/method/html/header.erb +17 -17
  557. data/templates/guide/method/html/setup.rb +22 -22
  558. data/templates/guide/module/html/header.erb +6 -6
  559. data/templates/guide/module/html/method_list.erb +4 -4
  560. data/templates/guide/module/html/setup.rb +27 -27
  561. data/templates/guide/onefile/html/files.erb +4 -4
  562. data/templates/guide/onefile/html/setup.rb +6 -6
  563. data/templates/guide/onefile/html/toc.erb +3 -3
  564. data/templates/guide/tags/html/setup.rb +9 -9
  565. data/yard.gemspec +43 -43
  566. metadata +4 -4
@@ -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: