yard 0.9.5 → 0.9.6

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 (575) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +0 -0
  3. data/CHANGELOG.md +20 -0
  4. data/LEGAL +0 -0
  5. data/LICENSE +0 -0
  6. data/README.md +70 -35
  7. data/Rakefile +10 -39
  8. data/benchmarks/builtins_vs_eval.rb +9 -8
  9. data/benchmarks/concat_vs_join.rb +1 -0
  10. data/benchmarks/erb_vs_erubis.rb +3 -2
  11. data/benchmarks/format_args.rb +1 -0
  12. data/benchmarks/generation.rb +2 -1
  13. data/benchmarks/marshal_vs_dbm.rb +2 -1
  14. data/benchmarks/parsing.rb +1 -1
  15. data/benchmarks/pathname_vs_string.rb +1 -0
  16. data/benchmarks/rdoc_vs_yardoc.rb +2 -1
  17. data/benchmarks/registry_store_types.rb +1 -0
  18. data/benchmarks/ri_vs_yri.rb +1 -0
  19. data/benchmarks/ripper_parser.rb +2 -1
  20. data/benchmarks/splat_vs_flatten.rb +4 -3
  21. data/benchmarks/template_erb.rb +2 -1
  22. data/benchmarks/template_format.rb +1 -0
  23. data/benchmarks/template_profile.rb +4 -3
  24. data/benchmarks/yri_cache.rb +2 -1
  25. data/bin/yard +2 -1
  26. data/bin/yardoc +2 -1
  27. data/bin/yri +2 -1
  28. data/docs/CodeObjects.md +0 -0
  29. data/docs/GettingStarted.md +0 -0
  30. data/docs/Handlers.md +0 -0
  31. data/docs/Overview.md +0 -0
  32. data/docs/Parser.md +0 -0
  33. data/docs/Tags.md +0 -0
  34. data/docs/TagsArch.md +0 -0
  35. data/docs/Templates.md +0 -0
  36. data/docs/WhatsNew.md +0 -0
  37. data/docs/images/code-objects-class-diagram.png +0 -0
  38. data/docs/images/tags-class-diagram.png +0 -0
  39. data/docs/templates/default/fulldoc/html/full_list_tag.erb +0 -0
  40. data/docs/templates/default/fulldoc/html/setup.rb +1 -1
  41. data/docs/templates/default/layout/html/setup.rb +1 -0
  42. data/docs/templates/default/layout/html/tag_list.erb +0 -0
  43. data/docs/templates/default/yard_tags/html/list.erb +0 -0
  44. data/docs/templates/default/yard_tags/html/setup.rb +18 -19
  45. data/docs/templates/plugin.rb +18 -13
  46. data/lib/rubygems_plugin.rb +1 -0
  47. data/lib/yard.rb +5 -6
  48. data/lib/yard/autoload.rb +4 -0
  49. data/lib/yard/cli/command.rb +3 -2
  50. data/lib/yard/cli/command_parser.rb +4 -3
  51. data/lib/yard/cli/config.rb +5 -4
  52. data/lib/yard/cli/diff.rb +39 -39
  53. data/lib/yard/cli/display.rb +2 -1
  54. data/lib/yard/cli/gems.rb +6 -5
  55. data/lib/yard/cli/graph.rb +4 -5
  56. data/lib/yard/cli/help.rb +4 -2
  57. data/lib/yard/cli/i18n.rb +2 -1
  58. data/lib/yard/cli/list.rb +2 -1
  59. data/lib/yard/cli/markup_types.rb +4 -5
  60. data/lib/yard/cli/server.rb +27 -24
  61. data/lib/yard/cli/stats.rb +20 -16
  62. data/lib/yard/cli/yardoc.rb +22 -19
  63. data/lib/yard/cli/yardopts_command.rb +3 -2
  64. data/lib/yard/cli/yri.rb +26 -25
  65. data/lib/yard/code_objects/base.rb +41 -37
  66. data/lib/yard/code_objects/class_object.rb +3 -2
  67. data/lib/yard/code_objects/class_variable_object.rb +2 -1
  68. data/lib/yard/code_objects/constant_object.rb +2 -1
  69. data/lib/yard/code_objects/extended_method_object.rb +2 -1
  70. data/lib/yard/code_objects/extra_file_object.rb +1 -0
  71. data/lib/yard/code_objects/macro_object.rb +10 -10
  72. data/lib/yard/code_objects/method_object.rb +15 -13
  73. data/lib/yard/code_objects/module_object.rb +1 -0
  74. data/lib/yard/code_objects/namespace_mapper.rb +1 -0
  75. data/lib/yard/code_objects/namespace_object.rb +2 -5
  76. data/lib/yard/code_objects/proxy.rb +35 -53
  77. data/lib/yard/code_objects/root_object.rb +3 -1
  78. data/lib/yard/config.rb +8 -9
  79. data/lib/yard/core_ext/array.rb +1 -0
  80. data/lib/yard/core_ext/file.rb +4 -3
  81. data/lib/yard/core_ext/hash.rb +3 -2
  82. data/lib/yard/core_ext/insertion.rb +7 -4
  83. data/lib/yard/core_ext/module.rb +2 -1
  84. data/lib/yard/core_ext/string.rb +5 -4
  85. data/lib/yard/core_ext/symbol_hash.rb +8 -6
  86. data/lib/yard/docstring.rb +26 -15
  87. data/lib/yard/docstring_parser.rb +61 -61
  88. data/lib/yard/gem_index.rb +17 -0
  89. data/lib/yard/globals.rb +6 -2
  90. data/lib/yard/handlers/base.rb +22 -23
  91. data/lib/yard/handlers/c/alias_handler.rb +3 -2
  92. data/lib/yard/handlers/c/attribute_handler.rb +2 -2
  93. data/lib/yard/handlers/c/base.rb +13 -13
  94. data/lib/yard/handlers/c/class_handler.rb +1 -0
  95. data/lib/yard/handlers/c/constant_handler.rb +3 -2
  96. data/lib/yard/handlers/c/handler_methods.rb +24 -25
  97. data/lib/yard/handlers/c/init_handler.rb +4 -2
  98. data/lib/yard/handlers/c/method_handler.rb +7 -6
  99. data/lib/yard/handlers/c/mixin_handler.rb +3 -1
  100. data/lib/yard/handlers/c/module_handler.rb +1 -0
  101. data/lib/yard/handlers/c/override_comment_handler.rb +2 -1
  102. data/lib/yard/handlers/c/path_handler.rb +1 -0
  103. data/lib/yard/handlers/c/struct_handler.rb +1 -0
  104. data/lib/yard/handlers/c/symbol_handler.rb +2 -1
  105. data/lib/yard/handlers/processor.rb +14 -15
  106. data/lib/yard/handlers/ruby/alias_handler.rb +4 -2
  107. data/lib/yard/handlers/ruby/attribute_handler.rb +11 -6
  108. data/lib/yard/handlers/ruby/base.rb +5 -4
  109. data/lib/yard/handlers/ruby/class_condition_handler.rb +4 -3
  110. data/lib/yard/handlers/ruby/class_handler.rb +7 -9
  111. data/lib/yard/handlers/ruby/class_variable_handler.rb +2 -1
  112. data/lib/yard/handlers/ruby/comment_handler.rb +1 -0
  113. data/lib/yard/handlers/ruby/constant_handler.rb +9 -5
  114. data/lib/yard/handlers/ruby/decorator_handler_methods.rb +15 -28
  115. data/lib/yard/handlers/ruby/dsl_handler.rb +1 -0
  116. data/lib/yard/handlers/ruby/dsl_handler_methods.rb +7 -6
  117. data/lib/yard/handlers/ruby/exception_handler.rb +1 -0
  118. data/lib/yard/handlers/ruby/extend_handler.rb +1 -0
  119. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +6 -4
  120. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +12 -7
  121. data/lib/yard/handlers/ruby/legacy/base.rb +21 -26
  122. data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +7 -7
  123. data/lib/yard/handlers/ruby/legacy/class_handler.rb +7 -5
  124. data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +2 -1
  125. data/lib/yard/handlers/ruby/legacy/comment_handler.rb +1 -0
  126. data/lib/yard/handlers/ruby/legacy/constant_handler.rb +2 -1
  127. data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +1 -0
  128. data/lib/yard/handlers/ruby/legacy/exception_handler.rb +2 -1
  129. data/lib/yard/handlers/ruby/legacy/extend_handler.rb +2 -1
  130. data/lib/yard/handlers/ruby/legacy/method_handler.rb +11 -6
  131. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +5 -5
  132. data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +2 -1
  133. data/lib/yard/handlers/ruby/legacy/module_handler.rb +2 -1
  134. data/lib/yard/handlers/ruby/legacy/private_class_method_handler.rb +2 -1
  135. data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +2 -1
  136. data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +3 -2
  137. data/lib/yard/handlers/ruby/legacy/yield_handler.rb +1 -0
  138. data/lib/yard/handlers/ruby/method_condition_handler.rb +2 -1
  139. data/lib/yard/handlers/ruby/method_handler.rb +9 -11
  140. data/lib/yard/handlers/ruby/mixin_handler.rb +2 -1
  141. data/lib/yard/handlers/ruby/module_function_handler.rb +2 -1
  142. data/lib/yard/handlers/ruby/module_handler.rb +2 -1
  143. data/lib/yard/handlers/ruby/private_class_method_handler.rb +1 -0
  144. data/lib/yard/handlers/ruby/private_constant_handler.rb +2 -2
  145. data/lib/yard/handlers/ruby/public_class_method_handler.rb +1 -0
  146. data/lib/yard/handlers/ruby/struct_handler_methods.rb +5 -4
  147. data/lib/yard/handlers/ruby/visibility_handler.rb +1 -0
  148. data/lib/yard/handlers/ruby/yield_handler.rb +1 -0
  149. data/lib/yard/i18n/locale.rb +1 -0
  150. data/lib/yard/i18n/message.rb +5 -4
  151. data/lib/yard/i18n/messages.rb +2 -1
  152. data/lib/yard/i18n/po_parser.rb +5 -4
  153. data/lib/yard/i18n/pot_generator.rb +8 -8
  154. data/lib/yard/i18n/text.rb +9 -9
  155. data/lib/yard/logging.rb +9 -6
  156. data/lib/yard/options.rb +8 -7
  157. data/lib/yard/parser/base.rb +3 -2
  158. data/lib/yard/parser/c/c_parser.rb +22 -21
  159. data/lib/yard/parser/c/comment_parser.rb +9 -6
  160. data/lib/yard/parser/c/statement.rb +1 -0
  161. data/lib/yard/parser/ruby/ast_node.rb +20 -18
  162. data/lib/yard/parser/ruby/legacy/ruby_lex.rb +99 -122
  163. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +3 -2
  164. data/lib/yard/parser/ruby/legacy/statement.rb +4 -3
  165. data/lib/yard/parser/ruby/legacy/statement_list.rb +52 -42
  166. data/lib/yard/parser/ruby/legacy/token_list.rb +16 -13
  167. data/lib/yard/parser/ruby/ruby_parser.rb +87 -63
  168. data/lib/yard/parser/ruby/token_resolver.rb +156 -0
  169. data/lib/yard/parser/source_parser.rb +28 -20
  170. data/lib/yard/rake/yardoc_task.rb +3 -3
  171. data/lib/yard/registry.rb +14 -16
  172. data/lib/yard/registry_resolver.rb +36 -20
  173. data/lib/yard/registry_store.rb +19 -15
  174. data/lib/yard/rubygems/backports.rb +2 -0
  175. data/lib/yard/rubygems/backports/LICENSE.txt +0 -0
  176. data/lib/yard/rubygems/backports/MIT.txt +0 -0
  177. data/lib/yard/rubygems/backports/gem.rb +1 -0
  178. data/lib/yard/rubygems/backports/source_index.rb +25 -30
  179. data/lib/yard/rubygems/doc_manager.rb +10 -8
  180. data/lib/yard/rubygems/hook.rb +11 -18
  181. data/lib/yard/rubygems/specification.rb +1 -0
  182. data/lib/yard/serializers/base.rb +5 -2
  183. data/lib/yard/serializers/file_system_serializer.rb +7 -6
  184. data/lib/yard/serializers/process_serializer.rb +2 -2
  185. data/lib/yard/serializers/stdout_serializer.rb +8 -6
  186. data/lib/yard/serializers/yardoc_serializer.rb +31 -26
  187. data/lib/yard/server.rb +2 -1
  188. data/lib/yard/server/adapter.rb +1 -1
  189. data/lib/yard/server/commands/base.rb +15 -2
  190. data/lib/yard/server/commands/display_file_command.rb +2 -2
  191. data/lib/yard/server/commands/display_object_command.rb +6 -3
  192. data/lib/yard/server/commands/frames_command.rb +1 -0
  193. data/lib/yard/server/commands/library_command.rb +50 -14
  194. data/lib/yard/server/commands/library_index_command.rb +5 -4
  195. data/lib/yard/server/commands/list_command.rb +1 -0
  196. data/lib/yard/server/commands/root_request_command.rb +1 -0
  197. data/lib/yard/server/commands/search_command.rb +17 -16
  198. data/lib/yard/server/commands/static_file_command.rb +2 -1
  199. data/lib/yard/server/commands/static_file_helpers.rb +23 -14
  200. data/lib/yard/server/doc_server_helper.rb +15 -1
  201. data/lib/yard/server/doc_server_serializer.rb +3 -5
  202. data/lib/yard/server/library_version.rb +44 -22
  203. data/lib/yard/server/rack_adapter.rb +2 -1
  204. data/lib/yard/server/router.rb +15 -14
  205. data/lib/yard/server/static_caching.rb +1 -0
  206. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +0 -0
  207. data/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
  208. data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +0 -0
  209. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +0 -0
  210. data/lib/yard/server/templates/default/layout/html/script_setup.erb +0 -0
  211. data/lib/yard/server/templates/default/layout/html/setup.rb +2 -1
  212. data/lib/yard/server/templates/default/method_details/html/permalink.erb +0 -0
  213. data/lib/yard/server/templates/default/method_details/html/setup.rb +1 -0
  214. data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +2 -2
  215. data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +0 -0
  216. data/lib/yard/server/templates/doc_server/library_list/html/listing.erb +1 -1
  217. data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +2 -1
  218. data/lib/yard/server/templates/doc_server/library_list/html/title.erb +0 -0
  219. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +4 -4
  220. data/lib/yard/server/templates/doc_server/processing/html/setup.rb +2 -1
  221. data/lib/yard/server/templates/doc_server/search/html/search.erb +0 -0
  222. data/lib/yard/server/templates/doc_server/search/html/setup.rb +2 -1
  223. data/lib/yard/server/webrick_adapter.rb +4 -2
  224. data/lib/yard/tags/default_factory.rb +19 -13
  225. data/lib/yard/tags/default_tag.rb +2 -1
  226. data/lib/yard/tags/directives.rb +17 -19
  227. data/lib/yard/tags/library.rb +9 -6
  228. data/lib/yard/tags/option_tag.rb +1 -0
  229. data/lib/yard/tags/overload_tag.rb +6 -4
  230. data/lib/yard/tags/ref_tag.rb +1 -0
  231. data/lib/yard/tags/ref_tag_list.rb +2 -1
  232. data/lib/yard/tags/tag.rb +16 -2
  233. data/lib/yard/tags/tag_format_error.rb +3 -2
  234. data/lib/yard/tags/types_explainer.rb +160 -0
  235. data/lib/yard/templates/engine.rb +3 -2
  236. data/lib/yard/templates/erb_cache.rb +3 -2
  237. data/lib/yard/templates/helpers/base_helper.rb +9 -6
  238. data/lib/yard/templates/helpers/filter_helper.rb +1 -0
  239. data/lib/yard/templates/helpers/html_helper.rb +65 -37
  240. data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +25 -7
  241. data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +2 -1
  242. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +10 -7
  243. data/lib/yard/templates/helpers/markup_helper.rb +12 -13
  244. data/lib/yard/templates/helpers/method_helper.rb +8 -7
  245. data/lib/yard/templates/helpers/module_helper.rb +1 -0
  246. data/lib/yard/templates/helpers/text_helper.rb +16 -11
  247. data/lib/yard/templates/helpers/uml_helper.rb +2 -1
  248. data/lib/yard/templates/section.rb +3 -4
  249. data/lib/yard/templates/template.rb +18 -11
  250. data/lib/yard/templates/template_options.rb +1 -0
  251. data/lib/yard/verifier.rb +2 -0
  252. data/lib/yard/version.rb +2 -1
  253. data/spec/cli/command_parser_spec.rb +7 -7
  254. data/spec/cli/command_spec.rb +2 -2
  255. data/spec/cli/config_spec.rb +3 -4
  256. data/spec/cli/diff_spec.rb +7 -9
  257. data/spec/cli/display_spec.rb +2 -2
  258. data/spec/cli/gems_spec.rb +11 -11
  259. data/spec/cli/graph_spec.rb +4 -3
  260. data/spec/cli/help_spec.rb +3 -3
  261. data/spec/cli/i18n_spec.rb +3 -3
  262. data/spec/cli/list_spec.rb +2 -2
  263. data/spec/cli/markup_types_spec.rb +2 -2
  264. data/spec/cli/server_spec.rb +21 -18
  265. data/spec/cli/stats_spec.rb +23 -22
  266. data/spec/cli/yardoc_spec.rb +49 -47
  267. data/spec/cli/yri_spec.rb +6 -6
  268. data/spec/code_objects/base_spec.rb +6 -4
  269. data/spec/code_objects/class_object_spec.rb +10 -9
  270. data/spec/code_objects/code_object_list_spec.rb +3 -2
  271. data/spec/code_objects/constants_spec.rb +17 -6
  272. data/spec/code_objects/extra_file_object_spec.rb +6 -5
  273. data/spec/code_objects/macro_object_spec.rb +5 -3
  274. data/spec/code_objects/method_object_spec.rb +6 -5
  275. data/spec/code_objects/module_object_spec.rb +3 -2
  276. data/spec/code_objects/namespace_object_spec.rb +10 -9
  277. data/spec/code_objects/proxy_spec.rb +9 -8
  278. data/spec/code_objects/spec_helper.rb +2 -2
  279. data/spec/config_spec.rb +9 -14
  280. data/spec/core_ext/array_spec.rb +2 -3
  281. data/spec/core_ext/file_spec.rb +3 -3
  282. data/spec/core_ext/hash_spec.rb +5 -5
  283. data/spec/core_ext/insertion_spec.rb +2 -2
  284. data/spec/core_ext/module_spec.rb +3 -3
  285. data/spec/core_ext/string_spec.rb +5 -5
  286. data/spec/core_ext/symbol_hash_spec.rb +8 -8
  287. data/spec/docstring_parser_spec.rb +6 -7
  288. data/spec/docstring_spec.rb +30 -3
  289. data/spec/examples.txt +1848 -0
  290. data/spec/handlers/alias_handler_spec.rb +2 -1
  291. data/spec/handlers/attribute_handler_spec.rb +7 -5
  292. data/spec/handlers/base_spec.rb +9 -8
  293. data/spec/handlers/c/alias_handler_spec.rb +2 -1
  294. data/spec/handlers/c/attribute_handler_spec.rb +2 -1
  295. data/spec/handlers/c/class_handler_spec.rb +2 -1
  296. data/spec/handlers/c/constant_handler_spec.rb +5 -4
  297. data/spec/handlers/c/init_handler_spec.rb +2 -1
  298. data/spec/handlers/c/method_handler_spec.rb +2 -1
  299. data/spec/handlers/c/mixin_handler_spec.rb +2 -1
  300. data/spec/handlers/c/module_handler_spec.rb +2 -1
  301. data/spec/handlers/c/override_comment_handler_spec.rb +2 -1
  302. data/spec/handlers/c/path_handler_spec.rb +2 -1
  303. data/spec/handlers/c/spec_helper.rb +1 -1
  304. data/spec/handlers/c/struct_handler_spec.rb +3 -2
  305. data/spec/handlers/class_condition_handler_spec.rb +3 -2
  306. data/spec/handlers/class_handler_spec.rb +3 -2
  307. data/spec/handlers/class_method_handler_shared_examples.rb +9 -8
  308. data/spec/handlers/class_variable_handler_spec.rb +3 -2
  309. data/spec/handlers/constant_handler_spec.rb +28 -3
  310. data/spec/handlers/decorator_handler_methods_spec.rb +47 -59
  311. data/spec/handlers/dsl_handler_spec.rb +3 -2
  312. data/spec/handlers/examples/alias_handler_001.rb.txt +0 -0
  313. data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -0
  314. data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -0
  315. data/spec/handlers/examples/class_handler_001.rb.txt +0 -0
  316. data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -0
  317. data/spec/handlers/examples/constant_handler_001.rb.txt +0 -0
  318. data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -0
  319. data/spec/handlers/examples/exception_handler_001.rb.txt +0 -0
  320. data/spec/handlers/examples/extend_handler_001.rb.txt +0 -0
  321. data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -0
  322. data/spec/handlers/examples/method_handler_001.rb.txt +2 -0
  323. data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -0
  324. data/spec/handlers/examples/module_handler_001.rb.txt +0 -0
  325. data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -0
  326. data/spec/handlers/examples/process_handler_001.rb.txt +0 -0
  327. data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -0
  328. data/spec/handlers/examples/yield_handler_001.rb.txt +0 -0
  329. data/spec/handlers/exception_handler_spec.rb +3 -2
  330. data/spec/handlers/extend_handler_spec.rb +2 -1
  331. data/spec/handlers/legacy_base_spec.rb +5 -5
  332. data/spec/handlers/method_condition_handler_spec.rb +3 -2
  333. data/spec/handlers/method_handler_spec.rb +7 -1
  334. data/spec/handlers/mixin_handler_spec.rb +3 -2
  335. data/spec/handlers/module_function_handler_spec.rb +2 -1
  336. data/spec/handlers/module_handler_spec.rb +3 -2
  337. data/spec/handlers/private_class_method_handler_spec.rb +2 -1
  338. data/spec/handlers/private_constant_handler_spec.rb +2 -1
  339. data/spec/handlers/processor_spec.rb +2 -1
  340. data/spec/handlers/public_class_method_handler_spec.rb +2 -1
  341. data/spec/handlers/ruby/base_spec.rb +6 -5
  342. data/spec/handlers/ruby/legacy/base_spec.rb +4 -4
  343. data/spec/handlers/spec_helper.rb +3 -3
  344. data/spec/handlers/visibility_handler_spec.rb +3 -2
  345. data/spec/handlers/yield_handler_spec.rb +3 -2
  346. data/spec/i18n/locale_spec.rb +3 -3
  347. data/spec/i18n/message_spec.rb +2 -2
  348. data/spec/i18n/messages_spec.rb +3 -3
  349. data/spec/i18n/pot_generator_spec.rb +34 -34
  350. data/spec/i18n/text_spec.rb +16 -12
  351. data/spec/logging_spec.rb +2 -2
  352. data/spec/options_spec.rb +9 -9
  353. data/spec/parser/base_spec.rb +2 -2
  354. data/spec/parser/c_parser_spec.rb +5 -4
  355. data/spec/parser/examples/array.c.txt +0 -0
  356. data/spec/parser/examples/example1.rb.txt +0 -0
  357. data/spec/parser/examples/extrafile.c.txt +0 -0
  358. data/spec/parser/examples/multifile.c.txt +0 -0
  359. data/spec/parser/examples/override.c.txt +0 -0
  360. data/spec/parser/examples/parse_in_order_001.rb.txt +0 -0
  361. data/spec/parser/examples/parse_in_order_002.rb.txt +0 -0
  362. data/spec/parser/examples/tag_handler_001.rb.txt +0 -0
  363. data/spec/parser/ruby/ast_node_spec.rb +7 -7
  364. data/spec/parser/ruby/legacy/statement_list_spec.rb +7 -7
  365. data/spec/parser/ruby/legacy/token_list_spec.rb +4 -4
  366. data/spec/parser/ruby/ruby_parser_spec.rb +42 -20
  367. data/spec/parser/ruby/token_resolver_spec.rb +165 -0
  368. data/spec/parser/source_parser_spec.rb +18 -18
  369. data/spec/parser/tag_parsing_spec.rb +2 -2
  370. data/spec/rake/yardoc_task_spec.rb +4 -4
  371. data/spec/registry_spec.rb +62 -56
  372. data/spec/registry_store_spec.rb +7 -7
  373. data/spec/rubygems/doc_manager_spec.rb +2 -2
  374. data/spec/serializers/data/serialized_yardoc/checksums +0 -0
  375. data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  376. data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  377. data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  378. data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  379. data/spec/serializers/data/serialized_yardoc/proxy_types +0 -0
  380. data/spec/serializers/file_system_serializer_spec.rb +8 -7
  381. data/spec/serializers/spec_helper.rb +2 -2
  382. data/spec/serializers/yardoc_serializer_spec.rb +5 -4
  383. data/spec/server/adapter_spec.rb +3 -2
  384. data/spec/server/commands/base_spec.rb +15 -11
  385. data/spec/server/commands/library_command_spec.rb +2 -2
  386. data/spec/server/doc_server_helper_spec.rb +4 -3
  387. data/spec/server/doc_server_serializer_spec.rb +3 -2
  388. data/spec/server/rack_adapter_spec.rb +3 -2
  389. data/spec/server/router_spec.rb +3 -2
  390. data/spec/server/spec_helper.rb +2 -2
  391. data/spec/server/static_caching_spec.rb +4 -3
  392. data/spec/server/webrick_servlet_spec.rb +5 -4
  393. data/spec/server_spec.rb +3 -3
  394. data/spec/spec_helper.rb +94 -21
  395. data/spec/tags/default_factory_spec.rb +10 -4
  396. data/spec/tags/default_tag_spec.rb +3 -3
  397. data/spec/tags/directives_spec.rb +12 -12
  398. data/spec/tags/library_spec.rb +16 -2
  399. data/spec/tags/overload_tag_spec.rb +4 -4
  400. data/spec/tags/ref_tag_list_spec.rb +3 -3
  401. data/spec/tags/types_explainer_spec.rb +200 -0
  402. data/spec/templates/class_spec.rb +2 -1
  403. data/spec/templates/constant_spec.rb +3 -2
  404. data/spec/templates/engine_spec.rb +4 -3
  405. data/spec/templates/examples/class001.html +0 -0
  406. data/spec/templates/examples/class001.txt +0 -0
  407. data/spec/templates/examples/class002.html +0 -0
  408. data/spec/templates/examples/constant001.txt +0 -0
  409. data/spec/templates/examples/constant002.txt +0 -0
  410. data/spec/templates/examples/constant003.txt +0 -0
  411. data/spec/templates/examples/method001.html +0 -0
  412. data/spec/templates/examples/method001.txt +0 -0
  413. data/spec/templates/examples/method002.html +0 -0
  414. data/spec/templates/examples/method002.txt +0 -0
  415. data/spec/templates/examples/method003.html +0 -0
  416. data/spec/templates/examples/method003.txt +0 -0
  417. data/spec/templates/examples/method004.html +0 -0
  418. data/spec/templates/examples/method004.txt +0 -0
  419. data/spec/templates/examples/method005.html +0 -0
  420. data/spec/templates/examples/method005.txt +0 -0
  421. data/spec/templates/examples/method006.html +108 -0
  422. data/spec/templates/examples/method006.txt +20 -0
  423. data/spec/templates/examples/module001.dot +0 -0
  424. data/spec/templates/examples/module001.html +0 -0
  425. data/spec/templates/examples/module001.txt +0 -0
  426. data/spec/templates/examples/module002.html +0 -0
  427. data/spec/templates/examples/module003.html +0 -0
  428. data/spec/templates/examples/module004.html +0 -0
  429. data/spec/templates/examples/tag001.txt +0 -0
  430. data/spec/templates/helpers/base_helper_spec.rb +5 -5
  431. data/spec/templates/helpers/html_helper_spec.rb +64 -60
  432. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +17 -6
  433. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +11 -13
  434. data/spec/templates/helpers/markup_helper_spec.rb +2 -2
  435. data/spec/templates/helpers/method_helper_spec.rb +3 -3
  436. data/spec/templates/helpers/module_helper_spec.rb +2 -2
  437. data/spec/templates/helpers/shared_signature_examples.rb +2 -1
  438. data/spec/templates/helpers/text_helper_spec.rb +7 -6
  439. data/spec/templates/method_spec.rb +18 -2
  440. data/spec/templates/module_spec.rb +4 -3
  441. data/spec/templates/onefile_spec.rb +8 -6
  442. data/spec/templates/section_spec.rb +3 -2
  443. data/spec/templates/spec_helper.rb +5 -2
  444. data/spec/templates/tag_spec.rb +3 -2
  445. data/spec/templates/template_spec.rb +15 -14
  446. data/spec/verifier_spec.rb +3 -3
  447. data/templates/default/class/dot/setup.rb +2 -1
  448. data/templates/default/class/dot/superklass.erb +0 -0
  449. data/templates/default/class/html/constructor_details.erb +0 -0
  450. data/templates/default/class/html/setup.rb +2 -1
  451. data/templates/default/class/html/subclasses.erb +0 -0
  452. data/templates/default/class/setup.rb +6 -6
  453. data/templates/default/class/text/setup.rb +2 -1
  454. data/templates/default/class/text/subclasses.erb +0 -0
  455. data/templates/default/constant/text/header.erb +0 -0
  456. data/templates/default/constant/text/setup.rb +1 -0
  457. data/templates/default/docstring/html/abstract.erb +0 -0
  458. data/templates/default/docstring/html/deprecated.erb +0 -0
  459. data/templates/default/docstring/html/index.erb +0 -0
  460. data/templates/default/docstring/html/note.erb +0 -0
  461. data/templates/default/docstring/html/private.erb +0 -0
  462. data/templates/default/docstring/html/returns_void.erb +0 -0
  463. data/templates/default/docstring/html/text.erb +0 -0
  464. data/templates/default/docstring/html/todo.erb +0 -0
  465. data/templates/default/docstring/setup.rb +4 -3
  466. data/templates/default/docstring/text/abstract.erb +0 -0
  467. data/templates/default/docstring/text/deprecated.erb +0 -0
  468. data/templates/default/docstring/text/index.erb +0 -0
  469. data/templates/default/docstring/text/note.erb +0 -0
  470. data/templates/default/docstring/text/private.erb +0 -0
  471. data/templates/default/docstring/text/returns_void.erb +0 -0
  472. data/templates/default/docstring/text/text.erb +0 -0
  473. data/templates/default/docstring/text/todo.erb +0 -0
  474. data/templates/default/fulldoc/html/css/common.css +0 -0
  475. data/templates/default/fulldoc/html/css/full_list.css +0 -0
  476. data/templates/default/fulldoc/html/css/style.css +31 -20
  477. data/templates/default/fulldoc/html/frames.erb +0 -0
  478. data/templates/default/fulldoc/html/full_list.erb +2 -2
  479. data/templates/default/fulldoc/html/full_list_class.erb +0 -0
  480. data/templates/default/fulldoc/html/full_list_file.erb +0 -0
  481. data/templates/default/fulldoc/html/full_list_method.erb +0 -0
  482. data/templates/default/fulldoc/html/js/app.js +3 -3
  483. data/templates/default/fulldoc/html/js/full_list.js +0 -0
  484. data/templates/default/fulldoc/html/js/jquery.js +0 -0
  485. data/templates/default/fulldoc/html/setup.rb +22 -23
  486. data/templates/default/layout/dot/header.erb +0 -0
  487. data/templates/default/layout/dot/setup.rb +1 -0
  488. data/templates/default/layout/html/breadcrumb.erb +0 -0
  489. data/templates/default/layout/html/files.erb +0 -0
  490. data/templates/default/layout/html/footer.erb +0 -0
  491. data/templates/default/layout/html/headers.erb +2 -2
  492. data/templates/default/layout/html/index.erb +0 -0
  493. data/templates/default/layout/html/layout.erb +1 -3
  494. data/templates/default/layout/html/listing.erb +0 -0
  495. data/templates/default/layout/html/objects.erb +0 -0
  496. data/templates/default/layout/html/script_setup.erb +0 -0
  497. data/templates/default/layout/html/search.erb +0 -0
  498. data/templates/default/layout/html/setup.rb +21 -19
  499. data/templates/default/method/html/header.erb +0 -0
  500. data/templates/default/method/setup.rb +2 -1
  501. data/templates/default/method/text/header.erb +0 -0
  502. data/templates/default/method_details/html/header.erb +0 -0
  503. data/templates/default/method_details/html/method_signature.erb +0 -0
  504. data/templates/default/method_details/html/source.erb +0 -0
  505. data/templates/default/method_details/setup.rb +1 -0
  506. data/templates/default/method_details/text/header.erb +0 -0
  507. data/templates/default/method_details/text/method_signature.erb +0 -0
  508. data/templates/default/method_details/text/setup.rb +3 -2
  509. data/templates/default/module/dot/child.erb +0 -0
  510. data/templates/default/module/dot/dependencies.erb +0 -0
  511. data/templates/default/module/dot/header.erb +0 -0
  512. data/templates/default/module/dot/info.erb +0 -0
  513. data/templates/default/module/dot/setup.rb +2 -1
  514. data/templates/default/module/html/attribute_details.erb +0 -0
  515. data/templates/default/module/html/attribute_summary.erb +0 -0
  516. data/templates/default/module/html/box_info.erb +0 -0
  517. data/templates/default/module/html/children.erb +0 -0
  518. data/templates/default/module/html/constant_summary.erb +0 -0
  519. data/templates/default/module/html/defines.erb +0 -0
  520. data/templates/default/module/html/header.erb +0 -0
  521. data/templates/default/module/html/inherited_attributes.erb +0 -0
  522. data/templates/default/module/html/inherited_constants.erb +0 -0
  523. data/templates/default/module/html/inherited_methods.erb +0 -0
  524. data/templates/default/module/html/item_summary.erb +0 -0
  525. data/templates/default/module/html/method_details_list.erb +0 -0
  526. data/templates/default/module/html/method_summary.erb +0 -0
  527. data/templates/default/module/html/methodmissing.erb +0 -0
  528. data/templates/default/module/html/pre_docstring.erb +0 -0
  529. data/templates/default/module/setup.rb +24 -26
  530. data/templates/default/module/text/children.erb +0 -0
  531. data/templates/default/module/text/class_meths_list.erb +0 -0
  532. data/templates/default/module/text/extends.erb +0 -0
  533. data/templates/default/module/text/header.erb +0 -0
  534. data/templates/default/module/text/includes.erb +0 -0
  535. data/templates/default/module/text/instance_meths_list.erb +0 -0
  536. data/templates/default/module/text/setup.rb +2 -1
  537. data/templates/default/onefile/html/files.erb +0 -0
  538. data/templates/default/onefile/html/headers.erb +0 -0
  539. data/templates/default/onefile/html/layout.erb +3 -3
  540. data/templates/default/onefile/html/readme.erb +0 -0
  541. data/templates/default/onefile/html/setup.rb +9 -8
  542. data/templates/default/root/dot/child.erb +0 -0
  543. data/templates/default/root/dot/setup.rb +3 -2
  544. data/templates/default/root/html/setup.rb +2 -1
  545. data/templates/default/tags/html/example.erb +0 -0
  546. data/templates/default/tags/html/index.erb +0 -0
  547. data/templates/default/tags/html/option.erb +1 -1
  548. data/templates/default/tags/html/overload.erb +0 -0
  549. data/templates/default/tags/html/see.erb +0 -0
  550. data/templates/default/tags/html/tag.erb +1 -1
  551. data/templates/default/tags/setup.rb +7 -5
  552. data/templates/default/tags/text/example.erb +0 -0
  553. data/templates/default/tags/text/index.erb +0 -0
  554. data/templates/default/tags/text/option.erb +1 -1
  555. data/templates/default/tags/text/overload.erb +0 -0
  556. data/templates/default/tags/text/see.erb +0 -0
  557. data/templates/default/tags/text/tag.erb +2 -2
  558. data/templates/guide/class/html/setup.rb +1 -0
  559. data/templates/guide/docstring/html/setup.rb +1 -0
  560. data/templates/guide/fulldoc/html/css/style.css +0 -0
  561. data/templates/guide/fulldoc/html/js/app.js +0 -0
  562. data/templates/guide/fulldoc/html/setup.rb +7 -6
  563. data/templates/guide/layout/html/layout.erb +0 -0
  564. data/templates/guide/layout/html/setup.rb +2 -5
  565. data/templates/guide/method/html/header.erb +0 -0
  566. data/templates/guide/method/html/setup.rb +5 -4
  567. data/templates/guide/module/html/header.erb +0 -0
  568. data/templates/guide/module/html/method_list.erb +0 -0
  569. data/templates/guide/module/html/setup.rb +2 -1
  570. data/templates/guide/onefile/html/files.erb +0 -0
  571. data/templates/guide/onefile/html/setup.rb +1 -0
  572. data/templates/guide/onefile/html/toc.erb +0 -0
  573. data/templates/guide/tags/html/setup.rb +1 -0
  574. data/yard.gemspec +2 -1
  575. metadata +10 -2
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe YARD::Tags::DefaultFactory do
3
+ RSpec.describe YARD::Tags::DefaultFactory do
4
4
  before { @f = YARD::Tags::DefaultFactory.new }
