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,66 @@
1
+ module YARD
2
+ module Tags
3
+ class OverloadTag < Tag
4
+ attr_reader :signature, :parameters, :docstring
5
+
6
+ def initialize(tag_name, text)
7
+ super(tag_name, nil)
8
+ parse_tag(text)
9
+ parse_signature
10
+ end
11
+
12
+ def tag(name) docstring.tag(name) end
13
+ def tags(name = nil) docstring.tags(name) end
14
+ def has_tag?(name) docstring.has_tag?(name) end
15
+
16
+ def object=(value)
17
+ super(value)
18
+ docstring.object = value
19
+ docstring.tags.each {|tag| tag.object = value }
20
+ end
21
+
22
+ def name(prefix = false)
23
+ return @name unless prefix
24
+ object.scope == :class ? @name.to_s : "#{object.send(:sep)}#{@name}"
25
+ end
26
+
27
+ def method_missing(*args, &block)
28
+ object.send(*args, &block)
29
+ end
30
+
31
+ def type
32
+ object.type
33
+ end
34
+
35
+ def is_a?(other)
36
+ object.is_a?(other) || self.class >= other.class || false
37
+ end
38
+ alias kind_of? is_a?
39
+
40
+ private
41
+
42
+ def parse_tag(text)
43
+ @signature, text = *text.split(/\r?\n/, 2)
44
+ @signature.strip!
45
+ text ||= ""
46
+ numspaces = text[/\A(\s*)/, 1].length
47
+ text.gsub!(/^[ \t]{#{numspaces}}/, '')
48
+ text.strip!
49
+ @docstring = Docstring.new(text, nil)
50
+ end
51
+
52
+ def parse_signature
53
+ if signature =~ /^(?:def\s)?\s*(#{CodeObjects::METHODMATCH})(?:(?:\s+|\s*\()(.*)(?:\)\s*$)?)?/m
54
+ meth, args = $1, $2
55
+ meth.gsub!(/\s+/,'')
56
+ # FIXME refactor this code to not make use of the Handlers::Base class (tokval_list should be moved)
57
+ toks = YARD::Parser::Ruby::Legacy::TokenList.new(args)
58
+ args = YARD::Handlers::Ruby::Legacy::Base.new(nil, nil).send(:tokval_list, toks, :all)
59
+ args.map! {|a| k, v = *a.split('=', 2); [k.strip.to_s, (v ? v.strip : nil)] } if args
60
+ @name = meth.to_sym
61
+ @parameters = args
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,7 @@
1
+ module YARD
2
+ module Tags
3
+ module RefTag
4
+ attr_accessor :owner
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,27 @@
1
+ module YARD
2
+ module Tags
3
+ class RefTagList
4
+ attr_accessor :owner, :tag_name, :name
5
+
6
+ def initialize(tag_name, owner, name = nil)
7
+ @owner = CodeObjects::Proxy === owner ? owner : P(owner)
8
+ @tag_name = tag_name.to_s
9
+ @name = name
10
+ end
11
+
12
+ def tags
13
+ if owner.is_a?(CodeObjects::Base)
14
+ o = owner.tags(tag_name)
15
+ o = o.select {|t| t.name.to_s == name.to_s } if name
16
+ o.each do |t|
17
+ t.extend(RefTag)
18
+ t.owner = owner
19
+ end
20
+ o
21
+ else
22
+ []
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,57 @@
1
+ module YARD
2
+ module Tags
3
+ # Represents a metadata tag value (+@tag+). Tags can have any combination of
4
+ # {#types}, {#name} and {#text}, or none of the above.
5
+ #
6
+ # @example Programmatic tag creation
7
+ # # The following docstring syntax:
8
+ # # @param [String, nil] arg an argument
9
+ # #
10
+ # # is equivalent to:
11
+ # Tag.new(:param, 'an argument', ['String', 'nil'], 'arg')
12
+ class Tag
13
+ # @return [String] the name of the tag
14
+ attr_accessor :tag_name
15
+
16
+ # @return [String] the tag text associated with the tag
17
+ # @return [nil] if no tag text is supplied
18
+ attr_accessor :text
19
+
20
+ # @return [Array<String>] a list of types associated with the tag
21
+ # @return [nil] if no types are associated with the tag
22
+ attr_accessor :types
23
+
24
+ # @return [String] a name associated with the tag
25
+ attr_accessor :name
26
+
27
+ # @return [CodeObjects::Base] the associated object
28
+ attr_accessor :object
29
+
30
+ # Creates a new tag object with a tag name and text. Optionally, formally declared types
31
+ # and a key name can be specified.
32
+ #
33
+ # Types are mainly for meta tags that rely on type information, such as +param+, +return+, etc.
34
+ #
35
+ # Key names are for tags that declare meta data for a specific key or name, such as +param+,
36
+ # +raise+, etc.
37
+ #
38
+ # @param [#to_s] tag_name the tag name to create the tag for
39
+ # @param [String] text the descriptive text for this tag
40
+ # @param [Array<String>] types optional type list of formally declared types
41
+ # for the tag
42
+ # @param [String] name optional key name which the tag refers to
43
+ def initialize(tag_name, text, types = nil, name = nil)
44
+ @tag_name, @text, @name, @types = tag_name.to_s, text, name, (types ? [types].flatten.compact : nil)
45
+ end
46
+
47
+ # Convenience method to access the first type specified. This should mainly
48
+ # be used for tags that only specify one type.
49
+ #
50
+ # @return [String] the first of the list of specified types
51
+ # @see #types
52
+ def type
53
+ types.first
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,6 @@
1
+ module YARD
2
+ module Tags
3
+ class TagFormatError < Exception
4
+ end
5
+ end
6
+ end
@@ -0,0 +1,185 @@
1
+ require 'ostruct'
2
+
3
+ module YARD
4
+ module Templates
5
+ # This module manages all creation, handling and rendering of {Template}
6
+ # objects.
7
+ #
8
+ # * To create a template object at a path, use {template}.
9
+ # * To render a template, call {render}.
10
+ # * To register a template path in the lookup paths, call {register_template_path}.
11
+ module Engine
12
+ class << self
13
+ # @return [Array<String>] the list of registered template paths
14
+ attr_accessor :template_paths
15
+
16
+ # Registers a new template path in {template_paths}
17
+ #
18
+ # @param [String] path a new template path
19
+ # @return [void]
20
+ def register_template_path(path)
21
+ template_paths.push path
22
+ end
23
+
24
+ # Creates a template module representing the path. Searches on disk
25
+ # for the first directory named +path+ (joined by '/') within the
26
+ # template paths and builds a template module for. All other matching
27
+ # directories in other template paths will be included in the
28
+ # generated module as mixins (for overriding).
29
+ #
30
+ # @param [Array<String, Symbol>] path a list of path components
31
+ # @raise [ArgumentError] if the path does not exist within one of the
32
+ # {template_paths} on disk.
33
+ # @return [Template] the module representing the template
34
+ def template(*path)
35
+ from_template = nil
36
+ from_template = path.shift if path.first.is_a?(Template)
37
+ path = path.join('/')
38
+ full_paths = find_template_paths(from_template, path)
39
+
40
+ path = File.cleanpath(path).gsub('../', '')
41
+ raise ArgumentError, "No such template for #{path}" if full_paths.empty?
42
+ mod = template!(path, full_paths)
43
+
44
+ mod
45
+ end
46
+
47
+ # Forces creation of a template at +path+ within a +full_path+.
48
+ #
49
+ # @param [String] path the path name of the template
50
+ # @param [Array<String>] full_paths the full path on disk of the template
51
+ # @return [Template] the template module representing the +path+
52
+ def template!(path, full_paths = nil)
53
+ full_paths ||= [path]
54
+ full_paths = [full_paths] unless full_paths.is_a?(Array)
55
+ name = template_module_name(full_paths.first)
56
+ begin; return const_get(name); rescue NameError; end
57
+
58
+ mod = const_set(name, Module.new)
59
+ mod.send(:include, Template)
60
+ mod.send(:initialize, path, full_paths)
61
+ mod
62
+ end
63
+
64
+ # Renders a template on a {CodeObjects::Base code object} using
65
+ # a set of default (overridable) options. Either the +:object+
66
+ # or +:type+ keys must be provided.
67
+ #
68
+ # If a +:serializer+ key is provided and +:serialize+ is not set to
69
+ # false, the rendered contents will be serialized through the {Serializers::Base}
70
+ # object. See {with_serializer}.
71
+ #
72
+ # @example Renders an object with html formatting
73
+ # Engine.render(:format => :html, :object => obj)
74
+ # @example Renders without an object
75
+ # Engine.render(:type => :fulldoc, :otheropts => somevalue)
76
+ # @param [Hash] options the options hash
77
+ # @option options [Symbol] :format (:text) the default format
78
+ # @option options [Symbol] :type (nil) the :object's type.
79
+ # @option options [Symbol] :template (:default) the default template
80
+ # @return [String] the rendered template
81
+ def render(options = {})
82
+ options = set_default_options(options)
83
+ mod = template(options.template, options.type, options.format)
84
+
85
+ if options.serializer && options.serialize != false
86
+ with_serializer(options.object, options.serializer) { mod.run(options) }
87
+ else
88
+ mod.run(options)
89
+ end
90
+ end
91
+
92
+ # Passes a set of objects to the +:fulldoc+ template for full documentation generation.
93
+ # This is called by {CLI::Yardoc} to most commonly perform HTML
94
+ # documentation generation.
95
+ #
96
+ # @param [Array<CodeObjects::Base>] objects a list of {CodeObjects::Base}
97
+ # objects to pass to the template
98
+ # @param [Hash] options (see {render})
99
+ # @return [void]
100
+ def generate(objects, options = {})
101
+ options = set_default_options(options)
102
+ options.objects = objects
103
+ options.object = Registry.root
104
+ template(options.template, :fulldoc, options.format).run(options)
105
+ end
106
+
107
+ # Serializes the results of a block with a +serializer+ object.
108
+ #
109
+ # @param [CodeObjects::Base] object the code object to serialize
110
+ # @param [Serializers::Base] serializer the serializer object
111
+ # @yield a block whose result will be serialize
112
+ # @yieldreturn [String] the contents to serialize
113
+ # @see Serializers::Base
114
+ def with_serializer(object, serializer, &block)
115
+ output = nil
116
+ filename = serializer.serialized_path(object)
117
+ if serializer.respond_to?(:basepath)
118
+ filename = File.join(serializer.basepath, filename)
119
+ end
120
+ log.capture("Generating #{filename}", nil) do
121
+ serializer.before_serialize if serializer
122
+ output = yield
123
+ if serializer
124
+ serializer.serialize(object, output)
125
+ serializer.after_serialize(output)
126
+ end
127
+ end
128
+ output
129
+ end
130
+
131
+ private
132
+
133
+ # Sets default options on the options hash
134
+ #
135
+ # @param [Hash] options the options hash
136
+ # @option options [Symbol] :format (:text) the default format
137
+ # @option options [Symbol] :type (nil) the :object's type, if provided
138
+ # @option options [Symbol] :template (:default) the default template
139
+ # @return [void]
140
+ def set_default_options(options = {})
141
+ if options.is_a?(Hash)
142
+ options = TemplateOptions.new.tap do |o|
143
+ o.reset_defaults
144
+ o.update(options)
145
+ end
146
+ end
147
+ options.type ||= options.object.type if options.object
148
+ options
149
+ end
150
+
151
+ # Searches through the registered {template_paths} and returns
152
+ # all full directories that have the +path+ within them on disk.
153
+ #
154
+ # @param [Template] from_template if provided, allows a relative
155
+ # path to be specified from this template's full path.
156
+ # @param [String] path the path component to search for in the
157
+ # {template_paths}
158
+ # @return [Array<String>] a list of full paths that are existing
159
+ # candidates for a template module
160
+ def find_template_paths(from_template, path)
161
+ paths = template_paths.dup
162
+ paths = from_template.full_paths + paths if from_template
163
+
164
+ paths.inject([]) do |acc, tp|
165
+ full_path = File.cleanpath(File.join(tp, path))
166
+ acc.unshift(full_path) if File.directory?(full_path)
167
+ acc
168
+ end.uniq
169
+ end
170
+
171
+ # The name of the module that represents a +path+
172
+ #
173
+ # @param [String] path the path to generate a module name for
174
+ # @return [String] the module name
175
+ def template_module_name(path)
176
+ 'Template_' + path.to_s.gsub(/[^a-z0-9]/i, '_')
177
+ end
178
+ end
179
+
180
+ self.template_paths = []
181
+ end
182
+
183
+ Engine.register_template_path(File.join(YARD::ROOT, '..', 'templates'))
184
+ end
185
+ end
@@ -0,0 +1,22 @@
1
+ module YARD
2
+ module Templates
3
+ # @since 0.5.4
4
+ module ErbCache
5
+ def self.method_for(filename, &block)
6
+ @methods ||= {}
7
+ return @methods[filename] if @methods[filename]
8
+ @methods[filename] = name = "_erb_cache_#{@methods.size}"
9
+ erb = yield.src
10
+ encoding = erb[/\A(#coding[:=].*\r?\n)/, 1] || ''
11
+ module_eval "#{encoding}def #{name}; #{erb}; end", filename
12
+
13
+ name
14
+ end
15
+
16
+ def self.clear!
17
+ return unless @methods
18
+ @methods.clear
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,212 @@
1
+ module YARD::Templates::Helpers
2
+ # The base helper module included in all templates.
3
+ module BaseHelper
4
+ attr_accessor :object, :serializer
5
+
6
+ # @return [CodeObjects::Base] the object representing the current generated
7
+ # page. Might not be the current {#object} when inside sub-templates.
8
+ attr_reader :owner
9
+ undef owner
10
+ def owner; @owner || object.namespace end
11
+
12
+ # @group Managing Global Template State
13
+
14
+ # An object that keeps track of global state throughout the entire template
15
+ # rendering process (including any sub-templates).
16
+ #
17
+ # @return [OpenStruct] a struct object that stores state
18
+ # @since 0.6.0
19
+ def globals; options.globals end
20
+
21
+ # @group Running the Verifier
22
+
23
+ # Runs a list of objects against the {Verifier} object passed into the
24
+ # template and returns the subset of verified objects.
25
+ #
26
+ # @param [Array<CodeObjects::Base>] list a list of code objects
27
+ # @return [Array<CodeObjects::Base>] a list of code objects that match
28
+ # the verifier. If no verifier is supplied, all objects are returned.
29
+ def run_verifier(list)
30
+ options.verifier ? options.verifier.run(list) : list
31
+ end
32
+
33
+ # @group Escaping Text
34
+
35
+ # Escapes text. This is used a lot by the HtmlHelper and there should
36
+ # be some helper to "clean up" text for whatever, this is it.
37
+ def h(text)
38
+ text
39
+ end
40
+
41
+ # @group Linking Objects and URLs
42
+
43
+ # Links objects or URLs. This method will delegate to the correct +link_+
44
+ # method depending on the arguments passed in.
45
+ #
46
+ # @example Linking a URL
47
+ # linkify('http://example.com')
48
+ # @example Including docstring contents of an object
49
+ # linkify('include:YARD::Docstring')
50
+ # @example Linking to an extra file
51
+ # linkify('file:README')
52
+ # @example Linking an object by path
53
+ # linkify('YARD::Docstring')
54
+ def linkify(*args)
55
+ if args.first.is_a?(String)
56
+ case args.first
57
+ when %r{://}, /^mailto:/
58
+ link_url(args[0], args[1], {:target => '_parent'}.merge(args[2]||{}))
59
+ when /^include:file:(\S+)/
60
+ file = $1
61
+ relpath = File.relative_path(Dir.pwd, File.expand_path(file))
62
+ if relpath =~ /^\.\./
63
+ log.warn "Cannot include file from path `#{file}'"
64
+ ""
65
+ elsif File.file?(file)
66
+ link_include_file(file)
67
+ else
68
+ log.warn "Cannot find file at `#{file}' for inclusion"
69
+ ""
70
+ end
71
+ when /^include:(\S+)/
72
+ path = $1
73
+ if obj = YARD::Registry.resolve(object.namespace, path)
74
+ link_include_object(obj)
75
+ else
76
+ log.warn "Cannot find object at `#{path}' for inclusion"
77
+ ""
78
+ end
79
+ when /^render:(\S+)/
80
+ path = $1
81
+ if obj = YARD::Registry.resolve(object, path)
82
+ opts = options.dup
83
+ opts.delete(:serializer)
84
+ obj.format(opts)
85
+ else
86
+ ''
87
+ end
88
+ when /^file:(\S+?)(?:#(\S+))?$/
89
+ link_file($1, args[1] ? args[1] : nil, $2)
90
+ else
91
+ link_object(*args)
92
+ end
93
+ else
94
+ link_object(*args)
95
+ end
96
+ end
97
+
98
+ # Includes an object's docstring into output.
99
+ # @since 0.6.0
100
+ # @param [CodeObjects::Base] obj the object to include
101
+ # @return [String] the object's docstring (no tags)
102
+ def link_include_object(obj)
103
+ obj.docstring
104
+ end
105
+
106
+ # Include a file as a docstring in output
107
+ # @since 0.7.0
108
+ # @param [String] file the filename to include
109
+ # @return [String] the file's contents
110
+ def link_include_file(file)
111
+ File.read(file)
112
+ end
113
+
114
+ # Links to an object with an optional title
115
+ #
116
+ # @param [CodeObjects::Base] obj the object to link to
117
+ # @param [String] title the title to use for the link
118
+ # @return [String] the linked object
119
+ def link_object(obj, title = nil)
120
+ return title if title
121
+
122
+ case obj
123
+ when YARD::CodeObjects::Base, YARD::CodeObjects::Proxy
124
+ obj.title
125
+ when String, Symbol
126
+ P(obj).title
127
+ else
128
+ obj
129
+ end
130
+ end
131
+
132
+ # Links to a URL
133
+ #
134
+ # @param [String] url the URL to link to
135
+ # @param [String] title the optional title to display the link as
136
+ # @param [Hash] params optional parameters for the link
137
+ # @return [String] the linked URL
138
+ def link_url(url, title = nil, params = nil)
139
+ url
140
+ end
141
+
142
+ # Links to an extra file
143
+ #
144
+ # @param [String] filename the filename to link to
145
+ # @param [String] title the title of the link
146
+ # @param [String] anchor optional anchor
147
+ # @return [String] the link to the file
148
+ # @since 0.5.5
149
+ def link_file(filename, title = nil, anchor = nil)
150
+ return filename.filename if CodeObjects::ExtraFileObject === filename
151
+ filename
152
+ end
153
+
154
+ # @group Formatting Object Attributes
155
+
156
+ # Formats a list of return types for output and links each type.
157
+ #
158
+ # @example Formatting types
159
+ # format_types(['String', 'Array']) #=> "(String, Array)"
160
+ # @example Formatting types without surrounding brackets
161
+ # format_types(['String', 'Array'], false) #=> "String, Array"
162
+ # @param [Array<String>] list a list of types
163
+ # @param [Boolean] brackets whether to surround the types in brackets
164
+ # @return [String] the formatted list of Ruby types
165
+ def format_types(list, brackets = true)
166
+ list.nil? || list.empty? ? "" : (brackets ? "(#{list.join(", ")})" : list.join(", "))
167
+ end
168
+
169
+ # @example Formatted type of an exception class
170
+ # o = ClassObject.new(:root, :MyError)
171
+ # o.superclass = P('RuntimeError')
172
+ # format_object_type(o) # => "Exception"
173
+ # @example Formatted type of a method
174
+ # o = MethodObject.new(:root, :to_s)
175
+ # format_object_type(o) # => "Method"
176
+ # @param [CodeObjects::Base] object the object to retrieve the type for
177
+ # @return [String] the human-readable formatted {CodeObjects::Base#type #type}
178
+ # for the object
179
+ def format_object_type(object)
180
+ case object
181
+ when YARD::CodeObjects::ClassObject
182
+ object.is_exception? ? "Exception" : "Class"
183
+ else
184
+ object.type.to_s.capitalize
185
+ end
186
+ end
187
+
188
+ # @example
189
+ # s = format_object_title ModuleObject.new(:root, :MyModuleName)
190
+ # s # => "Module: MyModuleName"
191
+ # @param [CodeObjects::Base] object the object to retrieve a title for
192
+ # @return [String] the page title name for a given object
193
+ def format_object_title(object)
194
+ case object
195
+ when YARD::CodeObjects::RootObject
196
+ "Top Level Namespace"
197
+ else
198
+ format_object_type(object) + ": " + object.title
199
+ end
200
+ end
201
+
202
+ # Indents and formats source code
203
+ #
204
+ # @param [String] value the input source code
205
+ # @return [String] formatted source code
206
+ def format_source(value)
207
+ sp = value.split("\n").last[/^(\s+)/, 1]
208
+ num = sp ? sp.size : 0
209
+ value.gsub(/^\s{#{num}}/, '')
210
+ end
211
+ end
212
+ end
@@ -0,0 +1,26 @@
1
+ module YARD
2
+ module Templates::Helpers
3
+ # Helpers for various object types
4
+ module FilterHelper
5
+ # @return [Boolean] whether an object is a method
6
+ def is_method?(object)
7
+ object.type == :method
8
+ end
9
+
10
+ # @return [Boolean] whether an object is a namespace
11
+ def is_namespace?(object)
12
+ object.is_a?(CodeObjects::NamespaceObject)
13
+ end
14
+
15
+ # @return [Boolean] whether an object is a class
16
+ def is_class?(object)
17
+ object.is_a?(CodeObjects::ClassObject)
18
+ end
19
+
20
+ # @return [Boolean] whether an object is a module
21
+ def is_module?(object)
22
+ object.is_a?(CodeObjects::ModuleObject)
23
+ end
24
+ end
25
+ end
26
+ end