yard 0.9.18 → 0.9.23

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