5
5
 
6
6
  describe "#parse_tag" do
@@ -59,7 +59,7 @@ describe YARD::Tags::DefaultFactory do
59
59
  expect(a).to eq b
60
60
  expect(b).to eq c
61
61
  expect(c).to eq d
62
- expect(a).to include(['a','b','c'])
62
+ expect(a).to include(['a', 'b', 'c'])
63
63
  end
64
64
 
65
65
  it "returns the text before the type list as the last element" do
@@ -158,5 +158,11 @@ describe YARD::Tags::DefaultFactory do
158
158
  expect(t.pair.defaults).to eq ["default"]
159
159
  expect(t.pair.text).to eq "description"
160
160
  end
161
+
162
+ it "allows omitting default" do
163
+ t = parse_options("xyz [Types] key")
164
+ expect(t.pair).to be_instance_of(Tags::DefaultTag)
165
+ expect(t.pair.name).to eq "key"
166
+ end
161
167
  end
162
- end
168
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe YARD::Tags::DefaultTag do
3
+ RSpec.describe YARD::Tags::DefaultTag do
4
4
  it "creates a tag with defaults" do
5
5
  o = YARD::Tags::DefaultTag.new('tagname', 'desc', ['types'], 'name', ['defaults'])
6
6
  expect(o.defaults).to eq ['defaults']
