yard 0.9.18 → 0.9.19

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

Potentially problematic release.


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

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