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,55 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MixinHandler" do
4
+ before(:all) { parse_file :mixin_handler_001, __FILE__ }
5
+
6
+ it "should handle includes from classes or modules" do
7
+ Registry.at(:X).instance_mixins.should include(P(:A))
8
+ Registry.at(:Y).instance_mixins.should include(P(:A))
9
+ end
10
+
11
+ it "should handle includes in class << self" do
12
+ Registry.at(:Y).class_mixins.should include(P(:A))
13
+ end
14
+
15
+ it "should handle includes for modules that don't yet exist" do
16
+ Registry.at(:X).instance_mixins.should include(P(nil, :NOTEXIST))
17
+ end
18
+
19
+ it "should set the type of non-existing modules to :module" do
20
+ o = Registry.at(:X).instance_mixins.find {|o| o.name == :NOTEXIST }
21
+ o.type.should == :module
22
+ end
23
+
24
+ it "should handle includes with multiple parameters" do
25
+ Registry.at(:X).should_not be_nil
26
+ end
27
+
28
+ it "should handle complex include statements" do
29
+ P(:Y).instance_mixins.should include(P('B::C'))
30
+ P(:Y).instance_mixins.should include(P(:B))
31
+ end
32
+
33
+ it "should treat a mixed in Constant by taking its value as the real object name" do
34
+ P(:Y).instance_mixins.should include(Registry.at('B::D'))
35
+ end
36
+
37
+ it "should add includes in the correct order when include is given multiple arguments" do
38
+ P(:Z).instance_mixins.should == [P(:A), P(:B)]
39
+ end
40
+
41
+ it "should avoid including self for unresolved mixins of the same name" do
42
+ P("ABC::DEF::FOO").mixins.should == [P("ABC::FOO")]
43
+ P("ABC::DEF::BAR").mixins.should == [P("ABC::BAR")]
44
+ end
45
+
46
+ it "should raise undocumentable error if argument is variable" do
47
+ undoc_error "module X; include invalid; end"
48
+ Registry.at('X').mixins.should == []
49
+ end
50
+
51
+ it "should parse all other arguments before erroring out on undocumentable error" do
52
+ undoc_error "module X; include invalid, Y; end"
53
+ Registry.at('X').mixins.should == [P('Y')]
54
+ end
55
+ end
@@ -0,0 +1,105 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}VisibilityHandler" do
4
+ after { Registry.clear }
5
+
6
+ def assert_module_function(namespace, name)
7
+ klass = Registry.at("#{namespace}.#{name}")
8
+ instance = Registry.at("#{namespace}##{name}")
9
+ klass.should_not be_nil
10
+ instance.should_not be_nil
11
+ klass.should be_module_function
12
+ instance.should_not be_module_function
13
+ klass.visibility.should == :public
14
+ instance.visibility.should == :private
15
+ end
16
+
17
+ it "should be able to create a module function with parameters" do
18
+ YARD.parse_string <<-eof
19
+ module Foo
20
+ def bar; end
21
+ def baz; end
22
+
23
+ module_function :bar, :baz
24
+ end
25
+ eof
26
+ assert_module_function('Foo', 'bar')
27
+ assert_module_function('Foo', 'baz')
28
+ end
29
+
30
+ it "should be able to set scope for duration of block without params" do
31
+ YARD.parse_string <<-eof
32
+ module Foo
33
+ def qux; end
34
+
35
+ module_function
36
+
37
+ def bar; end
38
+ def baz; end
39
+ end
40
+ eof
41
+ Registry.at('Foo.qux').should be_nil
42
+ assert_module_function('Foo', 'bar')
43
+ assert_module_function('Foo', 'baz')
44
+ end
45
+
46
+ # @bug gh-563
47
+ it "should copy tags to module function properly" do
48
+ YARD.parse_string <<-eof
49
+ module Foo
50
+ # @param [String] foo bar
51
+ # @option foo [String] bar (nil) baz
52
+ # @return [void]
53
+ def bar(foo); end
54
+ module_function :bar
55
+ end
56
+ eof
57
+ assert_module_function('Foo', 'bar')
58
+ o = Registry.at('Foo.bar')
59
+ o.tag(:param).types.should == ['String']
60
+ o.tag(:param).name.should == 'foo'
61
+ o.tag(:param).text.should == 'bar'
62
+ o.tag(:option).name.should == 'foo'
63
+ o.tag(:option).pair.types.should == ['String']
64
+ o.tag(:option).pair.defaults.should == ['nil']
65
+ o.tag(:option).pair.text.should == 'baz'
66
+ o.tag(:return).types.should == ['void']
67
+ end
68
+
69
+ it "should handle all method names in parameters" do
70
+ YARD.parse_string <<-eof
71
+ module Foo
72
+ def -(t); end
73
+ def ==(other); end
74
+ def a?; end
75
+ module_function :-, '==', :a?
76
+ end
77
+ eof
78
+ assert_module_function('Foo', '-')
79
+ assert_module_function('Foo', '==')
80
+ assert_module_function('Foo', 'a?')
81
+ end
82
+
83
+ it "should only accept strings and symbols" do
84
+ YARD.parse_string <<-eof
85
+ module Foo
86
+ module_function name
87
+ module_function *argument
88
+ module_function *(method_call)
89
+ end
90
+ eof
91
+ Registry.at('Foo#name').should be_nil
92
+ Registry.at('Foo#argument').should be_nil
93
+ Registry.at('Foo#method_call').should be_nil
94
+ end
95
+
96
+ it "should handle constants passed in as symbols" do
97
+ YARD.parse_string <<-eof
98
+ module Foo
99
+ def Foo; end
100
+ module_function :Foo
101
+ end
102
+ eof
103
+ assert_module_function('Foo', 'Foo')
104
+ end
105
+ end
@@ -0,0 +1,34 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ModuleHandler" do
4
+ before(:all) { parse_file :module_handler_001, __FILE__ }
5
+
6
+ it "should parse a module block" do
7
+ Registry.at(:ModName).should_not == nil
8
+ Registry.at("ModName::OtherModName").should_not == nil
9
+ end
10
+
11
+ it "should attach docstring" do
12
+ Registry.at("ModName::OtherModName").docstring.should == "Docstring"
13
+ end
14
+
15
+ it "should handle any formatting" do
16
+ Registry.at(:StressTest).should_not == nil
17
+ end
18
+
19
+ it "should handle complex module names" do
20
+ Registry.at("A::B").should_not == nil
21
+ end
22
+
23
+ it "should handle modules in the form ::ModName" do
24
+ Registry.at("Kernel").should_not be_nil
25
+ end
26
+
27
+ it "should list mixins in proper order" do
28
+ Registry.at('D').mixins.should == [P(:C), P(:B), P(:A)]
29
+ end
30
+
31
+ it "should create proper module when constant is in namespace" do
32
+ Registry.at('Q::FOO::A').should_not be_nil
33
+ end
34
+ end
@@ -0,0 +1,24 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}PrivateConstantHandler" do
4
+ before(:all) { parse_file :private_constant_handler_001, __FILE__ }
5
+
6
+ it "should handle private_constant statement" do
7
+ Registry.at('A::Foo').visibility.should == :private
8
+ Registry.at('A::B').visibility.should == :private
9
+ Registry.at('A::C').visibility.should == :private
10
+ end
11
+
12
+ it "should make all other constants public" do
13
+ Registry.at('A::D').visibility.should == :public
14
+ end
15
+
16
+ it "should fail if parameter is not String, Symbol or Constant" do
17
+ undoc_error 'class Foo; private_constant x; end'
18
+ undoc_error 'class Foo; X = 1; private_constant X.new("hi"); end'
19
+ end unless LEGACY_PARSER
20
+
21
+ it "should fail if constant can't be recognized" do
22
+ undoc_error 'class Foo2; private_constant :X end'
23
+ end
24
+ end
@@ -0,0 +1,34 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::Handlers::Processor do
4
+ before do
5
+ @proc = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby))
6
+ end
7
+
8
+ it "should start with public visibility" do
9
+ @proc.visibility.should == :public
10
+ end
11
+
12
+ it "should start in instance scope" do
13
+ @proc.scope.should == :instance
14
+ end
15
+
16
+ it "should start in root namespace" do
17
+ @proc.namespace.should == Registry.root
18
+ end
19
+
20
+ it "should have a globals structure" do
21
+ @proc.globals.should be_a(OpenStruct)
22
+ end
23
+
24
+ it 'should ignore HandlerAborted exceptions (but print debug info)' do
25
+ class AbortHandlerProcessor < YARD::Handlers::Ruby::Base
26
+ process { abort! }
27
+ end
28
+ stmt = OpenStruct.new(:line => 1, :show => 'SOURCE')
29
+ @proc.stub!(:find_handlers).and_return([AbortHandlerProcessor])
30
+ log.should_receive(:debug).with(/AbortHandlerProcessor cancelled from/)
31
+ log.should_receive(:debug).with("\tin file '(stdin)':1:\n\nSOURCE\n")
32
+ @proc.process([stmt])
33
+ end
34
+ end
@@ -0,0 +1,94 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe YARD::Handlers::Ruby::Base, '#valid_handler?' do
4
+ include YARD::Parser::Ruby; YARD::Parser::Ruby::AstNode
5
+
6
+ before do
7
+ Handlers::Ruby::Base.stub!(:inherited)
8
+ @processor = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby))
9
+ end
10
+
11
+ after(:all) do
12
+ Handlers::Base.clear_subclasses
13
+ end
14
+
15
+ def valid(handler, stmt)
16
+ @processor.find_handlers(stmt).should include(handler)
17
+ end
18
+
19
+ def invalid(handler, stmt)
20
+ @processor.find_handlers(stmt).should_not include(handler)
21
+ end
22
+
23
+ it "should only handle Handlers inherited from Ruby::Base class" do
24
+ class IgnoredHandler < Handlers::Base
25
+ handles :list
26
+ end
27
+ class NotIgnoredHandler < Handlers::Ruby::Base
28
+ handles :list
29
+ end
30
+ Handlers::Base.stub!(:subclasses).and_return [IgnoredHandler, NotIgnoredHandler]
31
+ @processor.find_handlers(s()).should == [NotIgnoredHandler]
32
+ end
33
+
34
+ it "should handle string input (matches AstNode#source)" do
35
+ class StringHandler < Handlers::Ruby::Base
36
+ handles "x"
37
+ end
38
+ Handlers::Base.stub!(:subclasses).and_return [StringHandler]
39
+ ast = Parser::Ruby::RubyParser.parse("if x == 2 then true end").ast
40
+ valid StringHandler, ast[0][0][0]
41
+ invalid StringHandler, ast[0][1]
42
+ end
43
+
44
+ it "should handle symbol input (matches AstNode#type)" do
45
+ class SymbolHandler < Handlers::Ruby::Base
46
+ handles :myNodeType
47
+ end
48
+ Handlers::Base.stub!(:subclasses).and_return [SymbolHandler]
49
+ valid SymbolHandler, s(:myNodeType, s(1, 2, 3))
50
+ invalid SymbolHandler, s(:NOTmyNodeType, s(1, 2, 3))
51
+ end
52
+
53
+ it "should handle regex input (matches AstNode#source)" do
54
+ class RegexHandler < Handlers::Ruby::Base
55
+ handles %r{^if x ==}
56
+ end
57
+ Handlers::Base.stub!(:subclasses).and_return [RegexHandler]
58
+ ast = Parser::Ruby::RubyParser.parse("if x == 2 then true end").ast
59
+ valid RegexHandler, ast
60
+ invalid RegexHandler, ast[0][1]
61
+ end
62
+
63
+ it "should handle AstNode input (matches AST literally)" do
64
+ class ASTHandler < Handlers::Ruby::Base
65
+ handles s(:vcall, s(:ident, "hello_world"))
66
+ end
67
+ Handlers::Base.stub!(:subclasses).and_return [ASTHandler]
68
+ valid ASTHandler, s(:vcall, s(:ident, "hello_world"))
69
+ invalid ASTHandler, s(:vcall, s(:ident, "NOTHELLOWORLD"))
70
+ end
71
+
72
+ it "should handle #method_call(:methname) on a valid AST" do
73
+ class MethCallHandler < Handlers::Ruby::Base
74
+ handles method_call(:meth)
75
+ end
76
+ Handlers::Base.stub!(:subclasses).and_return [MethCallHandler]
77
+ ast = Parser::Ruby::RubyParser.parse(<<-"eof").ast
78
+ meth # 0
79
+ meth() # 1
80
+ meth(1,2,3) # 2
81
+ meth 1,2,3 # 3
82
+ NotMeth.meth # 4
83
+ NotMeth.meth { } # 5
84
+ NotMeth.meth do end # 6
85
+ NotMeth.meth 1, 2, 3 # 7
86
+ NotMeth.meth(1, 2, 3) # 8
87
+ NotMeth # 9
88
+ eof
89
+ (0..8).each do |i|
90
+ valid MethCallHandler, ast[i]
91
+ end
92
+ invalid MethCallHandler, ast[9]
93
+ end
94
+ end if HAVE_RIPPER
@@ -0,0 +1,82 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ include Parser::Ruby::Legacy
4
+
5
+ describe YARD::Handlers::Ruby::Legacy::Base, "#handles and inheritance" do
6
+ before do
7
+ Handlers::Ruby::Legacy::Base.stub!(:inherited)
8
+ Handlers::Ruby::Legacy::MixinHandler.stub!(:inherited) # fixes a Ruby1.9 issue
9
+ @processor = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby18))
10
+ end
11
+
12
+ after(:all) do
13
+ Handlers::Base.clear_subclasses
14
+ end
15
+
16
+ def stmt(string)
17
+ Statement.new(TokenList.new(string))
18
+ end
19
+
20
+ it "should only handle Handlers inherited from Ruby::Legacy::Base class" do
21
+ class IgnoredHandler < Handlers::Base
22
+ handles "hello"
23
+ end
24
+ class NotIgnoredHandlerLegacy < Handlers::Ruby::Legacy::Base
25
+ handles "hello"
26
+ end
27
+ Handlers::Base.stub!(:subclasses).and_return [IgnoredHandler, NotIgnoredHandlerLegacy]
28
+ @processor.find_handlers(stmt("hello world")).should == [NotIgnoredHandlerLegacy]
29
+ end
30
+
31
+ it "should handle a string input" do
32
+ class TestStringHandler < Handlers::Ruby::Legacy::Base
33
+ handles "hello"
34
+ end
35
+
36
+ TestStringHandler.handles?(stmt("hello world")).should be_true
37
+ TestStringHandler.handles?(stmt("nothello world")).should be_false
38
+ end
39
+
40
+ it "should handle regex input" do
41
+ class TestRegexHandler < Handlers::Ruby::Legacy::Base
42
+ handles /^nothello$/
43
+ end
44
+
45
+ TestRegexHandler.handles?(stmt("nothello")).should be_true
46
+ TestRegexHandler.handles?(stmt("not hello hello")).should be_false
47
+ end
48
+
49
+ it "should handle token input" do
50
+ class TestTokenHandler < Handlers::Ruby::Legacy::Base
51
+ handles TkMODULE
52
+ end
53
+
54
+ TestTokenHandler.handles?(stmt("module")).should be_true
55
+ TestTokenHandler.handles?(stmt("if")).should be_false
56
+ end
57
+
58
+ it "should parse a do/end or { } block with #parse_block" do
59
+ class MyBlockHandler < Handlers::Ruby::Legacy::Base
60
+ handles /\AmyMethod\b/
61
+ def process
62
+ parse_block(:owner => "test")
63
+ end
64
+ end
65
+
66
+ class MyBlockInnerHandler < Handlers::Ruby::Legacy::Base
67
+ handles "inner"
68
+ def self.reset; @@reached = false end
69
+ def self.reached?; @@reached ||= false end
70
+ def process; @@reached = true end
71
+ end
72
+
73
+ Handlers::Base.stub!(:subclasses).and_return [MyBlockHandler, MyBlockInnerHandler]
74
+ Parser::SourceParser.parser_type = :ruby18
75
+ Parser::SourceParser.parse_string "myMethod do inner end"
76
+ MyBlockInnerHandler.should be_reached
77
+ MyBlockInnerHandler.reset
78
+ Parser::SourceParser.parse_string "myMethod { inner }"
79
+ MyBlockInnerHandler.should be_reached
80
+ Parser::SourceParser.parser_type = :ruby
81
+ end
82
+ end
@@ -0,0 +1,33 @@
1
+ require File.join(File.dirname(__FILE__), "..", "spec_helper")
2
+ require 'stringio'
3
+
4
+ include Handlers
5
+
6
+ def undoc_error(code)
7
+ lambda { StubbedSourceParser.parse_string(code) }.should raise_error(Parser::UndocumentableError)
8
+ end
9
+
10
+ def with_parser(parser_type, &block)
11
+ tmp = StubbedSourceParser.parser_type
12
+ StubbedSourceParser.parser_type = parser_type
13
+ yield
14
+ StubbedSourceParser.parser_type = tmp
15
+ end
16
+
17
+ class StubbedProcessor < Processor
18
+ def process(statements)
19
+ statements.each_with_index do |stmt, index|
20
+ find_handlers(stmt).each do |handler|
21
+ handler.new(self, stmt).process
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ class StubbedSourceParser < Parser::SourceParser
28
+ StubbedSourceParser.parser_type = :ruby
29
+ def post_process
30
+ post = StubbedProcessor.new(self)
31
+ post.process(@parser.enumerator)
32
+ end
33
+ end
@@ -0,0 +1,39 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}VisibilityHandler" do
4
+ before(:all) { parse_file :visibility_handler_001, __FILE__ }
5
+
6
+ it "should be able to set visibility to public" do
7
+ Registry.at("Testing#pub").visibility.should == :public
8
+ Registry.at("Testing#pub2").visibility.should == :public
9
+ end
10
+
11
+ it "should be able to set visibility to private" do
12
+ Registry.at("Testing#priv").visibility.should == :private
13
+ end
14
+
15
+ it "should be able to set visibility to protected" do
16
+ Registry.at("Testing#prot").visibility.should == :protected
17
+ end
18
+
19
+ it "should support parameters and only set visibility on those methods" do
20
+ Registry['Testing#notpriv'].visibility.should == :protected
21
+ Registry['Testing#notpriv2'].visibility.should == :protected
22
+ Registry['Testing#notpriv?'].visibility.should == :protected
23
+ end
24
+
25
+ it "should only accept strings and symbols" do
26
+ Registry.at('Testing#name').should be_nil
27
+ Registry.at('Testing#argument').should be_nil
28
+ Registry.at('Testing#method_call').should be_nil
29
+ end
30
+
31
+ it "should handle constants passed in as symbols" do
32
+ Registry.at('Testing#Foo').visibility.should == :private
33
+ end
34
+
35
+ it 'should not register classes with visibility' do
36
+ Registry.at('Testing::Bar').visibility.should == :public
37
+ Registry.at('Testing::Baz').visibility.should == :public
38
+ end
39
+ end
@@ -0,0 +1,51 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}YieldHandler" do
4
+ before(:all) { parse_file :yield_handler_001, __FILE__ }
5
+
6
+ it "should only parse yield blocks in methods" do
7
+ P(:Testing).tag(:yield).should be_nil
8
+ P(:Testing).tag(:yieldparam).should be_nil
9
+ end
10
+
11
+ it "should handle an empty yield statement" do
12
+ P('Testing#mymethod').tag(:yield).should be_nil
13
+ P('Testing#mymethod').tag(:yieldparam).should be_nil
14
+ end
15
+
16
+ it "should not document a yield statement in a method with either @yield or @yieldparam" do
17
+ P('Testing#mymethod2').tag(:yield).types.should == ['a', 'b']
18
+ P('Testing#mymethod2').tag(:yield).text.should == "Blah"
19
+ P('Testing#mymethod2').tags(:yieldparam).size.should == 2
20
+
21
+ P('Testing#mymethod3').tag(:yield).types.should == ['a', 'b']
22
+ P('Testing#mymethod3').tags(:yieldparam).size.should == 0
23
+
24
+ P('Testing#mymethod4').tag(:yieldparam).name.should == '_self'
25
+ P('Testing#mymethod4').tag(:yieldparam).text.should == 'BLAH'
26
+ end
27
+
28
+ it "should handle any arbitrary yield statement" do
29
+ P('Testing#mymethod5').tag(:yield).types.should == [':a', 'b', '_self', 'File.read(\'file\', \'w\')', 'CONSTANT']
30
+ end
31
+
32
+ it "should handle parentheses" do
33
+ P('Testing#mymethod6').tag(:yield).types.should == ['b', 'a']
34
+ end
35
+
36
+ it "should only document the first yield statement in a method (limitation of yield handler)" do
37
+ P('Testing#mymethod7').tag(:yield).types.should == ['a']
38
+ end
39
+
40
+ it "should handle `self` keyword and list object type as yieldparam for _self" do
41
+ P('Testing#mymethod8').tag(:yield).types.should == ['_self']
42
+ P('Testing#mymethod8').tag(:yieldparam).types.should == ['Testing']
43
+ P('Testing#mymethod8').tag(:yieldparam).text.should == "the object that the method was called on"
44
+ end
45
+
46
+ it "should handle `super` keyword and document it under _super" do
47
+ P('Testing#mymethod9').tag(:yield).types.should == ['_super']
48
+ P('Testing#mymethod9').tag(:yieldparam).types.should be_nil
49
+ P('Testing#mymethod9').tag(:yieldparam).text.should == "the result of the method from the superclass"
50
+ end
51
+ end
@@ -0,0 +1,68 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe YARD::I18n::Locale do
4
+ def locale(name)
5
+ YARD::I18n::Locale.new(name)
6
+ end
7
+
8
+ before do
9
+ @locale = locale("fr")
10
+ end
11
+
12
+ describe "#name" do
13
+ it "should return name" do
14
+ locale("fr").name.should == "fr"
15
+ end
16
+ end
17
+
18
+ describe "#load" do
19
+ it "should return false for nonexistent PO" do
20
+ File.should_receive(:exist?).with('foo/fr.po').and_return(false)
21
+ @locale.load('foo').should == false
22
+ end
23
+
24
+ have_gettext_gem = true
25
+ begin
26
+ require "gettext/tools/poparser"
27
+ rescue LoadError
28
+ have_gettext_gem = false
29
+ end
30
+ it "should return true for existent PO", :if => have_gettext_gem do
31
+ data = <<-eop
32
+ msgid ""
33
+ msgstr ""
34
+ "Language: fr\n"
35
+ "MIME-Version: 1.0\n"
36
+ "Content-Type: text/plain; charset=UTF-8\n"
37
+ "Content-Transfer-Encoding: 8bit\n"
38
+
39
+ msgid "Hello"
40
+ msgstr "Bonjour"
41
+ eop
42
+ parser = GetText::PoParser.new
43
+ File.should_receive(:exist?).with('foo/fr.po').and_return(true)
44
+ GetText::PoParser.should_receive(:new).and_return(parser)
45
+ parser.should_receive(:parse_file) do |file, hash|
46
+ file.should == 'foo/fr.po'
47
+ parser.parse(data, hash)
48
+ end
49
+ @locale.load('foo').should == true
50
+ @locale.translate('Hello').should == "Bonjour"
51
+ end
52
+ end
53
+
54
+ describe "#translate" do
55
+ before do
56
+ messages = @locale.instance_variable_get(:@messages)
57
+ messages["Hello"] = "Bonjour"
58
+ end
59
+
60
+ it "should return translated string for existent string" do
61
+ @locale.translate("Hello") == "Bonjour"
62
+ end
63
+
64
+ it "should return original string for nonexistent string" do
65
+ @locale.translate("nonexistent") == "nonexistent"
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,52 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe YARD::I18n::Message do
4
+ def message(id)
5
+ YARD::I18n::Message.new(id)
6
+ end
7
+
8
+ before do
9
+ @message = message("Hello World!")
10
+ end
11
+
12
+ describe "#id" do
13
+ it "should return ID" do
14
+ message("Hello World!").id.should == "Hello World!"
15
+ end
16
+ end
17
+
18
+ describe "#add_location" do
19
+ it "should add some locations" do
20
+ @message.add_location("hello.rb", 10)
21
+ @message.add_location("message.rb", 5)
22
+ @message.locations.should == Set.new([["hello.rb", 10], ["message.rb", 5]])
23
+ end
24
+ end
25
+
26
+ describe "#add_comment" do
27
+ it "should add some comments" do
28
+ @message.add_comment("YARD.title")
29
+ @message.add_comment("Hello#message")
30
+ @message.comments.should == Set.new(["YARD.title", "Hello#message"])
31
+ end
32
+ end
33
+
34
+ describe "#==" do
35
+ it "should return true for same value messages" do
36
+ locations = [["hello.rb", 10], ["message.rb", 5]]
37
+ comments = ["YARD.title", "Hello#message"]
38
+
39
+ other_message = message(@message.id)
40
+ locations.each do |path, line|
41
+ @message.add_location(path, line)
42
+ other_message.add_location(path, line)
43
+ end
44
+ comments.each do |comment|
45
+ @message.add_comment(comment)
46
+ other_message.add_comment(comment)
47
+ end
48
+
49
+ @message.should == other_message
50
+ end
51
+ end
52
+ end