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,335 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::Docstring do
4
+ before { YARD::Registry.clear }
5
+
6
+ describe '#initialize' do
7
+ it "should handle docstrings with empty newlines" do
8
+ Docstring.new("\n\n").should == ""
9
+ end
10
+ end
11
+
12
+ describe '#+' do
13
+ it "should add another Docstring" do
14
+ d = Docstring.new("FOO") + Docstring.new("BAR")
15
+ d.should == "FOO\nBAR"
16
+ end
17
+
18
+ it "should copy over tags" do
19
+ d1 = Docstring.new("FOO\n@api private\n")
20
+ d2 = Docstring.new("BAR\n@param foo descr")
21
+ d = (d1 + d2)
22
+ d.should have_tag(:api)
23
+ d.should have_tag(:param)
24
+ end
25
+
26
+ it "should add a String" do
27
+ d = Docstring.new("FOO") + "BAR"
28
+ d.should == "FOOBAR"
29
+ end
30
+ end
31
+
32
+ describe '#line' do
33
+ it "should return nil if #line_range is not set" do
34
+ Docstring.new('foo').line.should be_nil
35
+ end
36
+
37
+ it "should return line_range.first if #line_range is set" do
38
+ doc = Docstring.new('foo')
39
+ doc.line_range = (1..10)
40
+ doc.line.should == doc.line_range.first
41
+ end
42
+ end
43
+
44
+ describe '#summary' do
45
+ it "should handle empty docstrings" do
46
+ o1 = Docstring.new
47
+ o1.summary.should == ""
48
+ end
49
+
50
+ it "should handle multiple calls" do
51
+ o1 = Docstring.new("Hello. world")
52
+ 5.times { o1.summary.should == "Hello." }
53
+ end
54
+
55
+ it "should strip HTML before summarizing" do
56
+ doc = Docstring.new("<p>Hello <b>world</b></p>.")
57
+ doc.summary.should == 'Hello world.'
58
+ end
59
+
60
+ it "should strip newlines in first paragraph before summarizing" do
61
+ doc = Docstring.new("Foo\n<code>==</code> bar.")
62
+ doc.summary.should == 'Foo == bar.'
63
+ end
64
+
65
+ it "should return the first sentence" do
66
+ o = Docstring.new("DOCSTRING. Another sentence")
67
+ o.summary.should == "DOCSTRING."
68
+ end
69
+
70
+ it "should return the first paragraph" do
71
+ o = Docstring.new("DOCSTRING, and other stuff\n\nAnother sentence.")
72
+ o.summary.should == "DOCSTRING, and other stuff."
73
+ end
74
+
75
+ it "should return proper summary when docstring is changed" do
76
+ o = Docstring.new "DOCSTRING, and other stuff\n\nAnother sentence."
77
+ o.summary.should == "DOCSTRING, and other stuff."
78
+ o = Docstring.new "DOCSTRING."
79
+ o.summary.should == "DOCSTRING."
80
+ end
81
+
82
+ it "should not double the ending period" do
83
+ o = Docstring.new("Returns a list of tags specified by +name+ or all tags if +name+ is not specified.\n\nTest")
84
+ o.summary.should == "Returns a list of tags specified by +name+ or all tags if +name+ is not specified."
85
+
86
+ doc = Docstring.new(<<-eof)
87
+
88
+ Returns a list of tags specified by +name+ or all tags if +name+ is not specified.
89
+
90
+ @param name the tag name to return data for, or nil for all tags
91
+ @return [Array<Tags::Tag>] the list of tags by the specified tag name
92
+ eof
93
+ doc.summary.should == "Returns a list of tags specified by +name+ or all tags if +name+ is not specified."
94
+ end
95
+
96
+ it "should not attach period if entire summary is include" do
97
+ YARD.parse_string "# docstring\ndef foo; end"
98
+ Docstring.new("{include:#foo}").summary.should == '{include:#foo}'
99
+ Registry.clear
100
+ end
101
+
102
+ it "should handle references embedded in summary" do
103
+ Docstring.new("Aliasing {Test.test}. Done.").summary.should == "Aliasing {Test.test}."
104
+ end
105
+
106
+ it "should only end first sentence when outside parentheses" do
107
+ Docstring.new("Hello (the best.) world. Foo bar.").summary.should == "Hello (the best.) world."
108
+ Docstring.new("A[b.]c.").summary.should == "A[b.]c."
109
+ end
110
+
111
+ it "should only see '.' as period if whitespace (or eof) follows" do
112
+ Docstring.new("hello 1.5 times.").summary.should == "hello 1.5 times."
113
+ Docstring.new("hello... me").summary.should == "hello..."
114
+ Docstring.new("hello.").summary.should == "hello."
115
+ end
116
+ end
117
+
118
+ describe '#ref_tags' do
119
+ it "should parse reference tag into ref_tags" do
120
+ doc = Docstring.new("@return (see Foo#bar)")
121
+ doc.ref_tags.size.should == 1
122
+ doc.ref_tags.first.owner.should == P("Foo#bar")
123
+ doc.ref_tags.first.tag_name.should == "return"
124
+ doc.ref_tags.first.name.should be_nil
125
+ end
126
+
127
+ it "should parse named reference tag into ref_tags" do
128
+ doc = Docstring.new("@param blah \n (see Foo#bar )")
129
+ doc.ref_tags.size.should == 1
130
+ doc.ref_tags.first.owner.should == P("Foo#bar")
131
+ doc.ref_tags.first.tag_name.should == "param"
132
+ doc.ref_tags.first.name.should == "blah"
133
+ end
134
+
135
+ it "should fail to parse named reference tag into ref_tags" do
136
+ doc = Docstring.new("@param blah THIS_BREAKS_REFTAG (see Foo#bar)")
137
+ doc.ref_tags.size.should == 0
138
+ end
139
+
140
+ it "should return all valid reference tags along with #tags" do
141
+ o = CodeObjects::MethodObject.new(:root, 'Foo#bar')
142
+ o.docstring.add_tag Tags::Tag.new('return', 'testing')
143
+ doc = Docstring.new("@return (see Foo#bar)")
144
+ tags = doc.tags
145
+ tags.size.should == 1
146
+ tags.first.text.should == 'testing'
147
+ tags.first.should be_kind_of(Tags::RefTag)
148
+ tags.first.owner.should == o
149
+ end
150
+
151
+ it "should return all valid named reference tags along with #tags(name)" do
152
+ o = CodeObjects::MethodObject.new(:root, 'Foo#bar')
153
+ o.docstring.add_tag Tags::Tag.new('param', 'testing', nil, '*args')
154
+ o.docstring.add_tag Tags::Tag.new('param', 'NOTtesting', nil, 'notargs')
155
+ doc = Docstring.new("@param *args (see Foo#bar)")
156
+ tags = doc.tags('param')
157
+ tags.size.should == 1
158
+ tags.first.text.should == 'testing'
159
+ tags.first.should be_kind_of(Tags::RefTag)
160
+ tags.first.owner.should == o
161
+ end
162
+
163
+ it "should ignore invalid reference tags" do
164
+ doc = Docstring.new("@param *args (see INVALID::TAG#tag)")
165
+ tags = doc.tags('param')
166
+ tags.size.should == 0
167
+ end
168
+
169
+ it "resolves references to methods in the same class with #methname" do
170
+ klass = CodeObjects::ClassObject.new(:root, "Foo")
171
+ o = CodeObjects::MethodObject.new(klass, "bar")
172
+ ref = CodeObjects::MethodObject.new(klass, "baz")
173
+ o.docstring.add_tag Tags::Tag.new('param', 'testing', nil, 'arg1')
174
+ ref.docstring = "@param (see #bar)"
175
+
176
+ tags = ref.docstring.tags("param")
177
+ tags.size.should == 1
178
+ tags.first.text.should == "testing"
179
+ tags.first.should be_kind_of(Tags::RefTag)
180
+ tags.first.owner.should == o
181
+ end
182
+ end
183
+
184
+ describe '#empty?/#blank?' do
185
+ before(:all) do
186
+ Tags::Library.define_tag "Invisible", :invisible_tag
187
+ end
188
+
189
+ it "should be blank and empty if it has no content and no tags" do
190
+ Docstring.new.should be_blank
191
+ Docstring.new.should be_empty
192
+ end
193
+
194
+ it "shouldn't be empty or blank if it has content" do
195
+ d = Docstring.new("foo bar")
196
+ d.should_not be_empty
197
+ d.should_not be_blank
198
+ end
199
+
200
+ it "should be empty but not blank if it has tags" do
201
+ d = Docstring.new("@param foo")
202
+ d.should be_empty
203
+ d.should_not be_blank
204
+ end
205
+
206
+ it "should be empty but not blank if it has ref tags" do
207
+ o = CodeObjects::MethodObject.new(:root, 'Foo#bar')
208
+ o.docstring.add_tag Tags::Tag.new('return', 'testing')
209
+ d = Docstring.new("@return (see Foo#bar)")
210
+ d.should be_empty
211
+ d.should_not be_blank
212
+ end
213
+
214
+ it "should be blank if it has no visible tags" do
215
+ d = Docstring.new("@invisible_tag value")
216
+ d.should be_blank
217
+ end
218
+
219
+ it "should not be blank if it has invisible tags and only_visible_tags = false" do
220
+ d = Docstring.new("@invisible_tag value")
221
+ d.add_tag Tags::Tag.new('invisible_tag', nil, nil)
222
+ d.blank?(false).should == false
223
+ end
224
+ end
225
+
226
+ describe '#delete_tags' do
227
+ it "should delete tags by a given tag name" do
228
+ doc = Docstring.new("@param name x\n@param name2 y\n@return foo")
229
+ doc.delete_tags(:param)
230
+ doc.tags.size.should == 1
231
+ end
232
+ end
233
+
234
+ describe '#delete_tag_if' do
235
+ it "should delete tags for a given block" do
236
+ doc = Docstring.new("@param name x\n@param name2 y\n@return foo")
237
+ doc.delete_tag_if {|t| t.name == 'name2' }
238
+ doc.tags.size.should == 2
239
+ end
240
+ end
241
+
242
+ describe '#to_raw' do
243
+ it "should return a clean representation of tags" do
244
+ doc = Docstring.new("Hello world\n@return [String, X] foobar\n@param name<Array> the name\nBYE!")
245
+ doc.to_raw.should == "Hello world\nBYE!\n@param [Array] name\n the name\n@return [String, X] foobar"
246
+ end
247
+
248
+ it "should handle tags with newlines and indentation" do
249
+ doc = Docstring.new("@example TITLE\n the \n example\n @foo\n@param [X] name\n the name")
250
+ doc.to_raw.should == "@example TITLE\n the \n example\n @foo\n@param [X] name\n the name"
251
+ end
252
+
253
+ it "should handle deleted tags" do
254
+ doc = Docstring.new("@example TITLE\n the \n example\n @foo\n@param [X] name\n the name")
255
+ doc.delete_tags(:param)
256
+ doc.to_raw.should == "@example TITLE\n the \n example\n @foo"
257
+ end
258
+
259
+ it "should handle added tags" do
260
+ doc = Docstring.new("@example TITLE\n the \n example\n @foo")
261
+ doc.add_tag(Tags::Tag.new('foo', 'foo'))
262
+ doc.to_raw.should == "@example TITLE\n the \n example\n @foo\n@foo foo"
263
+ end
264
+
265
+ it "should be equal to .all if not modified" do
266
+ doc = Docstring.new("123\n@param")
267
+ doc.to_raw.should == doc.all
268
+ end
269
+
270
+ # @bug gh-563
271
+ it "should handle full @option tags" do
272
+ doc = Docstring.new("@option foo [String] bar (nil) baz")
273
+ doc.to_raw.should == "@option foo [String] bar (nil) baz"
274
+ end
275
+
276
+ # @bug gh-563
277
+ it "should handle simple @option tags" do
278
+ doc = Docstring.new("@option foo :key bar")
279
+ doc.to_raw.should == "@option foo :key bar"
280
+ end
281
+ end
282
+
283
+ describe '#dup' do
284
+ it "should duplicate docstring text" do
285
+ doc = Docstring.new("foo")
286
+ doc.dup.should == doc
287
+ doc.dup.all.should == doc
288
+ end
289
+
290
+ it "should duplicate tags to new list" do
291
+ doc = Docstring.new("@param x\n@return y")
292
+ doc2 = doc.dup
293
+ doc2.delete_tags(:param)
294
+ doc.tags.size.should == 2
295
+ doc2.tags.size.should == 1
296
+ end
297
+
298
+ it "should preserve summary" do
299
+ doc = Docstring.new("foo. bar")
300
+ doc.dup.summary.should == doc.summary
301
+ end
302
+
303
+ it "should preserve hash_flag" do
304
+ doc = Docstring.new
305
+ doc.hash_flag = 'foo'
306
+ doc.dup.hash_flag.should == doc.hash_flag
307
+ end
308
+
309
+ it "should preserve line_range" do
310
+ doc = Docstring.new
311
+ doc.line_range = (1..2)
312
+ doc.dup.line_range.should == doc.line_range
313
+ end
314
+ end
315
+
316
+ describe 'reference docstrings' do
317
+ it 'allows for construction of docstring with ref object' do
318
+ YARD.parse_string <<-eof
319
+ class A
320
+ # Docstring
321
+ # @return [Boolean]
322
+ def a; end
323
+ # (see #a)
324
+ def b; end
325
+ end
326
+ eof
327
+
328
+ object = YARD::Registry.at('A#b')
329
+ object.docstring.should == 'Docstring'
330
+ object.tags.map {|x| x.tag_name }.should == ['return']
331
+
332
+ YARD::Registry.clear
333
+ end
334
+ end
335
+ end
@@ -0,0 +1,80 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}AliasHandler" do
4
+ before(:all) { parse_file :alias_handler_001, __FILE__ }
5
+
6
+ it "should throw alias into namespace object list" do
7
+ P(:A).aliases[P("A#b")].should == :a
8
+ end
9
+
10
+ ['c', 'd?', '[]', '[]=', '-@', '%', '*'].each do |a|
11
+ it "should handle the Ruby 'alias' keyword syntax for method ##{a}" do
12
+ P('A#' + a).should be_instance_of(CodeObjects::MethodObject)
13
+ end
14
+ end
15
+
16
+ it "should handle keywords as the alias name" do
17
+ P('A#for').should be_instance_of(CodeObjects::MethodObject)
18
+ end
19
+
20
+ it "should allow ConstantNames to be specified as aliases" do
21
+ P('A#ConstantName').should be_instance_of(CodeObjects::MethodObject)
22
+ end
23
+
24
+ it "should create a new method object for the alias" do
25
+ P("A#b").should be_instance_of(CodeObjects::MethodObject)
26
+ end
27
+
28
+ it "should pull the method into the current class if it's from another one" do
29
+ P(:B).aliases[P("B#q")].should == :x
30
+ P(:B).aliases[P("B#r?")].should == :x
31
+ end
32
+
33
+ it "should gracefully fail to pull a method in if the original method cannot be found" do
34
+ P(:B).aliases[P("B#s")].should == :to_s
35
+ end
36
+
37
+ it "should allow complex Ruby expressions after the alias parameters" do
38
+ P(:B).aliases[P("B#t")].should == :inspect
39
+ end
40
+
41
+ it "should show up in #is_alias? for method" do
42
+ P("B#t").is_alias?.should == true
43
+ P('B#r?').is_alias?.should == true
44
+ end
45
+
46
+ it "should allow operators and keywords to be specified as symbols" do
47
+ P('B#<<').should be_instance_of(CodeObjects::MethodObject)
48
+ P('B#for').should be_instance_of(CodeObjects::MethodObject)
49
+ end
50
+
51
+ it "should handle keywords in alias names" do
52
+ P('B#do').is_alias?.should == true
53
+ P('B#x2').is_alias?.should == true
54
+ P(:B).aliases[P('B#do')].should == :x
55
+ P(:B).aliases[P('B#x2')].should == :do
56
+ end
57
+
58
+ it "should handle quoted symbols" do
59
+ foo = Registry.at('A#foo')
60
+ foo.should_not be_nil
61
+ foo.should be_is_alias
62
+ Registry.at('A').aliases[foo].should == :a
63
+ end
64
+
65
+ it "should prepend aliases object's docstring to comments" do
66
+ Registry.at('D#a').tag(:return).types.should == ['Numeric']
67
+ Registry.at('D#b').tag(:return).types.should == ['String']
68
+ Registry.at('D#b').docstring.should == "Foo bar"
69
+ end
70
+
71
+ it "should raise an UndocumentableError if only one parameter is passed" do
72
+ undoc_error "alias_method :q"
73
+ end
74
+
75
+ it "should raise an UndocumentableError if the parameter is not a Symbol or String" do
76
+ undoc_error "alias_method CONST, Something"
77
+ undoc_error "alias_method variable, ClassName"
78
+ undoc_error "alias_method variable, other_variable"
79
+ end
80
+ end
@@ -0,0 +1,94 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}AttributeHandler" do
4
+ before(:all) { parse_file :attribute_handler_001, __FILE__ }
5
+
6
+ def read_write(namespace, name, read, write, scope = :instance)
7
+ rname, wname = namespace.to_s+"#"+name.to_s, namespace.to_s+"#"+name.to_s+"="
8
+ if read
9
+ Registry.at(rname).should be_instance_of(CodeObjects::MethodObject)
10
+ else
11
+ Registry.at(rname).should == nil
12
+ end
13
+
14
+ if write
15
+ Registry.at(wname).should be_kind_of(CodeObjects::MethodObject)
16
+ else
17
+ Registry.at(wname).should == nil
18
+ end
19
+
20
+ attrs = Registry.at(namespace).attributes[scope][name]
21
+ attrs[:read].should == (read ? Registry.at(rname) : nil)
22
+ attrs[:write].should == (write ? Registry.at(wname) : nil)
23
+ end
24
+
25
+ it "should parse attributes inside modules too" do
26
+ Registry.at("A#x=").should_not == nil
27
+ end
28
+
29
+ it "should parse 'attr'" do
30
+ read_write(:B, :a, true, true)
31
+ read_write(:B, :a2, true, false)
32
+ read_write(:B, "a3", true, false)
33
+ end
34
+
35
+ it "should parse 'attr_reader'" do
36
+ read_write(:B, :b, true, false)
37
+ end
38
+
39
+ it "should parse 'attr_writer'" do
40
+ read_write(:B, :e, false, true)
41
+ end
42
+
43
+ it "should parse 'attr_accessor'" do
44
+ read_write(:B, :f, true, true)
45
+ end
46
+
47
+ it "should parse a list of attributes" do
48
+ read_write(:B, :b, true, false)
49
+ read_write(:B, :c, true, false)
50
+ read_write(:B, :d, true, false)
51
+ end
52
+
53
+ it "should have a default docstring if one is not supplied" do
54
+ Registry.at("B#f=").docstring.should_not be_empty
55
+ end
56
+
57
+ it "should set the correct docstring if one is supplied" do
58
+ Registry.at("B#b").docstring.should == "Docstring"
59
+ Registry.at("B#c").docstring.should == "Docstring"
60
+ Registry.at("B#d").docstring.should == "Docstring"
61
+ end
62
+
63
+ it "should be able to differentiate between class and instance attributes" do
64
+ P('B').class_attributes[:z][:read].scope.should == :class
65
+ P('B').instance_attributes[:z][:read].scope.should == :instance
66
+ end
67
+
68
+ it "should respond true in method's #is_attribute?" do
69
+ P('B#a').is_attribute?.should == true
70
+ P('B#a=').is_attribute?.should == true
71
+ end
72
+
73
+ it "should not return true for #is_explicit? in created methods" do
74
+ Registry.at(:B).meths.each do |meth|
75
+ meth.is_explicit?.should == false
76
+ end
77
+ end
78
+
79
+ it "should handle attr call with no arguments" do
80
+ lambda { StubbedSourceParser.parse_string "attr" }.should_not raise_error
81
+ end
82
+
83
+ it "should add existing reader method as part of attr_writer combo" do
84
+ Registry.at('C#foo=').attr_info[:read].should == Registry.at('C#foo')
85
+ end
86
+
87
+ it "should add existing writer method as part of attr_reader combo" do
88
+ Registry.at('C#foo').attr_info[:write].should == Registry.at('C#foo=')
89
+ end
90
+
91
+ it "should maintain visibility for attr_reader" do
92
+ Registry.at('D#parser').visibility.should == :protected
93
+ end
94
+ end