deg-yard 0.8.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. data/.travis.yml +39 -0
  2. data/.yardopts +25 -0
  3. data/.yardopts_guide +19 -0
  4. data/.yardopts_i18n +22 -0
  5. data/Gemfile +35 -0
  6. data/LEGAL +66 -0
  7. data/LICENSE +22 -0
  8. data/README.md +609 -0
  9. data/Rakefile +66 -0
  10. data/benchmarks/builtins_vs_eval.rb +23 -0
  11. data/benchmarks/concat_vs_join.rb +12 -0
  12. data/benchmarks/erb_vs_erubis.rb +53 -0
  13. data/benchmarks/format_args.rb +46 -0
  14. data/benchmarks/generation.rb +37 -0
  15. data/benchmarks/marshal_vs_dbm.rb +63 -0
  16. data/benchmarks/parsing.rb +46 -0
  17. data/benchmarks/pathname_vs_string.rb +50 -0
  18. data/benchmarks/rdoc_vs_yardoc.rb +10 -0
  19. data/benchmarks/registry_store_types.rb +48 -0
  20. data/benchmarks/ri_vs_yri.rb +18 -0
  21. data/benchmarks/ripper_parser.rb +12 -0
  22. data/benchmarks/splat_vs_flatten.rb +12 -0
  23. data/benchmarks/template_erb.rb +22 -0
  24. data/benchmarks/template_format.rb +6 -0
  25. data/benchmarks/template_profile.rb +17 -0
  26. data/benchmarks/yri_cache.rb +19 -0
  27. data/bin/yard +12 -0
  28. data/bin/yardoc +12 -0
  29. data/bin/yri +12 -0
  30. data/docs/CodeObjects.md +115 -0
  31. data/docs/GettingStarted.md +592 -0
  32. data/docs/Handlers.md +152 -0
  33. data/docs/Overview.md +61 -0
  34. data/docs/Parser.md +191 -0
  35. data/docs/Tags.md +282 -0
  36. data/docs/TagsArch.md +123 -0
  37. data/docs/Templates.md +496 -0
  38. data/docs/WhatsNew.md +1244 -0
  39. data/docs/images/code-objects-class-diagram.png +0 -0
  40. data/docs/images/handlers-class-diagram.png +0 -0
  41. data/docs/images/overview-class-diagram.png +0 -0
  42. data/docs/images/parser-class-diagram.png +0 -0
  43. data/docs/images/tags-class-diagram.png +0 -0
  44. data/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
  45. data/docs/templates/default/fulldoc/html/setup.rb +6 -0
  46. data/docs/templates/default/layout/html/setup.rb +8 -0
  47. data/docs/templates/default/layout/html/tag_list.erb +11 -0
  48. data/docs/templates/default/yard_tags/html/list.erb +18 -0
  49. data/docs/templates/default/yard_tags/html/setup.rb +27 -0
  50. data/docs/templates/plugin.rb +65 -0
  51. data/lib/rubygems_plugin.rb +4 -0
  52. data/lib/yard/autoload.rb +290 -0
  53. data/lib/yard/cli/command.rb +84 -0
  54. data/lib/yard/cli/command_parser.rb +92 -0
  55. data/lib/yard/cli/config.rb +136 -0
  56. data/lib/yard/cli/diff.rb +270 -0
  57. data/lib/yard/cli/display.rb +68 -0
  58. data/lib/yard/cli/gems.rb +83 -0
  59. data/lib/yard/cli/graph.rb +126 -0
  60. data/lib/yard/cli/help.rb +18 -0
  61. data/lib/yard/cli/i18n.rb +69 -0
  62. data/lib/yard/cli/list.rb +22 -0
  63. data/lib/yard/cli/markup_types.rb +33 -0
  64. data/lib/yard/cli/server.rb +253 -0
  65. data/lib/yard/cli/stats.rb +213 -0
  66. data/lib/yard/cli/yardoc.rb +752 -0
  67. data/lib/yard/cli/yardopts_command.rb +109 -0
  68. data/lib/yard/cli/yri.rb +214 -0
  69. data/lib/yard/code_objects/base.rb +585 -0
  70. data/lib/yard/code_objects/class_object.rb +143 -0
  71. data/lib/yard/code_objects/class_variable_object.rb +8 -0
  72. data/lib/yard/code_objects/constant_object.rb +13 -0
  73. data/lib/yard/code_objects/extended_method_object.rb +23 -0
  74. data/lib/yard/code_objects/extra_file_object.rb +128 -0
  75. data/lib/yard/code_objects/macro_object.rb +172 -0
  76. data/lib/yard/code_objects/method_object.rb +191 -0
  77. data/lib/yard/code_objects/module_object.rb +18 -0
  78. data/lib/yard/code_objects/namespace_object.rb +200 -0
  79. data/lib/yard/code_objects/proxy.rb +258 -0
  80. data/lib/yard/code_objects/root_object.rb +17 -0
  81. data/lib/yard/config.rb +269 -0
  82. data/lib/yard/core_ext/array.rb +15 -0
  83. data/lib/yard/core_ext/file.rb +65 -0
  84. data/lib/yard/core_ext/hash.rb +15 -0
  85. data/lib/yard/core_ext/insertion.rb +60 -0
  86. data/lib/yard/core_ext/module.rb +19 -0
  87. data/lib/yard/core_ext/string.rb +67 -0
  88. data/lib/yard/core_ext/symbol_hash.rb +73 -0
  89. data/lib/yard/docstring.rb +362 -0
  90. data/lib/yard/docstring_parser.rb +321 -0
  91. data/lib/yard/globals.rb +18 -0
  92. data/lib/yard/handlers/base.rb +597 -0
  93. data/lib/yard/handlers/c/alias_handler.rb +15 -0
  94. data/lib/yard/handlers/c/attribute_handler.rb +13 -0
  95. data/lib/yard/handlers/c/base.rb +110 -0
  96. data/lib/yard/handlers/c/class_handler.rb +26 -0
  97. data/lib/yard/handlers/c/constant_handler.rb +12 -0
  98. data/lib/yard/handlers/c/handler_methods.rb +166 -0
  99. data/lib/yard/handlers/c/init_handler.rb +18 -0
  100. data/lib/yard/handlers/c/method_handler.rb +35 -0
  101. data/lib/yard/handlers/c/mixin_handler.rb +13 -0
  102. data/lib/yard/handlers/c/module_handler.rb +16 -0
  103. data/lib/yard/handlers/c/override_comment_handler.rb +30 -0
  104. data/lib/yard/handlers/c/path_handler.rb +10 -0
  105. data/lib/yard/handlers/c/struct_handler.rb +12 -0
  106. data/lib/yard/handlers/c/symbol_handler.rb +7 -0
  107. data/lib/yard/handlers/processor.rb +201 -0
  108. data/lib/yard/handlers/ruby/alias_handler.rb +41 -0
  109. data/lib/yard/handlers/ruby/attribute_handler.rb +82 -0
  110. data/lib/yard/handlers/ruby/base.rb +164 -0
  111. data/lib/yard/handlers/ruby/class_condition_handler.rb +86 -0
  112. data/lib/yard/handlers/ruby/class_handler.rb +121 -0
  113. data/lib/yard/handlers/ruby/class_variable_handler.rb +16 -0
  114. data/lib/yard/handlers/ruby/comment_handler.rb +9 -0
  115. data/lib/yard/handlers/ruby/constant_handler.rb +45 -0
  116. data/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
  117. data/lib/yard/handlers/ruby/dsl_handler_methods.rb +77 -0
  118. data/lib/yard/handlers/ruby/exception_handler.rb +26 -0
  119. data/lib/yard/handlers/ruby/extend_handler.rb +21 -0
  120. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +34 -0
  121. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +60 -0
  122. data/lib/yard/handlers/ruby/legacy/base.rb +250 -0
  123. data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +83 -0
  124. data/lib/yard/handlers/ruby/legacy/class_handler.rb +111 -0
  125. data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +14 -0
  126. data/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
  127. data/lib/yard/handlers/ruby/legacy/constant_handler.rb +28 -0
  128. data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
  129. data/lib/yard/handlers/ruby/legacy/exception_handler.rb +12 -0
  130. data/lib/yard/handlers/ruby/legacy/extend_handler.rb +20 -0
  131. data/lib/yard/handlers/ruby/legacy/method_handler.rb +85 -0
  132. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +39 -0
  133. data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
  134. data/lib/yard/handlers/ruby/legacy/module_handler.rb +11 -0
  135. data/lib/yard/handlers/ruby/legacy/private_constant_handler.rb +21 -0
  136. data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +16 -0
  137. data/lib/yard/handlers/ruby/legacy/yield_handler.rb +28 -0
  138. data/lib/yard/handlers/ruby/method_condition_handler.rb +8 -0
  139. data/lib/yard/handlers/ruby/method_handler.rb +92 -0
  140. data/lib/yard/handlers/ruby/mixin_handler.rb +36 -0
  141. data/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
  142. data/lib/yard/handlers/ruby/module_handler.rb +11 -0
  143. data/lib/yard/handlers/ruby/private_constant_handler.rb +36 -0
  144. data/lib/yard/handlers/ruby/struct_handler_methods.rb +141 -0
  145. data/lib/yard/handlers/ruby/visibility_handler.rb +24 -0
  146. data/lib/yard/handlers/ruby/yield_handler.rb +30 -0
  147. data/lib/yard/i18n/locale.rb +74 -0
  148. data/lib/yard/i18n/message.rb +56 -0
  149. data/lib/yard/i18n/messages.rb +55 -0
  150. data/lib/yard/i18n/pot_generator.rb +280 -0
  151. data/lib/yard/i18n/text.rb +173 -0
  152. data/lib/yard/logging.rb +190 -0
  153. data/lib/yard/options.rb +216 -0
  154. data/lib/yard/parser/base.rb +56 -0
  155. data/lib/yard/parser/c/c_parser.rb +231 -0
  156. data/lib/yard/parser/c/comment_parser.rb +131 -0
  157. data/lib/yard/parser/c/statement.rb +63 -0
  158. data/lib/yard/parser/ruby/ast_node.rb +496 -0
  159. data/lib/yard/parser/ruby/legacy/ruby_lex.rb +1378 -0
  160. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +31 -0
  161. data/lib/yard/parser/ruby/legacy/statement.rb +65 -0
  162. data/lib/yard/parser/ruby/legacy/statement_list.rb +384 -0
  163. data/lib/yard/parser/ruby/legacy/token_list.rb +71 -0
  164. data/lib/yard/parser/ruby/ruby_parser.rb +625 -0
  165. data/lib/yard/parser/source_parser.rb +517 -0
  166. data/lib/yard/rake/yardoc_task.rb +74 -0
  167. data/lib/yard/registry.rb +438 -0
  168. data/lib/yard/registry_store.rb +319 -0
  169. data/lib/yard/rubygems/backports/LICENSE.txt +57 -0
  170. data/lib/yard/rubygems/backports/MIT.txt +20 -0
  171. data/lib/yard/rubygems/backports/gem.rb +9 -0
  172. data/lib/yard/rubygems/backports/source_index.rb +370 -0
  173. data/lib/yard/rubygems/backports.rb +8 -0
  174. data/lib/yard/rubygems/doc_manager.rb +88 -0
  175. data/lib/yard/rubygems/specification.rb +41 -0
  176. data/lib/yard/serializers/base.rb +80 -0
  177. data/lib/yard/serializers/file_system_serializer.rb +90 -0
  178. data/lib/yard/serializers/process_serializer.rb +24 -0
  179. data/lib/yard/serializers/stdout_serializer.rb +32 -0
  180. data/lib/yard/serializers/yardoc_serializer.rb +124 -0
  181. data/lib/yard/server/adapter.rb +100 -0
  182. data/lib/yard/server/commands/base.rb +192 -0
  183. data/lib/yard/server/commands/display_file_command.rb +24 -0
  184. data/lib/yard/server/commands/display_object_command.rb +58 -0
  185. data/lib/yard/server/commands/frames_command.rb +15 -0
  186. data/lib/yard/server/commands/library_command.rb +148 -0
  187. data/lib/yard/server/commands/library_index_command.rb +24 -0
  188. data/lib/yard/server/commands/list_command.rb +24 -0
  189. data/lib/yard/server/commands/search_command.rb +78 -0
  190. data/lib/yard/server/commands/static_file_command.rb +57 -0
  191. data/lib/yard/server/doc_server_helper.rb +76 -0
  192. data/lib/yard/server/doc_server_serializer.rb +33 -0
  193. data/lib/yard/server/library_version.rb +227 -0
  194. data/lib/yard/server/rack_adapter.rb +88 -0
  195. data/lib/yard/server/router.rb +176 -0
  196. data/lib/yard/server/static_caching.rb +45 -0
  197. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +78 -0
  198. data/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
  199. data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +12 -0
  200. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +46 -0
  201. data/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
  202. data/lib/yard/server/templates/default/layout/html/setup.rb +7 -0
  203. data/lib/yard/server/templates/default/method_details/html/permalink.erb +4 -0
  204. data/lib/yard/server/templates/default/method_details/html/setup.rb +4 -0
  205. data/lib/yard/server/templates/doc_server/library_list/html/contents.erb +13 -0
  206. data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +26 -0
  207. data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +12 -0
  208. data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +3 -0
  209. data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -0
  210. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +51 -0
  211. data/lib/yard/server/templates/doc_server/processing/html/setup.rb +3 -0
  212. data/lib/yard/server/templates/doc_server/search/html/search.erb +18 -0
  213. data/lib/yard/server/templates/doc_server/search/html/setup.rb +8 -0
  214. data/lib/yard/server/webrick_adapter.rb +43 -0
  215. data/lib/yard/server.rb +11 -0
  216. data/lib/yard/tags/default_factory.rb +176 -0
  217. data/lib/yard/tags/default_tag.rb +12 -0
  218. data/lib/yard/tags/directives.rb +599 -0
  219. data/lib/yard/tags/library.rb +630 -0
  220. data/lib/yard/tags/option_tag.rb +12 -0
  221. data/lib/yard/tags/overload_tag.rb +66 -0
  222. data/lib/yard/tags/ref_tag.rb +7 -0
  223. data/lib/yard/tags/ref_tag_list.rb +27 -0
  224. data/lib/yard/tags/tag.rb +57 -0
  225. data/lib/yard/tags/tag_format_error.rb +6 -0
  226. data/lib/yard/templates/engine.rb +185 -0
  227. data/lib/yard/templates/erb_cache.rb +22 -0
  228. data/lib/yard/templates/helpers/base_helper.rb +212 -0
  229. data/lib/yard/templates/helpers/filter_helper.rb +26 -0
  230. data/lib/yard/templates/helpers/html_helper.rb +599 -0
  231. data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +59 -0
  232. data/lib/yard/templates/helpers/markup/rdoc_markdown.rb +22 -0
  233. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +106 -0
  234. data/lib/yard/templates/helpers/markup_helper.rb +169 -0
  235. data/lib/yard/templates/helpers/method_helper.rb +74 -0
  236. data/lib/yard/templates/helpers/module_helper.rb +19 -0
  237. data/lib/yard/templates/helpers/text_helper.rb +95 -0
  238. data/lib/yard/templates/helpers/uml_helper.rb +46 -0
  239. data/lib/yard/templates/section.rb +106 -0
  240. data/lib/yard/templates/template.rb +407 -0
  241. data/lib/yard/templates/template_options.rb +88 -0
  242. data/lib/yard/verifier.rb +148 -0
  243. data/lib/yard/version.rb +3 -0
  244. data/lib/yard.rb +71 -0
  245. data/po/ja.po +31118 -0
  246. data/spec/cli/command_parser_spec.rb +43 -0
  247. data/spec/cli/command_spec.rb +36 -0
  248. data/spec/cli/config_spec.rb +92 -0
  249. data/spec/cli/diff_spec.rb +260 -0
  250. data/spec/cli/display_spec.rb +30 -0
  251. data/spec/cli/gems_spec.rb +81 -0
  252. data/spec/cli/graph_spec.rb +17 -0
  253. data/spec/cli/help_spec.rb +22 -0
  254. data/spec/cli/i18n_spec.rb +111 -0
  255. data/spec/cli/list_spec.rb +8 -0
  256. data/spec/cli/markup_types_spec.rb +22 -0
  257. data/spec/cli/server_spec.rb +327 -0
  258. data/spec/cli/stats_spec.rb +90 -0
  259. data/spec/cli/yardoc_spec.rb +804 -0
  260. data/spec/cli/yri_spec.rb +99 -0
  261. data/spec/code_objects/base_spec.rb +438 -0
  262. data/spec/code_objects/class_object_spec.rb +225 -0
  263. data/spec/code_objects/code_object_list_spec.rb +33 -0
  264. data/spec/code_objects/constants_spec.rb +82 -0
  265. data/spec/code_objects/extra_file_object_spec.rb +147 -0
  266. data/spec/code_objects/macro_object_spec.rb +148 -0
  267. data/spec/code_objects/method_object_spec.rb +175 -0
  268. data/spec/code_objects/module_object_spec.rb +141 -0
  269. data/spec/code_objects/namespace_object_spec.rb +170 -0
  270. data/spec/code_objects/proxy_spec.rb +140 -0
  271. data/spec/code_objects/spec_helper.rb +3 -0
  272. data/spec/config_spec.rb +176 -0
  273. data/spec/core_ext/array_spec.rb +14 -0
  274. data/spec/core_ext/file_spec.rb +68 -0
  275. data/spec/core_ext/hash_spec.rb +14 -0
  276. data/spec/core_ext/insertion_spec.rb +37 -0
  277. data/spec/core_ext/module_spec.rb +15 -0
  278. data/spec/core_ext/string_spec.rb +42 -0
  279. data/spec/core_ext/symbol_hash_spec.rb +86 -0
  280. data/spec/docstring_parser_spec.rb +228 -0
  281. data/spec/docstring_spec.rb +335 -0
  282. data/spec/handlers/alias_handler_spec.rb +80 -0
  283. data/spec/handlers/attribute_handler_spec.rb +94 -0
  284. data/spec/handlers/base_spec.rb +206 -0
  285. data/spec/handlers/c/alias_handler_spec.rb +33 -0
  286. data/spec/handlers/c/attribute_handler_spec.rb +40 -0
  287. data/spec/handlers/c/class_handler_spec.rb +63 -0
  288. data/spec/handlers/c/constant_handler_spec.rb +68 -0
  289. data/spec/handlers/c/init_handler_spec.rb +47 -0
  290. data/spec/handlers/c/method_handler_spec.rb +229 -0
  291. data/spec/handlers/c/mixin_handler_spec.rb +27 -0
  292. data/spec/handlers/c/module_handler_spec.rb +38 -0
  293. data/spec/handlers/c/override_comment_handler_spec.rb +46 -0
  294. data/spec/handlers/c/path_handler_spec.rb +35 -0
  295. data/spec/handlers/c/spec_helper.rb +13 -0
  296. data/spec/handlers/c/struct_handler_spec.rb +15 -0
  297. data/spec/handlers/class_condition_handler_spec.rb +67 -0
  298. data/spec/handlers/class_handler_spec.rb +246 -0
  299. data/spec/handlers/class_variable_handler_spec.rb +11 -0
  300. data/spec/handlers/constant_handler_spec.rb +64 -0
  301. data/spec/handlers/dsl_handler_spec.rb +197 -0
  302. data/spec/handlers/examples/alias_handler_001.rb.txt +44 -0
  303. data/spec/handlers/examples/attribute_handler_001.rb.txt +32 -0
  304. data/spec/handlers/examples/class_condition_handler_001.rb.txt +69 -0
  305. data/spec/handlers/examples/class_handler_001.rb.txt +120 -0
  306. data/spec/handlers/examples/class_variable_handler_001.rb.txt +10 -0
  307. data/spec/handlers/examples/constant_handler_001.rb.txt +25 -0
  308. data/spec/handlers/examples/dsl_handler_001.rb.txt +125 -0
  309. data/spec/handlers/examples/exception_handler_001.rb.txt +59 -0
  310. data/spec/handlers/examples/extend_handler_001.rb.txt +16 -0
  311. data/spec/handlers/examples/method_condition_handler_001.rb.txt +10 -0
  312. data/spec/handlers/examples/method_handler_001.rb.txt +126 -0
  313. data/spec/handlers/examples/mixin_handler_001.rb.txt +37 -0
  314. data/spec/handlers/examples/module_handler_001.rb.txt +29 -0
  315. data/spec/handlers/examples/private_constant_handler_001.rb.txt +8 -0
  316. data/spec/handlers/examples/process_handler_001.rb.txt +11 -0
  317. data/spec/handlers/examples/visibility_handler_001.rb.txt +32 -0
  318. data/spec/handlers/examples/yield_handler_001.rb.txt +54 -0
  319. data/spec/handlers/exception_handler_spec.rb +48 -0
  320. data/spec/handlers/extend_handler_spec.rb +23 -0
  321. data/spec/handlers/legacy_base_spec.rb +128 -0
  322. data/spec/handlers/method_condition_handler_spec.rb +14 -0
  323. data/spec/handlers/method_handler_spec.rb +184 -0
  324. data/spec/handlers/mixin_handler_spec.rb +55 -0
  325. data/spec/handlers/module_function_handler_spec.rb +105 -0
  326. data/spec/handlers/module_handler_spec.rb +34 -0
  327. data/spec/handlers/private_constant_handler_spec.rb +24 -0
  328. data/spec/handlers/processor_spec.rb +34 -0
  329. data/spec/handlers/ruby/base_spec.rb +94 -0
  330. data/spec/handlers/ruby/legacy/base_spec.rb +82 -0
  331. data/spec/handlers/spec_helper.rb +33 -0
  332. data/spec/handlers/visibility_handler_spec.rb +39 -0
  333. data/spec/handlers/yield_handler_spec.rb +51 -0
  334. data/spec/i18n/locale_spec.rb +68 -0
  335. data/spec/i18n/message_spec.rb +52 -0
  336. data/spec/i18n/messages_spec.rb +67 -0
  337. data/spec/i18n/pot_generator_spec.rb +262 -0
  338. data/spec/i18n/text_spec.rb +180 -0
  339. data/spec/logging_spec.rb +35 -0
  340. data/spec/options_spec.rb +171 -0
  341. data/spec/parser/base_spec.rb +24 -0
  342. data/spec/parser/c_parser_spec.rb +171 -0
  343. data/spec/parser/examples/array.c.txt +3887 -0
  344. data/spec/parser/examples/example1.rb.txt +8 -0
  345. data/spec/parser/examples/extrafile.c.txt +8 -0
  346. data/spec/parser/examples/multifile.c.txt +22 -0
  347. data/spec/parser/examples/override.c.txt +424 -0
  348. data/spec/parser/examples/parse_in_order_001.rb.txt +2 -0
  349. data/spec/parser/examples/parse_in_order_002.rb.txt +2 -0
  350. data/spec/parser/examples/tag_handler_001.rb.txt +8 -0
  351. data/spec/parser/ruby/ast_node_spec.rb +33 -0
  352. data/spec/parser/ruby/legacy/statement_list_spec.rb +299 -0
  353. data/spec/parser/ruby/legacy/token_list_spec.rb +77 -0
  354. data/spec/parser/ruby/ruby_parser_spec.rb +334 -0
  355. data/spec/parser/source_parser_spec.rb +717 -0
  356. data/spec/parser/tag_parsing_spec.rb +18 -0
  357. data/spec/rake/yardoc_task_spec.rb +101 -0
  358. data/spec/registry_spec.rb +393 -0
  359. data/spec/registry_store_spec.rb +315 -0
  360. data/spec/rubygems/doc_manager_spec.rb +112 -0
  361. data/spec/serializers/data/serialized_yardoc/checksums +1 -0
  362. data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
  363. data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
  364. data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
  365. data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
  366. data/spec/serializers/data/serialized_yardoc/proxy_types +2 -0
  367. data/spec/serializers/file_system_serializer_spec.rb +124 -0
  368. data/spec/serializers/spec_helper.rb +2 -0
  369. data/spec/serializers/yardoc_serializer_spec.rb +46 -0
  370. data/spec/server/adapter_spec.rb +38 -0
  371. data/spec/server/commands/base_spec.rb +87 -0
  372. data/spec/server/commands/library_command_spec.rb +39 -0
  373. data/spec/server/commands/static_file_command_spec.rb +84 -0
  374. data/spec/server/doc_server_helper_spec.rb +53 -0
  375. data/spec/server/doc_server_serializer_spec.rb +45 -0
  376. data/spec/server/rack_adapter_spec.rb +20 -0
  377. data/spec/server/router_spec.rb +122 -0
  378. data/spec/server/spec_helper.rb +17 -0
  379. data/spec/server/static_caching_spec.rb +39 -0
  380. data/spec/server/webrick_servlet_spec.rb +20 -0
  381. data/spec/server_spec.rb +10 -0
  382. data/spec/spec_helper.rb +128 -0
  383. data/spec/tags/default_factory_spec.rb +152 -0
  384. data/spec/tags/default_tag_spec.rb +11 -0
  385. data/spec/tags/directives_spec.rb +453 -0
  386. data/spec/tags/library_spec.rb +34 -0
  387. data/spec/tags/overload_tag_spec.rb +53 -0
  388. data/spec/tags/ref_tag_list_spec.rb +53 -0
  389. data/spec/templates/class_spec.rb +44 -0
  390. data/spec/templates/constant_spec.rb +40 -0
  391. data/spec/templates/engine_spec.rb +121 -0
  392. data/spec/templates/examples/class001.html +280 -0
  393. data/spec/templates/examples/class001.txt +36 -0
  394. data/spec/templates/examples/class002.html +35 -0
  395. data/spec/templates/examples/constant001.txt +25 -0
  396. data/spec/templates/examples/constant002.txt +7 -0
  397. data/spec/templates/examples/constant003.txt +11 -0
  398. data/spec/templates/examples/method001.html +130 -0
  399. data/spec/templates/examples/method001.txt +35 -0
  400. data/spec/templates/examples/method002.html +86 -0
  401. data/spec/templates/examples/method002.txt +20 -0
  402. data/spec/templates/examples/method003.html +159 -0
  403. data/spec/templates/examples/method003.txt +45 -0
  404. data/spec/templates/examples/method004.html +44 -0
  405. data/spec/templates/examples/method004.txt +10 -0
  406. data/spec/templates/examples/method005.html +99 -0
  407. data/spec/templates/examples/method005.txt +33 -0
  408. data/spec/templates/examples/module001.dot +33 -0
  409. data/spec/templates/examples/module001.html +825 -0
  410. data/spec/templates/examples/module001.txt +33 -0
  411. data/spec/templates/examples/module002.html +318 -0
  412. data/spec/templates/examples/module003.html +185 -0
  413. data/spec/templates/examples/module004.html +387 -0
  414. data/spec/templates/examples/tag001.txt +82 -0
  415. data/spec/templates/helpers/base_helper_spec.rb +175 -0
  416. data/spec/templates/helpers/html_helper_spec.rb +612 -0
  417. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +48 -0
  418. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +93 -0
  419. data/spec/templates/helpers/markup_helper_spec.rb +135 -0
  420. data/spec/templates/helpers/method_helper_spec.rb +82 -0
  421. data/spec/templates/helpers/shared_signature_examples.rb +123 -0
  422. data/spec/templates/helpers/text_helper_spec.rb +44 -0
  423. data/spec/templates/method_spec.rb +102 -0
  424. data/spec/templates/module_spec.rb +181 -0
  425. data/spec/templates/onefile_spec.rb +64 -0
  426. data/spec/templates/section_spec.rb +146 -0
  427. data/spec/templates/spec_helper.rb +73 -0
  428. data/spec/templates/tag_spec.rb +51 -0
  429. data/spec/templates/template_spec.rb +409 -0
  430. data/spec/verifier_spec.rb +106 -0
  431. data/templates/default/class/dot/setup.rb +6 -0
  432. data/templates/default/class/dot/superklass.erb +3 -0
  433. data/templates/default/class/html/constructor_details.erb +8 -0
  434. data/templates/default/class/html/setup.rb +1 -0
  435. data/templates/default/class/html/subclasses.erb +4 -0
  436. data/templates/default/class/setup.rb +36 -0
  437. data/templates/default/class/text/setup.rb +11 -0
  438. data/templates/default/class/text/subclasses.erb +5 -0
  439. data/templates/default/constant/text/header.erb +11 -0
  440. data/templates/default/constant/text/setup.rb +3 -0
  441. data/templates/default/docstring/html/abstract.erb +4 -0
  442. data/templates/default/docstring/html/deprecated.erb +1 -0
  443. data/templates/default/docstring/html/index.erb +5 -0
  444. data/templates/default/docstring/html/note.erb +6 -0
  445. data/templates/default/docstring/html/private.erb +4 -0
  446. data/templates/default/docstring/html/returns_void.erb +1 -0
  447. data/templates/default/docstring/html/text.erb +1 -0
  448. data/templates/default/docstring/html/todo.erb +6 -0
  449. data/templates/default/docstring/setup.rb +51 -0
  450. data/templates/default/docstring/text/abstract.erb +2 -0
  451. data/templates/default/docstring/text/deprecated.erb +2 -0
  452. data/templates/default/docstring/text/index.erb +2 -0
  453. data/templates/default/docstring/text/note.erb +4 -0
  454. data/templates/default/docstring/text/private.erb +2 -0
  455. data/templates/default/docstring/text/returns_void.erb +1 -0
  456. data/templates/default/docstring/text/text.erb +1 -0
  457. data/templates/default/docstring/text/todo.erb +4 -0
  458. data/templates/default/fulldoc/html/css/common.css +1 -0
  459. data/templates/default/fulldoc/html/css/full_list.css +57 -0
  460. data/templates/default/fulldoc/html/css/style.css +338 -0
  461. data/templates/default/fulldoc/html/frames.erb +28 -0
  462. data/templates/default/fulldoc/html/full_list.erb +40 -0
  463. data/templates/default/fulldoc/html/full_list_class.erb +2 -0
  464. data/templates/default/fulldoc/html/full_list_file.erb +5 -0
  465. data/templates/default/fulldoc/html/full_list_method.erb +8 -0
  466. data/templates/default/fulldoc/html/js/app.js +214 -0
  467. data/templates/default/fulldoc/html/js/full_list.js +178 -0
  468. data/templates/default/fulldoc/html/js/jquery.js +4 -0
  469. data/templates/default/fulldoc/html/setup.rb +199 -0
  470. data/templates/default/layout/dot/header.erb +6 -0
  471. data/templates/default/layout/dot/setup.rb +14 -0
  472. data/templates/default/layout/html/breadcrumb.erb +13 -0
  473. data/templates/default/layout/html/files.erb +11 -0
  474. data/templates/default/layout/html/footer.erb +5 -0
  475. data/templates/default/layout/html/headers.erb +14 -0
  476. data/templates/default/layout/html/index.erb +2 -0
  477. data/templates/default/layout/html/layout.erb +20 -0
  478. data/templates/default/layout/html/listing.erb +4 -0
  479. data/templates/default/layout/html/objects.erb +32 -0
  480. data/templates/default/layout/html/script_setup.erb +5 -0
  481. data/templates/default/layout/html/search.erb +8 -0
  482. data/templates/default/layout/html/setup.rb +71 -0
  483. data/templates/default/method/html/header.erb +16 -0
  484. data/templates/default/method/setup.rb +3 -0
  485. data/templates/default/method/text/header.erb +1 -0
  486. data/templates/default/method_details/html/header.erb +3 -0
  487. data/templates/default/method_details/html/method_signature.erb +25 -0
  488. data/templates/default/method_details/html/source.erb +10 -0
  489. data/templates/default/method_details/setup.rb +10 -0
  490. data/templates/default/method_details/text/header.erb +10 -0
  491. data/templates/default/method_details/text/method_signature.erb +12 -0
  492. data/templates/default/method_details/text/setup.rb +10 -0
  493. data/templates/default/module/dot/child.erb +1 -0
  494. data/templates/default/module/dot/dependencies.erb +3 -0
  495. data/templates/default/module/dot/header.erb +6 -0
  496. data/templates/default/module/dot/info.erb +14 -0
  497. data/templates/default/module/dot/setup.rb +14 -0
  498. data/templates/default/module/html/attribute_details.erb +10 -0
  499. data/templates/default/module/html/attribute_summary.erb +8 -0
  500. data/templates/default/module/html/box_info.erb +37 -0
  501. data/templates/default/module/html/children.erb +8 -0
  502. data/templates/default/module/html/constant_summary.erb +13 -0
  503. data/templates/default/module/html/defines.erb +3 -0
  504. data/templates/default/module/html/header.erb +5 -0
  505. data/templates/default/module/html/inherited_attributes.erb +14 -0
  506. data/templates/default/module/html/inherited_constants.erb +8 -0
  507. data/templates/default/module/html/inherited_methods.erb +19 -0
  508. data/templates/default/module/html/item_summary.erb +40 -0
  509. data/templates/default/module/html/method_details_list.erb +9 -0
  510. data/templates/default/module/html/method_summary.erb +14 -0
  511. data/templates/default/module/html/methodmissing.erb +12 -0
  512. data/templates/default/module/html/pre_docstring.erb +1 -0
  513. data/templates/default/module/setup.rb +164 -0
  514. data/templates/default/module/text/children.erb +10 -0
  515. data/templates/default/module/text/class_meths_list.erb +8 -0
  516. data/templates/default/module/text/extends.erb +8 -0
  517. data/templates/default/module/text/header.erb +7 -0
  518. data/templates/default/module/text/includes.erb +8 -0
  519. data/templates/default/module/text/instance_meths_list.erb +8 -0
  520. data/templates/default/module/text/setup.rb +12 -0
  521. data/templates/default/onefile/html/files.erb +5 -0
  522. data/templates/default/onefile/html/headers.erb +6 -0
  523. data/templates/default/onefile/html/layout.erb +17 -0
  524. data/templates/default/onefile/html/readme.erb +3 -0
  525. data/templates/default/onefile/html/setup.rb +61 -0
  526. data/templates/default/root/dot/child.erb +3 -0
  527. data/templates/default/root/dot/setup.rb +5 -0
  528. data/templates/default/root/html/setup.rb +1 -0
  529. data/templates/default/tags/html/example.erb +11 -0
  530. data/templates/default/tags/html/index.erb +3 -0
  531. data/templates/default/tags/html/option.erb +24 -0
  532. data/templates/default/tags/html/overload.erb +14 -0
  533. data/templates/default/tags/html/see.erb +8 -0
  534. data/templates/default/tags/html/tag.erb +20 -0
  535. data/templates/default/tags/setup.rb +55 -0
  536. data/templates/default/tags/text/example.erb +12 -0
  537. data/templates/default/tags/text/index.erb +1 -0
  538. data/templates/default/tags/text/option.erb +20 -0
  539. data/templates/default/tags/text/overload.erb +19 -0
  540. data/templates/default/tags/text/see.erb +11 -0
  541. data/templates/default/tags/text/tag.erb +13 -0
  542. data/templates/guide/class/html/setup.rb +1 -0
  543. data/templates/guide/docstring/html/setup.rb +1 -0
  544. data/templates/guide/fulldoc/html/css/style.css +108 -0
  545. data/templates/guide/fulldoc/html/js/app.js +33 -0
  546. data/templates/guide/fulldoc/html/setup.rb +73 -0
  547. data/templates/guide/layout/html/layout.erb +81 -0
  548. data/templates/guide/layout/html/setup.rb +28 -0
  549. data/templates/guide/method/html/header.erb +18 -0
  550. data/templates/guide/method/html/setup.rb +21 -0
  551. data/templates/guide/module/html/header.erb +7 -0
  552. data/templates/guide/module/html/method_list.erb +5 -0
  553. data/templates/guide/module/html/setup.rb +26 -0
  554. data/templates/guide/onefile/html/files.erb +4 -0
  555. data/templates/guide/onefile/html/setup.rb +5 -0
  556. data/templates/guide/onefile/html/toc.erb +3 -0
  557. data/templates/guide/tags/html/setup.rb +8 -0
  558. metadata +689 -0
