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,409 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::Templates::Template do
4
+ def template(path)
5
+ YARD::Templates::Engine.template!(path, '/full/path/' + path.to_s)
6
+ end
7
+
8
+ before :each do
9
+ YARD::Templates::ErbCache.clear!
10
+ end
11
+
12
+ describe '.include_parent' do
13
+ it "should not include parent directory if parent directory is a template root path" do
14
+ mod = template('q')
15
+ mod.should_not include(template(''))
16
+ end
17
+
18
+ it "should include overridden parent directory" do
19
+ Engine.stub!(:template_paths).and_return(['/foo', '/bar'])
20
+ File.should_receive(:directory?).with('/foo/a/b').and_return(true)
21
+ File.should_receive(:directory?).with('/bar/a/b').and_return(false)
22
+ File.should_receive(:directory?).with('/foo/a').at_least(1).times.and_return(true)
23
+ File.should_receive(:directory?).with('/bar/a').at_least(1).times.and_return(true)
24
+ ancestors = Engine.template('a/b').ancestors.map {|c| c.class_name }
25
+ ancestors[0, 3].should == %w( Template__foo_a_b Template__bar_a Template__foo_a )
26
+ end
27
+
28
+ it "should include parent directory template if exists" do
29
+ mod1 = template('x')
30
+ mod2 = template('x/y')
31
+ mod2.should include(mod1)
32
+ end
33
+ end
34
+
35
+ describe '.full_paths' do
36
+ it "should list full_path" do
37
+ mod = template(:a)
38
+ mod.full_paths.should == ['/full/path/a']
39
+ end
40
+
41
+ it "should list paths of included modules" do
42
+ mod = template(:a)
43
+ mod.send(:include, template(:b))
44
+ mod.full_paths.should == ['/full/path/a', '/full/path/b']
45
+ end
46
+
47
+ it "should list paths from modules of included modules" do
48
+ mod = template(:c)
49
+ mod.send(:include, template(:d))
50
+ mod.send(:include, template(:a))
51
+ mod.full_paths.should == ['c', 'a', 'b', 'd'].map {|o| '/full/path/' + o }
52
+ end
53
+
54
+ it "should only list full paths of modules that respond to full_paths" do
55
+ mod = template(:d)
56
+ mod.send(:include, Enumerable)
57
+ mod.full_paths.should == ['/full/path/d']
58
+ end
59
+ end
60
+
61
+ describe '.load_setup_rb' do
62
+ it "should load setup.rb file for module" do
63
+ File.should_receive(:file?).with('/full/path/e/setup.rb').and_return(true)
64
+ File.should_receive(:read).with('/full/path/e/setup.rb').and_return('def success; end')
65
+ template(:e).new.should respond_to(:success)
66
+ end
67
+ end
68
+
69
+ describe '.T' do
70
+ it "should load template from absolute path" do
71
+ mod = template(:a)
72
+ Engine.should_receive(:template).with('other')
73
+ mod.T('other')
74
+ end
75
+ end
76
+
77
+ describe '.find_file' do
78
+ it "should find file in module's full_path" do
79
+ File.should_receive(:file?).with('/full/path/a/basename').and_return(false)
80
+ File.should_receive(:file?).with('/full/path/b/basename').and_return(true)
81
+ template(:a).find_file('basename').should == '/full/path/b/basename'
82
+ end
83
+
84
+ it "should return nil if no file is found" do
85
+ File.should_receive(:file?).with('/full/path/a/basename').and_return(false)
86
+ File.should_receive(:file?).with('/full/path/b/basename').and_return(false)
87
+ template(:a).find_file('basename').should be_nil
88
+ end
89
+ end
90
+
91
+ describe '.find_nth_file' do
92
+ it "should find 2nd existing file in template paths" do
93
+ File.should_receive(:file?).with('/full/path/a/basename').and_return(true)
94
+ File.should_receive(:file?).with('/full/path/b/basename').and_return(true)
95
+ template(:a).find_nth_file('basename', 2).should == '/full/path/b/basename'
96
+ end
97
+
98
+ it "should return nil if no file is found" do
99
+ File.should_receive(:file?).with('/full/path/a/basename').and_return(true)
100
+ File.should_receive(:file?).with('/full/path/b/basename').and_return(true)
101
+ template(:a).find_nth_file('basename', 3).should be_nil
102
+ end
103
+ end
104
+
105
+ describe '.extra_includes' do
106
+ it "should be included when a module is initialized" do
107
+ module MyModule; end
108
+ Template.extra_includes << MyModule
109
+ template(:e).new.should be_kind_of(MyModule)
110
+ end
111
+
112
+ it "should support lambdas in list" do
113
+ module MyModule2; end
114
+ Template.extra_includes << lambda {|opts| MyModule2 if opts.format == :html }
115
+ template(:f).new(:format => :html).should be_kind_of(MyModule2)
116
+ metaclass = (class << template(:g).new(:format => :text); self end)
117
+ metaclass.ancestors.should_not include(MyModule2)
118
+ end
119
+ end
120
+
121
+ describe '.is_a?' do
122
+ it "should be kind of Template" do
123
+ template(:e).is_a?(Template).should == true
124
+ end
125
+ end
126
+
127
+ describe '#T' do
128
+ it "should delegate to class method" do
129
+ template(:e).should_receive(:T).with('test')
130
+ template(:e).new.T('test')
131
+ end
132
+ end
133
+
134
+ describe '#init' do
135
+ it "should be called during initialization" do
136
+ module YARD::Templates::Engine::Template__full_path_e
137
+ def init; sections 1, 2, 3 end
138
+ end
139
+ template(:e).new.sections.should == Section.new(nil, 1, 2, 3)
140
+ end
141
+ end
142
+
143
+ describe '#file' do
144
+ it "should read the file if it exists" do
145
+ File.should_receive(:file?).with('/full/path/e/abc').and_return(true)
146
+ IO.should_receive(:read).with('/full/path/e/abc').and_return('hello world')
147
+ template(:e).new.file('abc').should == 'hello world'
148
+ end
149
+
150
+ it "should raise ArgumentError if the file does not exist" do
151
+ File.should_receive(:file?).with('/full/path/e/abc').and_return(false)
152
+ lambda { template(:e).new.file('abc') }.should raise_error(ArgumentError)
153
+ end
154
+
155
+ it "should replace {{{__super__}}} with inherited template contents if allow_inherited=true" do
156
+ File.should_receive(:file?).with('/full/path/a/abc').twice.and_return(true)
157
+ File.should_receive(:file?).with('/full/path/b/abc').and_return(true)
158
+ IO.should_receive(:read).with('/full/path/a/abc').and_return('foo {{{__super__}}}')
159
+ IO.should_receive(:read).with('/full/path/b/abc').and_return('bar')
160
+ template(:a).new.file('abc', true).should == "foo bar"
161
+ end
162
+
163
+ it "should not replace {{{__super__}}} with inherited template contents if allow_inherited=false" do
164
+ File.should_receive(:file?).with('/full/path/a/abc').and_return(true)
165
+ IO.should_receive(:read).with('/full/path/a/abc').and_return('foo {{{__super__}}}')
166
+ template(:a).new.file('abc').should == "foo {{{__super__}}}"
167
+ end
168
+ end
169
+
170
+ describe '#superb' do
171
+ it "should return the inherited erb template contents" do
172
+ File.should_receive(:file?).with('/full/path/a/test.erb').and_return(true)
173
+ File.should_receive(:file?).with('/full/path/b/test.erb').and_return(true)
174
+ IO.should_receive(:read).with('/full/path/b/test.erb').and_return('bar')
175
+ template = template(:a).new
176
+ template.section = :test
177
+ template.superb.should == "bar"
178
+ end
179
+
180
+ it "should work inside an erb template" do
181
+ File.should_receive(:file?).with('/full/path/a/test.erb').twice.and_return(true)
182
+ File.should_receive(:file?).with('/full/path/b/test.erb').and_return(true)
183
+ IO.should_receive(:read).with('/full/path/a/test.erb').and_return('foo<%= superb %>!')
184
+ IO.should_receive(:read).with('/full/path/b/test.erb').and_return('bar')
185
+ template = template(:a).new
186
+ template.section = :test
187
+ template.erb(:test).should == "foobar!"
188
+ end
189
+ end
190
+
191
+ describe '#sections' do
192
+ it "should allow sections to be set if arguments are provided" do
193
+ mod = template(:e).new
194
+ mod.sections 1, 2, [3]
195
+ mod.sections.should == Section.new(nil, 1, 2, [3])
196
+ end
197
+ end
198
+
199
+ describe '#run' do
200
+ it "should render all sections" do
201
+ mod = template(:e).new
202
+ mod.should_receive(:render_section).with(Section.new(:a)).and_return('a')
203
+ mod.should_receive(:render_section).with(Section.new(:b)).and_return('b')
204
+ mod.should_receive(:render_section).with(Section.new(:c)).and_return('c')
205
+ mod.sections :a, :b, :c
206
+ mod.run.should == 'abc'
207
+ end
208
+
209
+ it "should render all sections with options" do
210
+ mod = template(:e).new
211
+ mod.should_receive(:render_section).with(Section.new(:a)).and_return('a')
212
+ mod.should_receive(:add_options).with(:a => 1).and_yield
213
+ mod.sections :a
214
+ mod.run(:a => 1).should == 'a'
215
+ end
216
+
217
+ it "should run section list if provided" do
218
+ mod = template(:e).new
219
+ mod.should_receive(:render_section).with(Section.new(:q))
220
+ mod.should_receive(:render_section).with(Section.new(:x))
221
+ mod.run({}, [:q, :x])
222
+ end
223
+
224
+ it "should accept a nil section as empty string" do
225
+ mod = template(:e).new
226
+ mod.should_receive(:render_section).with(Section.new(:a))
227
+ mod.sections :a
228
+ mod.run.should == ""
229
+ end
230
+ end
231
+
232
+ describe '#add_options' do
233
+ it "should set instance variables in addition to options" do
234
+ mod = template(:f).new
235
+ mod.send(:add_options, {:a => 1, :b => 2})
236
+ mod.options.should == {:a => 1, :b => 2}
237
+ mod.instance_variable_get("@a").should == 1
238
+ mod.instance_variable_get("@b").should == 2
239
+ end
240
+
241
+ it "should set instance variables and options only for the block" do
242
+ mod = template(:f).new
243
+ mod.send(:add_options, {:a => 100, :b => 200}) do
244
+ mod.options.should == {:a => 100, :b => 200}
245
+ end
246
+ mod.options.should_not == {:a => 100, :b => 200}
247
+ end
248
+ end
249
+
250
+ describe '#render_section' do
251
+ it "should call method if method exists by section name as Symbol" do
252
+ mod = template(:f).new
253
+ mod.should_receive(:respond_to?).with(:a).and_return(true)
254
+ mod.should_receive(:respond_to?).with('a').and_return(true)
255
+ mod.should_receive(:send).with(:a).and_return('a')
256
+ mod.should_receive(:send).with('a').and_return('a')
257
+ mod.run({}, [:a, 'a']).should == 'aa'
258
+ end
259
+
260
+ it "should call erb if no method exists by section name" do
261
+ mod = template(:f).new
262
+ mod.should_receive(:respond_to?).with(:a).and_return(false)
263
+ mod.should_receive(:respond_to?).with('a').and_return(false)
264
+ mod.should_receive(:erb).with(:a).and_return('a')
265
+ mod.should_receive(:erb).with('a').and_return('a')
266
+ mod.run({}, [:a, 'a']).should == 'aa'
267
+ end
268
+
269
+ it "should run a template if section is one" do
270
+ mod2 = template(:g)
271
+ mod2.should_receive(:run)
272
+ mod = template(:f).new
273
+ mod.sections mod2
274
+ mod.run
275
+ end
276
+
277
+ it "should run a template instance if section is one" do
278
+ mod2 = template(:g).new
279
+ mod2.should_receive(:run)
280
+ mod = template(:f).new
281
+ mod.sections mod2
282
+ mod.run
283
+ end
284
+ end
285
+
286
+ describe '#yield' do
287
+ it "should yield a subsection" do
288
+ mod = template(:e).new
289
+ mod.sections :a, [:b, :c]
290
+ class << mod
291
+ def a; "(" + yield + ")" end
292
+ def b; "b" end
293
+ def c; "c" end
294
+ end
295
+
296
+ mod.run.should == "(b)"
297
+ end
298
+
299
+ it "should yield a subsection within a yielded subsection" do
300
+ mod = template(:e).new
301
+ mod.sections :a, [:b, [:c]]
302
+ class << mod
303
+ def a; "(" + yield + ")" end
304
+ def b; yield end
305
+ def c; "c" end
306
+ end
307
+
308
+ mod.run.should == "(c)"
309
+ end
310
+
311
+ it "should support arbitrary nesting" do
312
+ mod = template(:e).new
313
+ mod.sections :a, [:b, [:c, [:d, [:e]]]]
314
+ class << mod
315
+ def a; "(" + yield + ")" end
316
+ def b; yield end
317
+ def c; yield end
318
+ def d; yield end
319
+ def e; "e" end
320
+ end
321
+
322
+ mod.run.should == "(e)"
323
+ end
324
+
325
+ it "should yield first two elements if yield is called twice" do
326
+ mod = template(:e).new
327
+ mod.sections :a, [:b, :c, :d]
328
+ class << mod
329
+ def a; "(" + yield + yield + ")" end
330
+ def b; 'b' end
331
+ def c; "c" end
332
+ end
333
+
334
+ mod.run.should == "(bc)"
335
+ end
336
+
337
+ it "should ignore any subsections inside subsection yields" do
338
+ mod = template(:e).new
339
+ mod.sections :a, [:b, [:c], :d]
340
+ class << mod
341
+ def a; "(" + yield + yield + ")" end
342
+ def b; 'b' end
343
+ def d; "d" end
344
+ end
345
+
346
+ mod.run.should == "(bd)"
347
+ end
348
+
349
+ it "should allow extra options passed via yield" do
350
+ mod = template(:e).new
351
+ mod.sections :a, [:b]
352
+ class << mod
353
+ def a; "(" + yield(:x => "a") + ")" end
354
+ def b; options.x + @x end
355
+ end
356
+
357
+ mod.run.should == "(aa)"
358
+ end
359
+ end
360
+
361
+ describe '#yieldall' do
362
+ it "should yield all subsections" do
363
+ mod = template(:e).new
364
+ mod.sections :a, [:b, [:d, [:e]], :c]
365
+ class << mod
366
+ def a; "(" + yieldall + ")" end
367
+ def b; "b" + yieldall end
368
+ def c; "c" end
369
+ def d; 'd' + yieldall end
370
+ def e; 'e' end
371
+ end
372
+
373
+ mod.run.should == "(bdec)"
374
+ end
375
+
376
+ it "should yield options to all subsections" do
377
+ mod = template(:e).new
378
+ mod.sections :a, [:b, :c]
379
+ class << mod
380
+ def a; "(" + yieldall(:x => "2") + ")" end
381
+ def b; @x end
382
+ def c; @x end
383
+ end
384
+ mod.run.should == "(22)"
385
+ end
386
+
387
+ it "should yield all subsections more than once" do
388
+ mod = template(:e).new
389
+ mod.sections :a, [:b]
390
+ class << mod
391
+ def a; "(" + yieldall + yieldall + ")" end
392
+ def b; "b" end
393
+ end
394
+
395
+ mod.run.should == "(bb)"
396
+ end
397
+
398
+ it "should not yield if no yieldall is called" do
399
+ mod = template(:e).new
400
+ mod.sections :a, [:b]
401
+ class << mod
402
+ def a; "()" end
403
+ def b; "b" end
404
+ end
405
+
406
+ mod.run.should == "()"
407
+ end
408
+ end
409
+ end
@@ -0,0 +1,106 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::Verifier do
4
+ describe '#parse_expressions' do
5
+ it "should create #__execute method" do
6
+ v = Verifier.new("expr1")
7
+ v.should respond_to(:__execute)
8
+ end
9
+
10
+ it "should parse @tagname into tag('tagname')" do
11
+ obj = mock(:object)
12
+ obj.should_receive(:tag).with('return')
13
+ Verifier.new('@return').call(obj)
14
+ end
15
+
16
+ it "should parse @@tagname into object.tags('tagname')" do
17
+ obj = mock(:object)
18
+ obj.should_receive(:tags).with('return')
19
+ Verifier.new('@@return').call(obj)
20
+ end
21
+
22
+ it "should allow namespaced tag using @{} syntax" do
23
+ obj = mock(:object)
24
+ obj.should_receive(:tag).with('yard.return')
25
+ Verifier.new('@{yard.return}').call(obj)
26
+ end
27
+
28
+ it "should allow namespaced tags using @{} syntax" do
29
+ obj = mock(:object)
30
+ obj.should_receive(:tags).with('yard.return')
31
+ Verifier.new('@@{yard.return}').call(obj)
32
+ end
33
+
34
+ it "should call methods on tag object" do
35
+ obj = mock(:object)
36
+ obj2 = mock(:tag)
37
+ obj.should_receive(:tag).with('return').and_return obj2
38
+ obj2.should_receive(:foo)
39
+ Verifier.new('@return.foo').call(obj)
40
+ end
41
+
42
+ it "should send any missing methods to object" do
43
+ obj = mock(:object)
44
+ obj.should_receive(:has_tag?).with('return')
45
+ Verifier.new('has_tag?("return")').call(obj)
46
+ end
47
+
48
+ it "should allow multiple expressions" do
49
+ obj = mock(:object)
50
+ obj.should_receive(:tag).with('return').and_return(true)
51
+ obj.should_receive(:tag).with('param').and_return(false)
52
+ Verifier.new('@return', '@param').call(obj).should == false
53
+ end
54
+ end
55
+
56
+ describe '#o' do
57
+ it "should alias object to o" do
58
+ obj = mock(:object)
59
+ obj.should_receive(:a).ordered
60
+ Verifier.new('o.a').call(obj)
61
+ end
62
+ end
63
+
64
+ describe '#call' do
65
+ it "should mock a nonexistent tag so that exceptions are not raised" do
66
+ obj = mock(:object)
67
+ obj.should_receive(:tag).and_return(nil)
68
+ Verifier.new('@return.text').call(obj).should == false
69
+ end
70
+
71
+ it "should not fail if no expressions were added" do
72
+ lambda { Verifier.new.call(nil) }.should_not raise_error
73
+ end
74
+
75
+ it "should always ignore proxy objects and return true" do
76
+ v = Verifier.new('tag(:x)')
77
+ lambda { v.call(P('foo')).should == true }.should_not raise_error
78
+ end
79
+ end
80
+
81
+ describe '#expressions' do
82
+ it "should maintain a list of all unparsed expressions" do
83
+ Verifier.new('@return.text', '@private').expressions.should == ['@return.text', '@private']
84
+ end
85
+ end
86
+
87
+ describe '#expressions=' do
88
+ it "should recompile expressions when attribute is modified" do
89
+ obj = mock(:object)
90
+ obj.should_receive(:tag).with('return')
91
+ v = Verifier.new
92
+ v.expressions = ['@return']
93
+ v.call(obj)
94
+ end
95
+ end
96
+
97
+ describe '#add_expressions' do
98
+ it "should add new expressions and recompile" do
99
+ obj = mock(:object)
100
+ obj.should_receive(:tag).with('return')
101
+ v = Verifier.new
102
+ v.add_expressions '@return'
103
+ v.call(obj)
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,6 @@
1
+ include T('default/module/dot')
2
+
3
+ def init
4
+ super
5
+ sections.push :superklass
6
+ end
@@ -0,0 +1,3 @@
1
+ <% if object.superclass.path != "Object" && object.superclass.path != "BasicObject" %>
2
+ <%= format_path object %> -> <%= format_path object.superclass %>;
3
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <div id="constructor_details" class="method_details_list">
2
+ <h2>Constructor Details</h2>
3
+ <% if @ctor.namespace != object %>
4
+ <p class="notice">This class inherits a constructor from <%= linkify @ctor, @ctor.namespace.path %></p>
5
+ <% else %>
6
+ <%= yieldall :object => @ctor, :index => 0 %>
7
+ <% end %>
8
+ </div>
@@ -0,0 +1 @@
1
+ include T('default/module/html')
@@ -0,0 +1,4 @@
1
+ <div id="subclasses">
2
+ <h2>Direct Known Subclasses</h2>
3
+ <p class="children"><%= @subclasses.map {|name, child| linkify(child, name) }.join(", ") %></p>
4
+ </div>
@@ -0,0 +1,36 @@
1
+ include T('default/module')
2
+
3
+ def init
4
+ super
5
+ sections.place(:subclasses).before(:children)
6
+ sections.place(:constructor_details, [T('method_details')]).before(:methodmissing)
7
+ end
8
+
9
+ def constructor_details
10
+ ctors = object.meths(:inherited => true, :included => true)
11
+ return unless @ctor = ctors.find {|o| o.constructor? }
12
+ return if prune_method_listing([@ctor]).empty?
13
+ erb(:constructor_details)
14
+ end
15
+
16
+ def subclasses
17
+ return if object.path == "Object" # don't show subclasses for Object
18
+ unless globals.subclasses
19
+ globals.subclasses = {}
20
+ list = run_verifier Registry.all(:class)
21
+ list.each do |o|
22
+ (globals.subclasses[o.superclass.path] ||= []) << o if o.superclass
23
+ end
24
+ end
25
+
26
+ @subclasses = globals.subclasses[object.path]
27
+ return if @subclasses.nil? || @subclasses.empty?
28
+ @subclasses = @subclasses.sort_by {|o| o.path }.map do |child|
29
+ name = child.path
30
+ if object.namespace
31
+ name = object.relative_path(child)
32
+ end
33
+ [name, child]
34
+ end
35
+ erb(:subclasses)
36
+ end
@@ -0,0 +1,11 @@
1
+ include T('default/module/text')
2
+
3
+ def init
4
+ super
5
+ sections.place(:subclasses).before(:children)
6
+ sections.delete(:children)
7
+ end
8
+
9
+ def format_object_title(object)
10
+ "Class: #{object.title} < #{object.superclass.title}"
11
+ end
@@ -0,0 +1,5 @@
1
+ Direct Known Subclasses:
2
+ ------------------------
3
+
4
+ <%= indent(wrap(@subclasses.map {|name, child| name }.join(", "))) %>
5
+
@@ -0,0 +1,11 @@
1
+ <%= title_align_right format_object_title(object) %>
2
+
3
+
4
+ <%= object.name %> = <%= object.value.size > 40 ? "\n\n" + indent(object.value) : object.value %>
5
+
6
+
7
+ <%= hr %>
8
+
9
+ <%= yieldall %>
10
+
11
+ <%= hr %>
@@ -0,0 +1,3 @@
1
+ def init
2
+ sections :header, [T('docstring')]
3
+ end
@@ -0,0 +1,4 @@
1
+ <div class="note abstract">
2
+ <strong>This <%= object.type %> is abstract.</strong>
3
+ <%= htmlify_line object.tag(:abstract).text %>
4
+ </div>
@@ -0,0 +1 @@
1
+ <div class="note deprecated"><strong>Deprecated.</strong> <%= htmlify_line object.tag(:deprecated).text %></div>
@@ -0,0 +1,5 @@
1
+ <div class="docstring">
2
+ <div class="discussion">
3
+ <%= yieldall %>
4
+ </div>
5
+ </div>
@@ -0,0 +1,6 @@
1
+ <% object.tags(:note).each do |tag| %>
2
+ <div class="note notetag">
3
+ <strong>Note:</strong>
4
+ <%= htmlify_line tag.text %>
5
+ </div>
6
+ <% end %>
@@ -0,0 +1,4 @@
1
+ <p class="note private">
2
+ <strong>This <%= object.type %> is part of a private API.</strong>
3
+ You should avoid using this <%= object.type %> if possible, as it may be removed or be changed in the future.
4
+ </p>
@@ -0,0 +1 @@
1
+ <p class="note returns_void">This method returns an undefined value.</p>
@@ -0,0 +1 @@
1
+ <%= htmlify(docstring_text) %>
@@ -0,0 +1,6 @@
1
+ <% object.tags(:todo).each do |tag| %>
2
+ <div class="note todo">
3
+ <strong>TODO:</strong>
4
+ <%= htmlify_line tag.text %>
5
+ </div>
6
+ <% end %>