yard 0.9.17 → 0.9.22

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 +774 -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 -1878
@@ -1,21 +1,21 @@
1
- # frozen_string_literal: true
2
- module YARD::CodeObjects
3
- register_separator NSEP, :module
4
-
5
- # Represents a Ruby module.
6
- class ModuleObject < NamespaceObject
7
- # Returns the inheritance tree of mixins.
8
- #
9
- # @param [Boolean] include_mods if true, will include mixed in
10
- # modules (which is likely what is wanted).
11
- # @return [Array<NamespaceObject>] a list of namespace objects
12
- def inheritance_tree(include_mods = false)
13
- return [self] unless include_mods
14
- [self] + mixins(:instance, :class).map do |m|
15
- next if m == self
16
- next m unless m.respond_to?(:inheritance_tree)
17
- m.inheritance_tree(true)
18
- end.compact.flatten.uniq
19
- end
20
- end
21
- end
1
+ # frozen_string_literal: true
2
+ module YARD::CodeObjects
3
+ register_separator NSEP, :module
4
+
5
+ # Represents a Ruby module.
6
+ class ModuleObject < NamespaceObject
7
+ # Returns the inheritance tree of mixins.
8
+ #
9
+ # @param [Boolean] include_mods if true, will include mixed in
10
+ # modules (which is likely what is wanted).
11
+ # @return [Array<NamespaceObject>] a list of namespace objects
12
+ def inheritance_tree(include_mods = false)
13
+ return [self] unless include_mods
14
+ [self] + mixins(:instance, :class).map do |m|
15
+ next if m == self
16
+ next m unless m.respond_to?(:inheritance_tree)
17
+ m.inheritance_tree(true)
18
+ end.compact.flatten.uniq
19
+ end
20
+ end
21
+ end
@@ -1,114 +1,114 @@
1
- # frozen_string_literal: true
2
- module YARD
3
- module CodeObjects
4
- # This module controls registration and accessing of namespace separators
5
- # for {Registry} lookup.
6
- #
7
- # @since 0.9.1
8
- module NamespaceMapper
9
- # @!group Registering a Separator for a Namespace
10
-
11
- # Registers a separator with an optional set of valid types that
12
- # must follow the separator lexically.
13
- #
14
- # @param sep [String] the separator string for the namespace
15
- # @param valid_types [Array<Symbol>] a list of object types that
16
- # must follow the separator. If the list is empty, any type can
17
- # follow the separator.
18
- # @example Registering separators for a method object
19
- # # Anything after a "#" denotes a method object
20
- # register_separator "#", :method
21
- # # Anything after a "." denotes a method object
22
- # register_separator ".", :method
23
- def register_separator(sep, *valid_types)
24
- NamespaceMapper.invalidate
25
-
26
- valid_types.each do |t|
27
- NamespaceMapper.rev_map[t] ||= []
28
- NamespaceMapper.rev_map[t] << sep
29
- end
30
-
31
- NamespaceMapper.map[sep] ||= []
32
- NamespaceMapper.map[sep] += valid_types
33
- end
34
-
35
- # Clears the map of separators.
36
- #
37
- # @return [void]
38
- def clear_separators
39
- NamespaceMapper.invalidate
40
- NamespaceMapper.map = {}
41
- NamespaceMapper.rev_map = {}
42
- end
43
-
44
- # Gets or sets the default separator value to use when no
45
- # separator for the namespace can be determined.
46
- #
47
- # @param value [String, nil] the default separator, or nil to return the
48
- # value
49
- # @example
50
- # default_separator "::"
51
- def default_separator(value = nil)
52
- if value
53
- NamespaceMapper.default_separator = Regexp.quote value
54
- else
55
- NamespaceMapper.default_separator
56
- end
57
- end
58
-
59
- # @!group Separator and Type Lookup Helpers
60
-
61
- # @return [Array<String>] all of the registered separators
62
- def separators
63
- NamespaceMapper.map.keys
64
- end
65
-
66
- # @return [Regexp] the regexp match of all separators
67
- def separators_match
68
- NamespaceMapper.map_match
69
- end
70
-
71
- # @param sep [String] the separator to return types for
72
- # @return [Array<Symbol>] a list of types registered to a separator
73
- def types_for_separator(sep)
74
- NamespaceMapper.map[sep]
75
- end
76
-
77
- # @param type [String] the type to return separators for
78
- # @return [Array<Symbol>] a list of separators registered to a type
79
- def separators_for_type(type)
80
- NamespaceMapper.rev_map[type]
81
- end
82
-
83
- # Internal methods to act as a singleton registry
84
- class << self
85
- # @!visibility private
86
-
87
- # @return [Hash] a mapping of types to separators
88
- def map
89
- @map ||= {}
90
- end
91
-
92
- # @return [Hash] a reverse mapping of separators to types
93
- def rev_map
94
- @rev_map ||= {}
95
- end
96
-
97
- # Invalidates all separators
98
- # @return [void]
99
- def invalidate
100
- @map_match = nil
101
- end
102
-
103
- # @return [Regexp] the full list of separators as a regexp match
104
- def map_match
105
- @map_match ||= @map.keys.map {|k| Regexp.quote k }.join('|')
106
- end
107
-
108
- # @return [String] the default separator when no separator can begin
109
- # determined.
110
- attr_accessor :default_separator
111
- end
112
- end
113
- end
114
- end
1
+ # frozen_string_literal: true
2
+ module YARD
3
+ module CodeObjects
4
+ # This module controls registration and accessing of namespace separators
5
+ # for {Registry} lookup.
6
+ #
7
+ # @since 0.9.1
8
+ module NamespaceMapper
9
+ # @!group Registering a Separator for a Namespace
10
+
11
+ # Registers a separator with an optional set of valid types that
12
+ # must follow the separator lexically.
13
+ #
14
+ # @param sep [String] the separator string for the namespace
15
+ # @param valid_types [Array<Symbol>] a list of object types that
16
+ # must follow the separator. If the list is empty, any type can
17
+ # follow the separator.
18
+ # @example Registering separators for a method object
19
+ # # Anything after a "#" denotes a method object
20
+ # register_separator "#", :method
21
+ # # Anything after a "." denotes a method object
22
+ # register_separator ".", :method
23
+ def register_separator(sep, *valid_types)
24
+ NamespaceMapper.invalidate
25
+
26
+ valid_types.each do |t|
27
+ NamespaceMapper.rev_map[t] ||= []
28
+ NamespaceMapper.rev_map[t] << sep
29
+ end
30
+
31
+ NamespaceMapper.map[sep] ||= []
32
+ NamespaceMapper.map[sep] += valid_types
33
+ end
34
+
35
+ # Clears the map of separators.
36
+ #
37
+ # @return [void]
38
+ def clear_separators
39
+ NamespaceMapper.invalidate
40
+ NamespaceMapper.map = {}
41
+ NamespaceMapper.rev_map = {}
42
+ end
43
+
44
+ # Gets or sets the default separator value to use when no
45
+ # separator for the namespace can be determined.
46
+ #
47
+ # @param value [String, nil] the default separator, or nil to return the
48
+ # value
49
+ # @example
50
+ # default_separator "::"
51
+ def default_separator(value = nil)
52
+ if value
53
+ NamespaceMapper.default_separator = Regexp.quote value
54
+ else
55
+ NamespaceMapper.default_separator
56
+ end
57
+ end
58
+
59
+ # @!group Separator and Type Lookup Helpers
60
+
61
+ # @return [Array<String>] all of the registered separators
62
+ def separators
63
+ NamespaceMapper.map.keys
64
+ end
65
+
66
+ # @return [Regexp] the regexp match of all separators
67
+ def separators_match
68
+ NamespaceMapper.map_match
69
+ end
70
+
71
+ # @param sep [String] the separator to return types for
72
+ # @return [Array<Symbol>] a list of types registered to a separator
73
+ def types_for_separator(sep)
74
+ NamespaceMapper.map[sep]
75
+ end
76
+
77
+ # @param type [String] the type to return separators for
78
+ # @return [Array<Symbol>] a list of separators registered to a type
79
+ def separators_for_type(type)
80
+ NamespaceMapper.rev_map[type]
81
+ end
82
+
83
+ # Internal methods to act as a singleton registry
84
+ class << self
85
+ # @!visibility private
86
+
87
+ # @return [Hash] a mapping of types to separators
88
+ def map
89
+ @map ||= {}
90
+ end
91
+
92
+ # @return [Hash] a reverse mapping of separators to types
93
+ def rev_map
94
+ @rev_map ||= {}
95
+ end
96
+
97
+ # Invalidates all separators
98
+ # @return [void]
99
+ def invalidate
100
+ @map_match = nil
101
+ end
102
+
103
+ # @return [Regexp] the full list of separators as a regexp match
104
+ def map_match
105
+ @map_match ||= @map.keys.map {|k| Regexp.quote k }.join('|')
106
+ end
107
+
108
+ # @return [String] the default separator when no separator can begin
109
+ # determined.
110
+ attr_accessor :default_separator
111
+ end
112
+ end
113
+ end
114
+ end
@@ -1,200 +1,200 @@
1
- # frozen_string_literal: true
2
- module YARD::CodeObjects
3
- register_separator NSEP, :namespace
4
- default_separator NSEP
5
-
6
- # A "namespace" is any object that can store other objects within itself.
7
- # The two main Ruby objects that can act as namespaces are modules
8
- # ({ModuleObject}) and classes ({ClassObject}).
9
- class NamespaceObject < Base
10
- # @return [Array<String>] a list of ordered group names inside the namespace
11
- # @since 0.6.0
12
- attr_accessor :groups
13
-
14
- # The list of objects defined in this namespace
15
- # @return [Array<Base>] a list of objects
16
- attr_reader :children
17
-
18
- # A hash containing two keys, class and instance, each containing
19
- # the attribute name with a { :read, :write } hash for the read and
20
- # write objects respectively.
21
- #
22
- # @example The attributes of an object
23
- # >> Registry.at('YARD::Docstring').attributes
24
- # => {
25
- # :class => { },
26
- # :instance => {
27
- # :ref_tags => {
28
- # :read => #<yardoc method YARD::Docstring#ref_tags>,
29
- # :write => nil
30
- # },
31
- # :object => {
32
- # :read => #<yardoc method YARD::Docstring#object>,
33
- # :write => #<yardoc method YARD::Docstring#object=>
34
- # },
35
- # ...
36
- # }
37
- # }
38
- # @return [Hash] a list of methods
39
- attr_reader :attributes
40
-
41
- # A hash containing two keys, :class and :instance, each containing
42
- # a hash of objects and their alias names.
43
- # @return [Hash] a list of methods
44
- attr_reader :aliases
45
-
46
- # Class mixins
47
- # @return [Array<ModuleObject>] a list of mixins
48
- attr_reader :class_mixins
49
-
50
- # Instance mixins
51
- # @return [Array<ModuleObject>] a list of mixins
52
- attr_reader :instance_mixins
53
-
54
- # Creates a new namespace object inside +namespace+ with +name+.
55
- # @see Base#initialize
56
- def initialize(namespace, name, *args, &block)
57
- @children = CodeObjectList.new(self)
58
- @class_mixins = CodeObjectList.new(self)
59
- @instance_mixins = CodeObjectList.new(self)
60
- @attributes = SymbolHash[:class => SymbolHash.new, :instance => SymbolHash.new]
61
- @aliases = {}
62
- @groups = []
63
- super
64
- end
65
-
66
- # Only the class attributes
67
- # @return [Hash] a list of method names and their read/write objects
68
- # @see #attributes
69
- def class_attributes
70
- attributes[:class]
71
- end
72
-
73
- # Only the instance attributes
74
- # @return [Hash] a list of method names and their read/write objects
75
- # @see #attributes
76
- def instance_attributes
77
- attributes[:instance]
78
- end
79
-
80
- # Looks for a child that matches the attributes specified by +opts+.
81
- #
82
- # @example Finds a child by name and scope
83
- # namespace.child(:name => :to_s, :scope => :instance)
84
- # # => #<yardoc method MyClass#to_s>
85
- # @return [Base, nil] the first matched child object, or nil
86
- def child(opts = {})
87
- if !opts.is_a?(Hash)
88
- children.find {|o| o.name == opts.to_sym }
89
- else
90
- opts = SymbolHash[opts]
91
- children.find do |obj|
92
- opts.each do |meth, value|
93
- break false unless value.is_a?(Array) ? value.include?(obj[meth]) : obj[meth] == value
94
- end
95
- end
96
- end
97
- end
98
-
99
- # Returns all methods that match the attributes specified by +opts+. If
100
- # no options are provided, returns all methods.
101
- #
102
- # @example Finds all private and protected class methods
103
- # namespace.meths(:visibility => [:private, :protected], :scope => :class)
104
- # # => [#<yardoc method MyClass.privmeth>, #<yardoc method MyClass.protmeth>]
105
- # @option opts [Array<Symbol>, Symbol] :visibility ([:public, :private,
106
- # :protected]) the visibility of the methods to list. Can be an array or
107
- # single value.
108
- # @option opts [Array<Symbol>, Symbol] :scope ([:class, :instance]) the
109
- # scope of the methods to list. Can be an array or single value.
110
- # @option opts [Boolean] :included (true) whether to include mixed in
111
- # methods in the list.
112
- # @return [Array<MethodObject>] a list of method objects
113
- def meths(opts = {})
114
- opts = SymbolHash[
115
- :visibility => [:public, :private, :protected],
116
- :scope => [:class, :instance],
117
- :included => true
118
- ].update(opts)
119
-
120
- opts[:visibility] = [opts[:visibility]].flatten
121
- opts[:scope] = [opts[:scope]].flatten
122
-
123
- ourmeths = children.select do |o|
124
- o.is_a?(MethodObject) &&
125
- opts[:visibility].include?(o.visibility) &&
126
- opts[:scope].include?(o.scope)
127
- end
128
-
129
- ourmeths + (opts[:included] ? included_meths(opts) : [])
130
- end
131
-
132
- # Returns methods included from any mixins that match the attributes
133
- # specified by +opts+. If no options are specified, returns all included
134
- # methods.
135
- #
136
- # @option opts [Array<Symbol>, Symbol] :visibility ([:public, :private,
137
- # :protected]) the visibility of the methods to list. Can be an array or
138
- # single value.
139
- # @option opts [Array<Symbol>, Symbol] :scope ([:class, :instance]) the
140
- # scope of the methods to list. Can be an array or single value.
141
- # @option opts [Boolean] :included (true) whether to include mixed in
142
- # methods in the list.
143
- # @see #meths
144
- def included_meths(opts = {})
145
- opts = SymbolHash[:scope => [:instance, :class]].update(opts)
146
- [opts[:scope]].flatten.map do |scope|
147
- mixins(scope).inject([]) do |list, mixin|
148
- next list if mixin.is_a?(Proxy)
149
- arr = mixin.meths(opts.merge(:scope => :instance)).reject do |o|
150
- next false if opts[:all]
151
- child(:name => o.name, :scope => scope) || list.find {|o2| o2.name == o.name }
152
- end
153
- arr.map! {|o| ExtendedMethodObject.new(o) } if scope == :class
154
- list + arr
155
- end
156
- end.flatten
157
- end
158
-
159
- # Returns all constants in the namespace
160
- #
161
- # @option opts [Boolean] :included (true) whether or not to include
162
- # mixed in constants in list
163
- # @return [Array<ConstantObject>] a list of constant objects
164
- def constants(opts = {})
165
- opts = SymbolHash[:included => true].update(opts)
166
- consts = children.select {|o| o.is_a? ConstantObject }
167
- consts + (opts[:included] ? included_constants : [])
168
- end
169
-
170
- # Returns constants included from any mixins
171
- # @return [Array<ConstantObject>] a list of constant objects
172
- def included_constants
173
- instance_mixins.inject([]) do |list, mixin|
174
- if mixin.respond_to? :constants
175
- list += mixin.constants.reject do |o|
176
- child(:name => o.name) || list.find {|o2| o2.name == o.name }
177
- end
178
- else
179
- list
180
- end
181
- end
182
- end
183
-
184
- # Returns class variables defined in this namespace.
185
- # @return [Array<ClassVariableObject>] a list of class variable objects
186
- def cvars
187
- children.select {|o| o.is_a? ClassVariableObject }
188
- end
189
-
190
- # Returns for specific scopes. If no scopes are provided, returns all mixins.
191
- # @param [Array<Symbol>] scopes a list of scopes (:class, :instance) to
192
- # return mixins for. If this is empty, all scopes will be returned.
193
- # @return [Array<ModuleObject>] a list of mixins
194
- def mixins(*scopes)
195
- return class_mixins if scopes == [:class]
196
- return instance_mixins if scopes == [:instance]
197
- class_mixins | instance_mixins
198
- end
199
- end
200
- end
1
+ # frozen_string_literal: true
2
+ module YARD::CodeObjects
3
+ register_separator NSEP, :namespace
4
+ default_separator NSEP
5
+
6
+ # A "namespace" is any object that can store other objects within itself.
7
+ # The two main Ruby objects that can act as namespaces are modules
8
+ # ({ModuleObject}) and classes ({ClassObject}).
9
+ class NamespaceObject < Base
10
+ # @return [Array<String>] a list of ordered group names inside the namespace
11
+ # @since 0.6.0
12
+ attr_accessor :groups
13
+
14
+ # The list of objects defined in this namespace
15
+ # @return [Array<Base>] a list of objects
16
+ attr_reader :children
17
+
18
+ # A hash containing two keys, class and instance, each containing
19
+ # the attribute name with a { :read, :write } hash for the read and
20
+ # write objects respectively.
21
+ #
22
+ # @example The attributes of an object
23
+ # >> Registry.at('YARD::Docstring').attributes
24
+ # => {
25
+ # :class => { },
26
+ # :instance => {
27
+ # :ref_tags => {
28
+ # :read => #<yardoc method YARD::Docstring#ref_tags>,
29
+ # :write => nil
30
+ # },
31
+ # :object => {
32
+ # :read => #<yardoc method YARD::Docstring#object>,
33
+ # :write => #<yardoc method YARD::Docstring#object=>
34
+ # },
35
+ # ...
36
+ # }
37
+ # }
38
+ # @return [Hash] a list of methods
39
+ attr_reader :attributes
40
+
41
+ # A hash containing two keys, :class and :instance, each containing
42
+ # a hash of objects and their alias names.
43
+ # @return [Hash] a list of methods
44
+ attr_reader :aliases
45
+
46
+ # Class mixins
47
+ # @return [Array<ModuleObject>] a list of mixins
48
+ attr_reader :class_mixins
49
+
50
+ # Instance mixins
51
+ # @return [Array<ModuleObject>] a list of mixins
52
+ attr_reader :instance_mixins
53
+
54
+ # Creates a new namespace object inside +namespace+ with +name+.
55
+ # @see Base#initialize
56
+ def initialize(namespace, name, *args, &block)
57
+ @children = CodeObjectList.new(self)
58
+ @class_mixins = CodeObjectList.new(self)
59
+ @instance_mixins = CodeObjectList.new(self)
60
+ @attributes = SymbolHash[:class => SymbolHash.new, :instance => SymbolHash.new]
61
+ @aliases = {}
62
+ @groups = []
63
+ super
64
+ end
65
+
66
+ # Only the class attributes
67
+ # @return [Hash] a list of method names and their read/write objects
68
+ # @see #attributes
69
+ def class_attributes
70
+ attributes[:class]
71
+ end
72
+
73
+ # Only the instance attributes
74
+ # @return [Hash] a list of method names and their read/write objects
75
+ # @see #attributes
76
+ def instance_attributes
77
+ attributes[:instance]
78
+ end
79
+
80
+ # Looks for a child that matches the attributes specified by +opts+.
81
+ #
82
+ # @example Finds a child by name and scope
83
+ # namespace.child(:name => :to_s, :scope => :instance)
84
+ # # => #<yardoc method MyClass#to_s>
85
+ # @return [Base, nil] the first matched child object, or nil
86
+ def child(opts = {})
87
+ if !opts.is_a?(Hash)
88
+ children.find {|o| o.name == opts.to_sym }
89
+ else
90
+ opts = SymbolHash[opts]
91
+ children.find do |obj|
92
+ opts.each do |meth, value|
93
+ break false unless value.is_a?(Array) ? value.include?(obj[meth]) : obj[meth] == value
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ # Returns all methods that match the attributes specified by +opts+. If
100
+ # no options are provided, returns all methods.
101
+ #
102
+ # @example Finds all private and protected class methods
103
+ # namespace.meths(:visibility => [:private, :protected], :scope => :class)
104
+ # # => [#<yardoc method MyClass.privmeth>, #<yardoc method MyClass.protmeth>]
105
+ # @option opts [Array<Symbol>, Symbol] :visibility ([:public, :private,
106
+ # :protected]) the visibility of the methods to list. Can be an array or
107
+ # single value.
108
+ # @option opts [Array<Symbol>, Symbol] :scope ([:class, :instance]) the
109
+ # scope of the methods to list. Can be an array or single value.
110
+ # @option opts [Boolean] :included (true) whether to include mixed in
111
+ # methods in the list.
112
+ # @return [Array<MethodObject>] a list of method objects
113
+ def meths(opts = {})
114
+ opts = SymbolHash[
115
+ :visibility => [:public, :private, :protected],
116
+ :scope => [:class, :instance],
117
+ :included => true
118
+ ].update(opts)
119
+
120
+ opts[:visibility] = [opts[:visibility]].flatten
121
+ opts[:scope] = [opts[:scope]].flatten
122
+
123
+ ourmeths = children.select do |o|
124
+ o.is_a?(MethodObject) &&
125
+ opts[:visibility].include?(o.visibility) &&
126
+ opts[:scope].include?(o.scope)
127
+ end
128
+
129
+ ourmeths + (opts[:included] ? included_meths(opts) : [])
130
+ end
131
+
132
+ # Returns methods included from any mixins that match the attributes
133
+ # specified by +opts+. If no options are specified, returns all included
134
+ # methods.
135
+ #
136
+ # @option opts [Array<Symbol>, Symbol] :visibility ([:public, :private,
137
+ # :protected]) the visibility of the methods to list. Can be an array or
138
+ # single value.
139
+ # @option opts [Array<Symbol>, Symbol] :scope ([:class, :instance]) the
140
+ # scope of the methods to list. Can be an array or single value.
141
+ # @option opts [Boolean] :included (true) whether to include mixed in
142
+ # methods in the list.
143
+ # @see #meths
144
+ def included_meths(opts = {})
145
+ opts = SymbolHash[:scope => [:instance, :class]].update(opts)
146
+ [opts[:scope]].flatten.map do |scope|
147
+ mixins(scope).inject([]) do |list, mixin|
148
+ next list if mixin.is_a?(Proxy)
149
+ arr = mixin.meths(opts.merge(:scope => :instance)).reject do |o|
150
+ next false if opts[:all]
151
+ child(:name => o.name, :scope => scope) || list.find {|o2| o2.name == o.name }
152
+ end
153
+ arr.map! {|o| ExtendedMethodObject.new(o) } if scope == :class
154
+ list + arr
155
+ end
156
+ end.flatten
157
+ end
158
+
159
+ # Returns all constants in the namespace
160
+ #
161
+ # @option opts [Boolean] :included (true) whether or not to include
162
+ # mixed in constants in list
163
+ # @return [Array<ConstantObject>] a list of constant objects
164
+ def constants(opts = {})
165
+ opts = SymbolHash[:included => true].update(opts)
166
+ consts = children.select {|o| o.is_a? ConstantObject }
167
+ consts + (opts[:included] ? included_constants : [])
168
+ end
169
+
170
+ # Returns constants included from any mixins
171
+ # @return [Array<ConstantObject>] a list of constant objects
172
+ def included_constants
173
+ instance_mixins.inject([]) do |list, mixin|
174
+ if mixin.respond_to? :constants
175
+ list += mixin.constants.reject do |o|
176
+ child(:name => o.name) || list.find {|o2| o2.name == o.name }
177
+ end
178
+ else
179
+ list
180
+ end
181
+ end
182
+ end
183
+
184
+ # Returns class variables defined in this namespace.
185
+ # @return [Array<ClassVariableObject>] a list of class variable objects
186
+ def cvars
187
+ children.select {|o| o.is_a? ClassVariableObject }
188
+ end
189
+
190
+ # Returns for specific scopes. If no scopes are provided, returns all mixins.
191
+ # @param [Array<Symbol>] scopes a list of scopes (:class, :instance) to
192
+ # return mixins for. If this is empty, all scopes will be returned.
193
+ # @return [Array<ModuleObject>] a list of mixins
194
+ def mixins(*scopes)
195
+ return class_mixins if scopes == [:class]
196
+ return instance_mixins if scopes == [:instance]
197
+ class_mixins | instance_mixins
198
+ end
199
+ end
200
+ end