@@ -0,0 +1,126 @@
1
+ class Foo
2
+ class << self
3
+ def inherited; end
4
+ def included; end
5
+ # docstring
6
+ def extended; end
7
+ def method_added; end
8
+ def method_removed; end
9
+ def method_undefined; end
10
+ end
11
+
12
+ # A docstring but no return type
13
+ def initialize; end
14
+
15
+ def ==(other)
16
+ 'hello'
17
+ end
18
+ def /(other) 'hi' end
19
+
20
+ attr_reader :method1
21
+
22
+ def method1
23
+ def dynamic; end
24
+ end
25
+
26
+ def self.method2; end
27
+
28
+ # Docstring
29
+ def String :: hello; "" end
30
+
31
+ def self.new() end
32
+
33
+ def [](key = 'default') puts key end
34
+ def []=(key, value) end
35
+ def
36
+ allowed?
37
+ end
38
+
39
+ def ` param; end
40
+ def /(x = File.new('x', 'w'), y = 2) end
41
+ def |; end; def =~ ()
42
+ def -@; end;
43
+ end
44
+ def *(o) def +@; end
45
+ def ~@
46
+ end end
47
+ def &(o) end
48
+ def %(o) end
49
+ def ^(o) end
50
+
51
+ def optsmeth(x, opts = {}) end
52
+ def blockmeth(x, &block) end
53
+
54
+ # @param a [Fixnum]
55
+ # @overload def bar(a, b = 1)
56
+ # @param a [String]
57
+ # @return [String]
58
+ # @overload def baz(b, c)
59
+ # @return [Fixnum]
60
+ # @overload bang(d, e)
61
+ def foo(*args); end
62
+
63
+ # No return tag
64
+ def boolean?; end
65
+
66
+ # @return without type
67
+ def boolean2?; end
68
+
69
+ # @return [NotBoolean, nil]
70
+ def boolean3?; end
71
+
72
+ # @overload rainy?
73
+ # @return whether today is the rainy day.
74
+ def rainy?; end
75
+
76
+ attr_writer :attr_name
77
+ def attr_name; end
78
+
79
+ attr_reader :attr_name2
80
+ def attr_name2=; end
81
+
82
+ # @option opts :bar [String] It's bar!
83
+ def auto_opts(opts)
84
+ end
85
+ end
86
+
87
+ CONST = Foo
88
+ def CONST.meth_on_const; end
89
+ CONST2 = CONST
90
+ def CONST2.meth2_on_const; end
91
+
92
+ class D
93
+ alias b a
94
+
95
+ # foo bar
96
+ def a; end
97
+ end
98
+
99
+ class E
100
+ # @!macro prop
101
+ # @!method $1(value)
102
+ # $3
103
+ # @return [$2]
104
+ def self.property(name, ret_type, docstring)
105
+ end
106
+
107
+ property :foo, String, "create a foo"
108
+
109
+ # @!macro xyz
110
+ # @!method $1
111
+ def xyz; end
112
+
113
+ xyz :a
114
+ end
115
+
116
+ module F
117
+ class A
118
+ def foo; end
119
+
120
+ def end
121
+ end
122
+
123
+ # PASS
124
+ def bar; end
125
+ end
126
+ end
@@ -0,0 +1,37 @@
1
+ module A; end
2
+ module B;
3
+ module C; end
4
+ module D; end
5
+ end
6
+
7
+ QQQ = B::D
8
+
9
+ class X
10
+ include A
11
+ include B, B::C, NOTEXIST
12
+ end
13
+
14
+ module Y
15
+ include B::C, B if X == 2
16
+ include A
17
+ include QQQ
18
+
19
+ class << self; include A; end
20
+ end
21
+
22
+ module Z
23
+ include A, B
24
+ end
25
+
26
+ module ABC
27
+ module FOO; end
28
+ module DEF
29
+ module FOO
30
+ include ABC::FOO
31
+ end
32
+
33
+ module BAR
34
+ include ABC::BAR
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,29 @@
1
+ module ModName
2
+ private
3
+
4
+ # Docstring
5
+ module OtherModName
6
+ end
7
+ end
8
+
9
+ module StressTest; end
10
+
11
+ module A; end
12
+
13
+ module Q
14
+ module A::B
15
+ end
16
+ module FOO; end
17
+ end
18
+
19
+ module ::Kernel
20
+ def x; end
21
+ end
22
+
23
+ module A; end
24
+ module B; end
25
+ module C; end
26
+ class D; include A; include B; include C; end
27
+
28
+ Z = Q
29
+ module Z::FOO::A; end
@@ -0,0 +1,8 @@
1
+ module A
2
+ Foo = 1
3
+ class B; end
4
+ module C; end
5
+ module D; end
6
+
7
+ private_constant :Foo, 'B', C
8
+ end
@@ -0,0 +1,11 @@
1
+ class A < NotHandler
2
+ process { hello }
3
+ end
4
+
5
+ class B < YARD::Handlers::Ruby::Base
6
+ process { test }
7
+ end
8
+
9
+ class C < YARD::Handlers::Ruby::Legacy::Base
10
+ process do test end
11
+ end
@@ -0,0 +1,32 @@
1
+ class Testing
2
+ def pub; end
3
+
4
+ private
5
+
6
+ def priv; end
7
+ def notpriv; end
8
+ def notpriv2; end
9
+ def notpriv?; end
10
+
11
+ protected
12
+
13
+ def prot; end
14
+
15
+ public
16
+
17
+ def pub2; end
18
+
19
+ protected :notpriv, 'notpriv2', :notpriv?
20
+
21
+ private name
22
+ private *argument
23
+ private *(method_call)
24
+
25
+ def Foo; end
26
+ private :Foo
27
+
28
+ private
29
+
30
+ class Bar; end
31
+ module Baz; end
32
+ end
@@ -0,0 +1,54 @@
1
+ class Testing
2
+ # Ignore yields outside methods
3
+ yield x, y, z
4
+
5
+ # Should document this
6
+ def mymethod
7
+ yield
8
+ end
9
+
10
+ # Has yield and yieldparam documentation
11
+ # @yield [a, b] Blah
12
+ # @yieldparam a Blah
13
+ # @yieldparam b Blah
14
+ def mymethod2
15
+ yield(b, a) # Yield something else
16
+ end
17
+
18
+ # Has yield documentation only
19
+ # @yield [a, b]
20
+ def mymethod3
21
+ yield self # Should not be changed
22
+ end
23
+
24
+ # Has yieldparam documentation only
25
+ # @yieldparam _self BLAH
26
+ def mymethod4
27
+ yield self
28
+ end
29
+
30
+ # Some weird possibilities..
31
+ # Document it all.
32
+
33
+
34
+ def mymethod5
35
+ yield :a, b, self, File.read('file', 'w'), CONSTANT if x == 2
36
+ end
37
+
38
+ def mymethod6
39
+ yield(b, a)
40
+ end
41
+
42
+ def mymethod7
43
+ yield a
44
+ yield b
45
+ end
46
+
47
+ def mymethod8
48
+ yield self
49
+ end
50
+
51
+ def mymethod9
52
+ yield super
53
+ end
54
+ end
@@ -0,0 +1,48 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ExceptionHandler" do
4
+ before(:all) { parse_file :exception_handler_001, __FILE__ }
5
+
6
+ it "should not document an exception outside of a method" do
7
+ P('Testing').has_tag?(:raise).should == false
8
+ end
9
+
10
+ it "should document a valid raise" do
11
+ P('Testing#mymethod').tag(:raise).types.should == ['ArgumentError']
12
+ end
13
+
14
+ it "should only document non-dynamic raises" do
15
+ P('Testing#mymethod2').tag(:raise).should be_nil
16
+ P('Testing#mymethod6').tag(:raise).should be_nil
17
+ P('Testing#mymethod7').tag(:raise).should be_nil
18
+ end
19
+
20
+ it "should treat ConstantName.new as a valid exception class" do
21
+ P('Testing#mymethod8').tag(:raise).types.should == ['ExceptionClass']
22
+ end
23
+
24
+ it "should not document a method with an existing @raise tag" do
25
+ P('Testing#mymethod3').tag(:raise).types.should == ['A']
26
+ end
27
+
28
+ it "should only document the first raise message of a method (limitation of exception handler)" do
29
+ P('Testing#mymethod4').tag(:raise).types.should == ['A']
30
+ end
31
+
32
+ it "should handle complex class names" do
33
+ P('Testing#mymethod5').tag(:raise).types.should == ['YARD::Parser::UndocumentableError']
34
+ end
35
+
36
+ it "should ignore any raise calls on a receiver" do
37
+ P('Testing#mymethod9').tag(:raise).should be_nil
38
+ end
39
+
40
+ it "should handle raise expressions that are method calls" do
41
+ P('Testing#mymethod10').tag(:raise).should be_nil
42
+ P('Testing#mymethod11').tag(:raise).should be_nil
43
+ end
44
+
45
+ it "should ignore empty raise call" do
46
+ P('Testing#mymethod12').tag(:raise).should be_nil
47
+ end
48
+ end
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ExtendHandler" do
4
+ before(:all) { parse_file :extend_handler_001, __FILE__ }
5
+
6
+ it "should include modules at class scope" do
7
+ Registry.at(:B).class_mixins.should == [P(:A)]
8
+ Registry.at(:B).instance_mixins.should be_empty
9
+ end
10
+
11
+ it "should handle a module extending itself" do
12
+ Registry.at(:C).class_mixins.should == [P(:C)]
13
+ Registry.at(:C).instance_mixins.should be_empty
14
+ end
15
+
16
+ it "should extend module with correct namespace" do
17
+ Registry.at('Q::R::S').class_mixins.first.path.should == 'A'
18
+ end
19
+
20
+ it "should not allow extending self if object is a class" do
21
+ undoc_error "class Foo; extend self; end"
22
+ end
23
+ end
@@ -0,0 +1,128 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ include Parser::Ruby::Legacy
4
+
5
+ describe YARD::Handlers::Ruby::Legacy::Base, "#tokval" do
6
+
7
+ before { @handler = Handlers::Ruby::Legacy::Base.new(nil, nil) }
8
+
9
+ def tokval(code, *types)
10
+ @handler.send(:tokval, TokenList.new(code).first, *types)
11
+ end
12
+
13
+ it "should return the String's value without quotes" do
14
+ tokval('"hello"').should == "hello"
15
+ end
16
+
17
+ it "should not allow interpolated strings with TkSTRING" do
18
+ tokval('"#{c}"', RubyToken::TkSTRING).should be_nil
19
+ end
20
+
21
+ it "should return a Symbol's value as a String (as if it was done via :name.to_sym)" do
22
+ tokval(':sym').should == :sym
23
+ end
24
+
25
+ it "should return nil for any non accepted type" do
26
+ tokval('identifier').should be_nil
27
+ tokval(':sym', RubyToken::TkId).should be_nil
28
+ end
29
+
30
+ it "should accept TkVal tokens by default" do
31
+ tokval('2.5').should == 2.5
32
+ tokval(':sym').should == :sym
33
+ end
34
+
35
+ it "should accept any ID type if TkId is set" do
36
+ tokval('variable', RubyToken::TkId).should == "variable"
37
+ tokval('CONSTANT', RubyToken::TkId).should == "CONSTANT"
38
+ end
39
+
40
+ it "should allow extra token types to be accepted" do
41
+ tokval('2.5', RubyToken::TkFLOAT).should == 2.5
42
+ tokval('2', RubyToken::TkFLOAT).should be_nil
43
+ tokval(':symbol', RubyToken::TkFLOAT).should be_nil
44
+ end
45
+
46
+ it "should allow :string for any string type" do
47
+ tokval('"hello"', :string).should == "hello"
48
+ tokval('"#{c}"', :string).should == '#{c}'
49
+ end
50
+
51
+ it "should not include interpolated strings when using :attr" do
52
+ tokval('"#{c}"', :attr).should be_nil
53
+ end
54
+
55
+ it "should allow any number type with :number" do
56
+ tokval('2.5', :number).should == 2.5
57
+ tokval('2', :number).should == 2
58
+ end
59
+
60
+ it "should should allow method names with :identifier" do
61
+ tokval('methodname?', :identifier).should == "methodname?"
62
+ end
63
+
64
+ #it "should obey documentation expectations" do docspec end
65
+ end
66
+
67
+ describe YARD::Handlers::Base, "#tokval_list" do
68
+ before { @handler = Handlers::Ruby::Legacy::Base.new(nil, nil) }
69
+
70
+ def tokval_list(code, *types)
71
+ @handler.send(:tokval_list, TokenList.new(code), *types)
72
+ end
73
+
74
+ it "should return the list of tokvalues" do
75
+ tokval_list(":a, :b, \"\#{c}\", 'd'", :attr).should == [:a, :b, 'd']
76
+ tokval_list(":a, :b, File.read(\"\#{c}\", ['w']), :d",
77
+ RubyToken::Token).should == [:a, :b, 'File.read("#{c}", [\'w\'])', :d]
78
+ end
79
+
80
+ it "should try to skip any invalid tokens" do
81
+ tokval_list(":a, :b, \"\#{c}\", :d", :attr).should == [:a, :b, :d]
82
+ tokval_list(":a, :b, File.read(\"\#{c}\", 'w', File.open { }), :d", :attr).should == [:a, :b, :d]
83
+ tokval_list("CONST1, identifier, File.read(\"\#{c}\", 'w', File.open { }), CONST2",
84
+ RubyToken::TkId).should == ['CONST1', 'identifier', 'CONST2']
85
+ end
86
+
87
+ it "should ignore a token if another invalid token is read before a comma" do
88
+ tokval_list(":a, :b XYZ, :c", RubyToken::TkSYMBOL).should == [:a, :c]
89
+ end
90
+
91
+ it "should stop on most keywords" do
92
+ tokval_list(':a rescue :x == 5', RubyToken::Token).should == [:a]
93
+ end
94
+
95
+ it "should handle ignore parentheses that begin the token list" do
96
+ tokval_list('(:a, :b, :c)', :attr).should == [:a, :b, :c]
97
+ end
98
+
99
+ it "should end when a closing parenthesis was found" do
100
+ tokval_list(':a, :b, :c), :d', :attr).should == [:a, :b, :c]
101
+ end
102
+
103
+ it "should ignore parentheses around items in a list" do
104
+ tokval_list(':a, (:b), :c, (:d TEST), :e, [:f], :g', :attr).should == [:a, :b, :c, :e, :g]
105
+ tokval_list(':a, (((:f)))', :attr).should == [:a, :f]
106
+ tokval_list(':a, ([:f]), :c)', RubyToken::Token).should == [:a, '[:f]', :c]
107
+ end
108
+
109
+ it "should not stop on a true/false/self keyword (cannot handle nil)" do
110
+ tokval_list(':a, true, :b, self, false, :c, nil, File, super, if, XYZ',
111
+ RubyToken::Token).should == [:a, true, :b, 'self', false, :c, 'File', 'super']
112
+ end
113
+
114
+ it "should ignore invalid commas" do
115
+ tokval_list(":a, :b, , :d").should == [:a, :b, :d]
116
+ end
117
+
118
+ it "should return an empty list if no matches were found" do
119
+ tokval_list('attr_accessor :x').should == []
120
+ end
121
+
122
+ it "should treat {} as a valid value" do
123
+ # FIXME: tokval_list destroys extra spaces surrounding the '=' in
124
+ # this situation. This is technically a design flaw of the
125
+ # tokval parser, but this is now the expected behaviour.
126
+ tokval_list("opts = {}", :all).should == ["opts={}"]
127
+ end
128
+ end
@@ -0,0 +1,14 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MethodConditionHandler" do
4
+ before(:all) { parse_file :method_condition_handler_001, __FILE__ }
5
+
6
+ it "should not parse regular if blocks in methods" do
7
+ Registry.at('#b').should be_nil
8
+ end
9
+
10
+ it "should parse if/unless blocks in the form X if COND" do
11
+ Registry.at('#c').should_not be_nil
12
+ Registry.at('#d').should_not be_nil
13
+ end
14
+ end
@@ -0,0 +1,184 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MethodHandler" do
4
+ before(:all) do
5
+ log.enter_level(Logger::ERROR) do
6
+ parse_file :method_handler_001, __FILE__
7
+ end
8
+ end
9
+
10
+ it "should add methods to parent's #meths list" do
11
+ P(:Foo).meths.should include(P("Foo#method1"))
12
+ end
13
+
14
+ it "should parse/add class methods (self.method2)" do
15
+ P(:Foo).meths.should include(P("Foo.method2"))
16
+ end
17
+
18
+ it "should parse/add class methods from other namespaces (String.hello)" do
19
+ P("String.hello").should be_instance_of(CodeObjects::MethodObject)
20
+ end
21
+
22
+ [:[], :[]=, :allowed?, :/, :=~, :==, :`, :|, :*, :&, :%, :'^', :-@, :+@, :'~@'].each do |name|
23
+ it "should allow valid method #{name}" do
24
+ Registry.at("Foo##{name}").should_not be_nil
25
+ end
26
+ end
27
+
28
+ it "should allow self.methname" do
29
+ Registry.at("Foo.new").should_not be_nil
30
+ end
31
+
32
+ it "should mark dynamic methods as such" do
33
+ P('Foo#dynamic').dynamic?.should == true
34
+ end
35
+
36
+ it "should show that a method is explicitly defined (if it was originally defined implicitly by attribute)" do
37
+ P('Foo#method1').is_explicit?.should == true
38
+ end
39
+
40
+ it "should handle parameters" do
41
+ P('Foo#[]').parameters.should == [['key', "'default'"]]
42
+ P('Foo#/').parameters.should == [['x', "File.new('x', 'w')"], ['y', '2']]
43
+ end
44
+
45
+ it "should handle opts = {} as parameter" do
46
+ P('Foo#optsmeth').parameters.should == [['x', nil], ['opts', '{}']]
47
+ end
48
+
49
+ it "should handle &block as parameter" do
50
+ P('Foo#blockmeth').parameters.should == [['x', nil], ['&block', nil]]
51
+ end
52
+
53
+ it "should handle overloads" do
54
+ meth = P('Foo#foo')
55
+
56
+ o1 = meth.tags(:overload).first
57
+ o1.name.should == :bar
58
+ o1.parameters.should == [['a', nil], ['b', "1"]]
59
+ o1.tag(:return).type.should == "String"
60
+
61
+ o2 = meth.tags(:overload)[1]
62
+ o2.name.should == :baz
63
+ o2.parameters.should == [['b', nil], ['c', nil]]
64
+ o2.tag(:return).type.should == "Fixnum"
65
+
66
+ o3 = meth.tags(:overload)[2]
67
+ o3.name.should == :bang
68
+ o3.parameters.should == [['d', nil], ['e', nil]]
69
+ o3.docstring.should be_empty
70
+ o3.docstring.should be_blank
71
+ end
72
+
73
+ it "should set a return tag if not set on #initialize" do
74
+ meth = P('Foo#initialize')
75
+
76
+ meth.should have_tag(:return)
77
+ meth.tag(:return).types.should == ["Foo"]
78
+ meth.tag(:return).text.should == "a new instance of Foo"
79
+ end
80
+
81
+ %w(inherited included method_added method_removed method_undefined).each do |meth|
82
+ it "should set @private tag on #{meth} callback method if no docstring is set" do
83
+ P('Foo.' + meth).should have_tag(:private)
84
+ end
85
+ end
86
+
87
+ it "should not set @private tag on extended callback method since docstring is set" do
88
+ P('Foo.extended').should_not have_tag(:private)
89
+ end
90
+
91
+ it "should add @return [Boolean] tag to methods ending in ? without return types" do
92
+ meth = P('Foo#boolean?')
93
+ meth.should have_tag(:return)
94
+ meth.tag(:return).types.should == ['Boolean']
95
+ end
96
+
97
+ it "should add Boolean type to return tag without types" do
98
+ meth = P('Foo#boolean2?')
99
+ meth.should have_tag(:return)
100
+ meth.tag(:return).types.should == ['Boolean']
101
+ end
102
+
103
+ it "should not change return type for method ending in ? with return types set" do
104
+ meth = P('Foo#boolean3?')
105
+ meth.should have_tag(:return)
106
+ meth.tag(:return).types.should == ['NotBoolean', 'nil']
107
+ end
108
+
109
+ it "should not change return type for method ending in ? with return types set by @overload" do
110
+ meth = P('Foo#rainy?')
111
+ meth.should have_tag(:overload)
112
+ meth.tag(:overload).should have_tag(:return)
113
+ meth.should_not have_tag(:return)
114
+ end
115
+
116
+ it "should add method writer to existing attribute" do
117
+ Registry.at('Foo#attr_name').should be_reader
118
+ Registry.at('Foo#attr_name=').should be_writer
119
+ end
120
+
121
+ it "should add method reader to existing attribute" do
122
+ Registry.at('Foo#attr_name2').should be_reader
123
+ Registry.at('Foo#attr_name2=').should be_writer
124
+ end
125
+
126
+ it "should generate an options parameter if @option refers to an undocumented parameter" do
127
+ meth = P('Foo#auto_opts')
128
+ meth.should have_tag(:param)
129
+ meth.tag(:param).name.should == "opts"
130
+ meth.tag(:param).types.should == ["Hash"]
131
+ end
132
+
133
+ it "should raise an undocumentable error when a method is defined on an object instance" do
134
+ undoc_error "error = Foo; def error.at(foo) end"
135
+ Registry.at('error').should be_nil
136
+ end
137
+
138
+ it "should allow class method to be defined on constant reference object" do
139
+ Registry.at('Foo.meth_on_const').should_not be_nil
140
+ Registry.at('Foo.meth2_on_const').should_not be_nil
141
+ end
142
+
143
+ it "should copy alias information on method (re-)definition to new method" do
144
+ Registry.at('D').aliases.should be_empty
145
+ Registry.at('D#b').is_alias?.should == false
146
+ Registry.at('D#a').is_alias?.should == false
147
+ end
148
+
149
+ it "should add macros for class methods" do
150
+ macro = CodeObjects::MacroObject.find('prop')
151
+ macro.should_not be_nil
152
+ macro.macro_data.should == "@!method $1(value)\n$3\n@return [$2]"
153
+ macro.method_object.should == Registry.at('E.property')
154
+ macro.should be_attached
155
+ obj = Registry.at('E#foo')
156
+ obj.should_not be_nil
157
+ obj.docstring.should == 'create a foo'
158
+ obj.signature.should == 'def foo(value)'
159
+ obj.tag(:return).types.should == ['String']
160
+ end
161
+
162
+ it "should handle macros on any object" do
163
+ macro = CodeObjects::MacroObject.find('xyz')
164
+ macro.should_not be_nil
165
+ macro.macro_data.should == '@!method $1'
166
+ end
167
+
168
+ it "should skip macros on instance methods" do
169
+ Registry.at('E#a').should be_nil
170
+ end
171
+
172
+ it "should warn if the macro name is invalid" do
173
+ log.should_receive(:warn).with(/Invalid directive.*@!macro/)
174
+ YARD.parse_string "class Foo\n# @!macro\ndef self.foo; end\nend"
175
+ end
176
+
177
+ it "should handle 'def end' methods" do
178
+ obj = Registry.at('F::A#foo')
179
+ obj.should_not be_nil
180
+ obj = Registry.at('F::A#bar')
181
+ obj.should_not be_nil
182
+ obj.docstring.should == 'PASS'
183
+ end
184
+ end