@@ -8,4 +8,4 @@ describe YARD::Tags::DefaultTag do
8
8
  expect(o.name).to eq 'name'
9
9
  expect(o.types).to eq ['types']
10
10
  end
11
- end
11
+ end
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + "/../spec_helper"
1
+ # frozen_string_literal: true
2
2
 
3
3
  def tag_parse(content, object = nil, handler = nil)
4
4
  @parser = DocstringParser.new
@@ -6,15 +6,15 @@ def tag_parse(content, object = nil, handler = nil)
6
6
  @parser
7
7
  end
8
8
 
9
- describe YARD::Tags::ParseDirective do
9
+ RSpec.describe YARD::Tags::ParseDirective do
10
10
  describe "#call" do
11
11
  after { Registry.clear }
12
12
 
13
13
  it "parses if handler=nil but use file=(stdin)" do
14
- tag_parse %{@!parse
14
+ tag_parse %(@!parse
15
15
  # Docstring here
16
16
  def foo; end
17
- }
17
+ )
18
18
  expect(Registry.at('#foo').docstring).to eq "Docstring here"
19
19
  expect(Registry.at('#foo').file).to eq '(stdin)'
20
20
  end
@@ -36,7 +36,7 @@ describe YARD::Tags::ParseDirective do
36
36
  eval "def foo; end"
37
37
  end
38
38
  eof
39
- parser = Parser::SourceParser.new
39
+ parser = YARD::Parser::SourceParser.new
40
40
  parser.file = "myfile.rb"
41
41
  parser.parse(StringIO.new(src))
42
42
  expect(Registry.at('A#foo').file).to eq 'myfile.rb'
@@ -44,7 +44,7 @@ describe YARD::Tags::ParseDirective do
44
44
  end
45
45
  end
46
46
 
47
- describe YARD::Tags::GroupDirective do
47
+ RSpec.describe YARD::Tags::GroupDirective do
48
48
  describe "#call" do
49
49
  it "does nothing if handler=nil" do
50
50
  tag_parse("@!group foo")
@@ -58,7 +58,7 @@ describe YARD::Tags::GroupDirective do
58
58
  end
59
59
  end
60
60
 
61
- describe YARD::Tags::EndGroupDirective do
61
+ RSpec.describe YARD::Tags::EndGroupDirective do
62
62
  describe "#call" do
63
63
  it "does nothing if handler=nil" do
64
64
  tag_parse("@!endgroup foo")
@@ -72,7 +72,7 @@ describe YARD::Tags::EndGroupDirective do
72
72
  end
73
73
  end
74
74
 
75
- describe YARD::Tags::MacroDirective do
75
+ RSpec.describe YARD::Tags::MacroDirective do
76
76
  def handler
77
77
  OpenStruct.new(:call_params => %w(a b c),
78
78
  :caller_method => 'foo',
@@ -161,7 +161,7 @@ describe YARD::Tags::MacroDirective do
161
161
  end
162
162
  end
163
163
 
164
- describe YARD::Tags::MethodDirective do
164
+ RSpec.describe YARD::Tags::MethodDirective do
165
165
  describe "#call" do
166
166
  after { Registry.clear }
167
167
 
@@ -283,7 +283,7 @@ describe YARD::Tags::MethodDirective do
283
283
  end
284
284
  end
285
285
 
286
- describe YARD::Tags::AttributeDirective do
286
+ RSpec.describe YARD::Tags::AttributeDirective do
287
287
  describe "#call" do
288
288
  after { Registry.clear }
289
289
 
@@ -369,7 +369,7 @@ describe YARD::Tags::AttributeDirective do
369
369
  end
370
370
  end
371
371
 
372
- describe YARD::Tags::ScopeDirective do
372
+ RSpec.describe YARD::Tags::ScopeDirective do
373
373
  describe "#call" do
374
374
  after { Registry.clear }
375
375
 
@@ -407,7 +407,7 @@ describe YARD::Tags::ScopeDirective do
407
407
  end
408
408
  end
409
409
 
410
- describe YARD::Tags::VisibilityDirective do
410
+ RSpec.describe YARD::Tags::VisibilityDirective do
411
411
  describe "#call" do
412
412
  after { Registry.clear }
413
413
 
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe YARD::Tags::Library do
3
+ RSpec.describe YARD::Tags::Library do
4
4
  def tag(docstring)
5
5
  Docstring.new(docstring).tags.first
6
6
  end
@@ -31,4 +31,18 @@ describe YARD::Tags::Library do
31
31
  expect(tag('@x.y.zz foo(bar)').signature).to eq 'foo(bar)'
32
32
  end
33
33
  end
34
+
35
+ describe "#tag.explain_types" do
36
+ it "can explain tag types" do
37
+ expect(tag("@return [A, B<String>]").explain_types).to eq "an A; a B of (Strings)"
38
+ end
39
+
40
+ it "returns nil if no types present" do
41
+ expect(tag("@return").explain_types).to eq nil
42
+ end
43
+
44
+ it "returns nil if types are not parseable" do
45
+ expect(tag("@return [$]").explain_types).to eq nil
46
+ end
47
+ end
34
48
  end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe YARD::Tags::OverloadTag do
3
+ RSpec.describe YARD::Tags::OverloadTag do
4
4
  before do
5
5
  @tag = Tags::OverloadTag.new(:overload, <<-'eof')
6
6
  def bar(a, b = 1, &block)
@@ -42,7 +42,7 @@ describe YARD::Tags::OverloadTag do
42
42
  @tag.object = double(:object)
43
43
  expect(@tag.object).to receive(:is_a?).at_least(3).times.with(CodeObjects::Base).and_return(true)
44
44
  expect(@tag.is_a?(CodeObjects::Base)).to be true
45
- expect(@tag.kind_of?(CodeObjects::Base)).to be true
45
+ expect(@tag.is_a?(CodeObjects::Base)).to be true
46
46
  expect(CodeObjects::Base === @tag).to be true
47
47
  end
48
48
 
@@ -50,4 +50,4 @@ describe YARD::Tags::OverloadTag do
50
50
  tag = Tags::OverloadTag.new(:overload, "default")
51
51
  expect(tag.signature).to eq "default"
52
52
  end
53
- end
53
+ end
@@ -1,6 +1,6 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe YARD::Tags::RefTagList do
3
+ RSpec.describe YARD::Tags::RefTagList do
4
4
  before { YARD::Registry.clear }
5
5
 
6
6
  it "accepts symbol or string as owner's path and convert it into a proxy" do
@@ -50,4 +50,4 @@ describe YARD::Tags::RefTagList do
50
50
  expect(t.owner).to eq o
51
51
  end
52
52
  end
53
- end
53
+ end
@@ -0,0 +1,200 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec.describe YARD::Tags::TypesExplainer do
4
+ Type = YARD::Tags::TypesExplainer::Type
5
+ CollectionType = YARD::Tags::TypesExplainer::CollectionType
6
+ FixedCollectionType = YARD::Tags::TypesExplainer::FixedCollectionType
7
+ HashCollectionType = YARD::Tags::TypesExplainer::HashCollectionType
8
+ Parser = YARD::Tags::TypesExplainer::Parser
9
+
10
+ def parse(types)
11
+ Parser.new(types).parse
12
+ end
13
+
14
+ def parse_fail(types)
15
+ expect(lambda { parse(types) }).to raise_error(SyntaxError)
16
+ end
17
+
18
+ describe Type, '#to_s' do
19
+ before { @t = Type.new(nil) }
20
+
21
+ it "works for a class/module reference" do
22
+ @t.name = "ClassModuleName"
23
+ expect(@t.to_s).to eq "a ClassModuleName"
24
+ expect(@t.to_s(false)).to eq "ClassModuleNames"
25
+
26
+ @t.name = "XYZ"
27
+ expect(@t.to_s).to eq "a XYZ"
28
+ expect(@t.to_s(false)).to eq "XYZ's"
29
+
30
+ @t.name = "Array"
31
+ expect(@t.to_s).to eq "an Array"
32
+ expect(@t.to_s(false)).to eq "Arrays"
33
+ end
34
+
35
+ it "works for a method (ducktype)" do
36
+ @t.name = "#mymethod"
37
+ expect(@t.to_s).to eq "an object that responds to #mymethod"
38
+ expect(@t.to_s(false)).to eq "objects that respond to #mymethod"
39
+ end
40
+
41
+ it "works for a constant value" do
42
+ ['false', 'true', 'nil', '4'].each do |name|
43
+ @t.name = name
44
+ expect(@t.to_s).to eq name
45
+ expect(@t.to_s(false)).to eq name
46
+ end
47
+ end
48
+ end
49
+
50
+ describe CollectionType, '#to_s' do
51
+ before { @t = CollectionType.new("Array", nil) }
52
+
53
+ it "can contain one item" do
54
+ @t.types = [Type.new("Object")]
55
+ expect(@t.to_s).to eq "an Array of (Objects)"
56
+ end
57
+
58
+ it "can contain more than one item" do
59
+ @t.types = [Type.new("Object"), Type.new("String"), Type.new("Symbol")]
60
+ expect(@t.to_s).to eq "an Array of (Objects, Strings or Symbols)"
61
+ end
62
+
63
+ it "can contain nested collections" do
64
+ @t.types = [CollectionType.new("List", [Type.new("Object")])]
65
+ expect(@t.to_s).to eq "an Array of (a List of (Objects))"
66
+ end
67
+ end
68
+
69
+ describe FixedCollectionType, '#to_s' do
70
+ before { @t = FixedCollectionType.new("Array", nil) }
71
+
72
+ it "can contain one item" do
73
+ @t.types = [Type.new("Object")]
74
+ expect(@t.to_s).to eq "an Array containing (an Object)"
75
+ end
76
+
77
+ it "can contain more than one item" do
78
+ @t.types = [Type.new("Object"), Type.new("String"), Type.new("Symbol")]
79
+ expect(@t.to_s).to eq "an Array containing (an Object followed by a String followed by a Symbol)"
80
+ end
81
+
82
+ it "can contain nested collections" do
83
+ @t.types = [FixedCollectionType.new("List", [Type.new("Object")])]
84
+ expect(@t.to_s).to eq "an Array containing (a List containing (an Object))"
85
+ end
86
+ end
87
+
88
+ describe FixedCollectionType, '#to_s' do
89
+ before { @t = HashCollectionType.new("Hash", nil, nil) }
90
+
91
+ it "can contain a single key type and value type" do
92
+ @t.key_types = [Type.new("Object")]
93
+ @t.value_types = [Type.new("Object")]
94
+ expect(@t.to_s).to eq "a Hash with keys made of (Objects) and values of (Objects)"
95
+ end
96
+
97
+ it "can contain multiple key types" do
98
+ @t.key_types = [Type.new("Key"), Type.new("String")]
99
+ @t.value_types = [Type.new("Object")]
100
+ expect(@t.to_s).to eq "a Hash with keys made of (Keys or Strings) and values of (Objects)"
101
+ end
102
+
103
+ it "can contain multiple value types" do
104
+ @t.key_types = [Type.new("String")]
105
+ @t.value_types = [Type.new("true"), Type.new("false")]
106
+ expect(@t.to_s).to eq "a Hash with keys made of (Strings) and values of (true or false)"
107
+ end
108
+ end
109
+
110
+ describe Parser, '#parse' do
111
+ it "parses a regular class name" do
112
+ type = parse("MyClass")
113
+ expect(type.size).to eq 1
114
+ expect(type.first).to be_a(Type)
115
+ expect(type.first.name).to eq "MyClass"
116
+ end
117
+
118
+ it "parses a path reference name" do
119
+ type = parse("A::B")
120
+ expect(type.size).to eq 1
121
+ expect(type.first).to be_a(Type)
122
+ expect(type.first.name).to eq "A::B"
123
+ end
124
+
125
+ it "parses a list of simple names" do
126
+ type = parse("A, B::C, D, E")
127
+ expect(type.size).to eq 4
128
+ expect(type[0].name).to eq "A"
129
+ expect(type[1].name).to eq "B::C"
130
+ expect(type[2].name).to eq "D"
131
+ expect(type[3].name).to eq "E"
132
+ end
133
+
134
+ it "parses a collection type" do
135
+ type = parse("MyList<String>")
136
+ expect(type.first).to be_a(CollectionType)
137
+ expect(type.first.types.size).to eq 1
138
+ expect(type.first.name).to eq "MyList"
139
+ expect(type.first.types.first.name).to eq "String"
140
+ end
141
+
142
+ it "allows a collection type without a name" do
143
+ type = parse("<String>")
144
+ expect(type.first.name).to eq "Array"
145
+ end
146
+
147
+ it "allows a fixed collection type without a name" do
148
+ type = parse("(String)")
149
+ expect(type.first.name).to eq "Array"
150
+ end
151
+
152
+ it "allows a hash collection type without a name" do
153
+ type = parse("{K=>V}")
154
+ expect(type.first.name).to eq "Hash"
155
+ end
156
+
157
+ it "does not accept two commas in a row" do
158
+ parse_fail "A,,B"
159
+ end
160
+
161
+ it "does not accept two types not separated by a comma" do
162
+ parse_fail "A B"
163
+ end
164
+
165
+ it "does not allow a comma without a following type" do
166
+ parse_fail "A, "
167
+ end
168
+
169
+ it "fails on any unrecognized character" do
170
+ parse_fail "$"
171
+ end
172
+ end
173
+
174
+ describe ".explain" do
175
+ it "parses an arbitrarily nested collection type" do
176
+ explain = YARD::Tags::TypesExplainer.explain("Array<String, Array<Symbol, List(String, {K=>V})>>")
177
+ result = "an Array of (Strings or an Array of (Symbols or a List containing
178
+ (a String followed by a Hash with keys made of (K's) and values of (V's))))"
179
+ expect(explain).to eq result.delete("\n").squeeze(' ')
180
+ end
181
+
182
+ it "parses various examples" do
183
+ expect = {
184
+ "Fixnum, Foo, Object, true" => "a Fixnum; a Foo; an Object; true",
185
+ "#read" => "an object that responds to #read",
186
+ "Array<String, Symbol, #read>" => "an Array of (Strings, Symbols or objects that respond to #read)",
187
+ "Set<Number>" => "a Set of (Numbers)",
188
+ "Array(String, Symbol)" => "an Array containing (a String followed by a Symbol)",
189
+ "Hash{String => Symbol, Number}" => "a Hash with keys made of (Strings) and values of (Symbols or Numbers)",
190
+ "Array<Foo, Bar>, List(String, Symbol, #to_s), {Foo, Bar => Symbol, Number}" => "an Array of (Foos or Bars);
191
+ a List containing (a String followed by a Symbol followed by an object that responds to #to_s);
192
+ a Hash with keys made of (Foos or Bars) and values of (Symbols or Numbers)"
193
+ }
194
+ expect.each do |input, expected|
195
+ explain = YARD::Tags::TypesExplainer.explain(input)
196
+ expect(explain).to eq expected.delete("\n").squeeze(' ')
197
+ end
198
+ end
199
+ end
200
+ end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
1
2
  require File.dirname(__FILE__) + '/spec_helper'
2
3
 
3
- describe YARD::Templates::Engine.template(:default, :docstring) do
4
+ RSpec.describe YARD::Templates::Engine.template(:default, :docstring) do
4
5
  before do
5
6
  Registry.clear
6
7
  YARD.parse_string <<-'eof'
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
1
2
  require File.dirname(__FILE__) + "/spec_helper"
2
3
 
3
- describe YARD::Templates::Engine.template(:default, :constant) do
4
+ RSpec.describe YARD::Templates::Engine.template(:default, :constant) do
4
5
  describe "fully dressed constant" do
5
6
  it "renders text format correctly" do
6
7
  YARD.parse_string <<-'eof'
@@ -37,4 +38,4 @@ describe YARD::Templates::Engine.template(:default, :constant) do
37
38
  text_equals(Registry.at('MYCONST').format(text_options), :constant003)
38
39
  end
39
40
  end
40
- end
41
+ end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
1
2
  require File.dirname(__FILE__) + '/spec_helper'
2
3
 
3
- describe YARD::Templates::Engine do
4
+ RSpec.describe YARD::Templates::Engine do
4
5
  before { @paths = Engine.template_paths }
5
6
  after { Engine.template_paths = @paths }
6
7
 
@@ -60,14 +61,14 @@ describe YARD::Templates::Engine do
60
61
  paths = ['/full/path/template/name', '/full/path2/template/name']
61
62
  expect(Engine).to receive(:find_template_paths).with(nil, 'template').at_least(1).times.and_return([])
62
63
  expect(Engine).to receive(:find_template_paths).with(nil, 'template/name').and_return(paths)
63
- ancestors = Engine.template('template/name').ancestors.map {|m| m.class_name }
64
+ ancestors = Engine.template('template/name').ancestors.map(&:class_name)
64
65
  expect(ancestors).to include("Template__full_path2_template_name")
65
66
  end
66
67
 
67
68
  it "includes parent directories before other template paths" do
68
69
  paths = ['/full/path/template/name', '/full/path2/template/name']
69
70
  expect(Engine).to receive(:find_template_paths).with(nil, 'template/name').and_return(paths)
70
- ancestors = Engine.template('template/name').ancestors.map {|m| m.class_name }
71
+ ancestors = Engine.template('template/name').ancestors.map(&:class_name)
71
72
  expect(ancestors[0, 4]).to eq ["Template__full_path_template_name", "Template__full_path_template",
72
73
  "Template__full_path2_template_name", "Template__full_path2_template"]
73
74
  end