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,106 @@
1
+ require 'thread'
2
+
3
+ module YARD
4
+ module Templates
5
+ module Helpers
6
+ module Markup
7
+ begin require 'rdoc'; rescue LoadError; end
8
+ begin
9
+ require 'rdoc/markup'
10
+ require 'rdoc/markup/to_html'
11
+ class RDocMarkup; MARKUP = RDoc::Markup end
12
+ class RDocMarkupToHtml < RDoc::Markup::ToHtml
13
+ if defined?(RDoc::VERSION) && RDoc::VERSION >= '4.0.0' &&
14
+ defined?(RDoc::Options)
15
+ then
16
+ def initialize
17
+ options = RDoc::Options.new
18
+ options.pipe = true
19
+ super(options)
20
+ end
21
+ end
22
+ end
23
+ rescue LoadError
24
+ begin
25
+ require 'rdoc/markup/simple_markup'
26
+ require 'rdoc/markup/simple_markup/to_html'
27
+ class RDocMarkup; MARKUP = SM::SimpleMarkup end
28
+ class RDocMarkupToHtml < SM::ToHtml; end
29
+ rescue LoadError
30
+ raise NameError, "could not load RDocMarkup (rdoc is not installed)"
31
+ end
32
+ end
33
+
34
+ class RDocMarkup
35
+ attr_accessor :from_path
36
+
37
+ @@formatter = nil
38
+ @@markup = nil
39
+ @@mutex = nil
40
+
41
+ def initialize(text)
42
+ @text = text
43
+
44
+ @@formatter ||= RDocMarkupToHtml.new
45
+ @@markup ||= MARKUP.new
46
+ @@mutex ||= Mutex.new
47
+ end
48
+
49
+ def to_html
50
+ html = nil
51
+ @@mutex.synchronize do
52
+ @@formatter.from_path = from_path
53
+ html = @@markup.convert(@text, @@formatter)
54
+ end
55
+ html = fix_dash_dash(html)
56
+ html = fix_typewriter(html)
57
+ html
58
+ end
59
+
60
+ private
61
+
62
+ # Fixes RDoc behaviour with ++ only supporting alphanumeric text.
63
+ #
64
+ # @todo Refactor into own SimpleMarkup subclass
65
+ def fix_typewriter(text)
66
+ code_tags = 0
67
+ text.gsub(/<(\/)?(pre|code|tt)|(\s|^|>)\+(?! )([^\n\+]{1,900})(?! )\+/) do |str|
68
+ closed, tag, first_text, type_text, pre_text, no_match = $1, $2, $3, $4, $`, $&
69
+
70
+ if tag
71
+ code_tags += (closed ? -1 : 1)
72
+ next str
73
+ end
74
+ next str unless code_tags == 0
75
+ first_text + '<tt>' + type_text + '</tt>'
76
+ end
77
+ end
78
+
79
+ # Don't allow -- to turn into &#8212; element. The chances of this being
80
+ # some --option is far more likely than the typographical meaning.
81
+ #
82
+ # @todo Refactor into own SimpleMarkup subclass
83
+ def fix_dash_dash(text)
84
+ text.gsub(/&#8212;(?=\S)/, '--')
85
+ end
86
+ end
87
+
88
+ class RDocMarkupToHtml
89
+ attr_accessor :from_path
90
+
91
+ # Disable auto-link of URLs
92
+ def handle_special_HYPERLINK(special)
93
+ @hyperlink ? special.text : super
94
+ end
95
+
96
+ def accept_paragraph(*args)
97
+ par = args.last
98
+ text = par.respond_to?(:txt) ? par.txt : par.text
99
+ @hyperlink = !!(text =~ /\{(https?:|mailto:|link:|www\.)/)
100
+ super
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,169 @@
1
+ require 'rubygems'
2
+
3
+ module YARD
4
+ module Templates::Helpers
5
+ # Helper methods for loading and managing markup types.
6
+ module MarkupHelper
7
+ class << self
8
+ # Clears the markup provider cache information. Mainly used for testing.
9
+ # @return [void]
10
+ def clear_markup_cache
11
+ self.markup_cache = {}
12
+ end
13
+
14
+ # @return [Hash{Symbol=>{(:provider,:class)=>Object}}] the cached markup providers
15
+ # @private
16
+ # @since 0.6.4
17
+ attr_accessor :markup_cache
18
+ end
19
+
20
+ MarkupHelper.clear_markup_cache
21
+
22
+ # The default list of markup providers for each markup type
23
+ MARKUP_PROVIDERS = {
24
+ :markdown => [
25
+ {:lib => :redcarpet, :const => 'RedcarpetCompat'},
26
+ {:lib => :rdiscount, :const => 'RDiscount'},
27
+ {:lib => :kramdown, :const => 'Kramdown::Document'},
28
+ {:lib => :bluecloth, :const => 'BlueCloth'},
29
+ {:lib => :maruku, :const => 'Maruku'},
30
+ {:lib => :'rpeg-markdown', :const => 'PEGMarkdown'},
31
+ {:lib => :rdoc, :const => 'YARD::Templates::Helpers::Markup::RDocMarkdown'},
32
+ ],
33
+ :textile => [
34
+ {:lib => :redcloth, :const => 'RedCloth'},
35
+ ],
36
+ :textile_strict => [
37
+ {:lib => :redcloth, :const => 'RedCloth'},
38
+ ],
39
+ :rdoc => [
40
+ {:lib => nil, :const => 'YARD::Templates::Helpers::Markup::RDocMarkup'},
41
+ ],
42
+ :asciidoc => [
43
+ {:lib => :asciidoctor, :const => 'Asciidoctor'}
44
+ ],
45
+ :ruby => [],
46
+ :text => [],
47
+ :pre => [],
48
+ :html => [],
49
+ :none => [],
50
+ }
51
+
52
+ # Returns a list of extensions for various markup types. To register
53
+ # extensions for a type, add them to the array of extensions for the
54
+ # type.
55
+ # @since 0.6.0
56
+ MARKUP_EXTENSIONS = {
57
+ :html => ['htm', 'html', 'shtml'],
58
+ :text => ['txt'],
59
+ :textile => ['textile', 'txtile'],
60
+ :asciidoc => ['asciidoc'],
61
+ :markdown => ['markdown', 'md', 'mdown', 'mkd'],
62
+ :rdoc => ['rdoc'],
63
+ :ruby => ['rb', 'ru']
64
+ }
65
+
66
+ # Contains the Regexp object that matches the shebang line of extra
67
+ # files to detect the markup type.
68
+ MARKUP_FILE_SHEBANG = /\A#!(\S+)\s*$/
69
+
70
+ # Attempts to load the first valid markup provider in {MARKUP_PROVIDERS}.
71
+ # If a provider is specified, immediately try to load it.
72
+ #
73
+ # On success this sets `@markup_provider` and `@markup_class` to
74
+ # the provider name and library constant class/module respectively for
75
+ # the loaded provider.
76
+ #
77
+ # On failure this method will inform the user that no provider could be
78
+ # found and exit the program.
79
+ #
80
+ # @return [Boolean] whether the markup provider was successfully loaded.
81
+ def load_markup_provider(type = options.markup)
82
+ return true if MarkupHelper.markup_cache[type]
83
+ MarkupHelper.markup_cache[type] ||= {}
84
+
85
+ providers = MARKUP_PROVIDERS[type.to_sym]
86
+ return true if providers && providers.empty?
87
+ if providers && options.markup_provider
88
+ providers = providers.select {|p| p[:lib] == options.markup_provider }
89
+ end
90
+
91
+ if providers == nil || providers.empty?
92
+ log.error "Invalid markup type '#{type}' or markup provider " +
93
+ "(#{options.markup_provider}) is not registered."
94
+ return false
95
+ end
96
+
97
+ # Search for provider, return the library class name as const if found
98
+ providers.each do |provider|
99
+ begin require provider[:lib].to_s; rescue LoadError; next end if provider[:lib]
100
+ begin klass = eval("::" + provider[:const]); rescue NameError; next end
101
+ MarkupHelper.markup_cache[type][:provider] = provider[:lib] # Cache the provider
102
+ MarkupHelper.markup_cache[type][:class] = klass
103
+ return true
104
+ end
105
+
106
+ # Show error message telling user to install first potential provider
107
+ name, lib = *[providers.first[:const], providers.first[:lib] || type]
108
+ log.error "Missing '#{lib}' gem for #{type.to_s.capitalize} formatting. Install it with `gem install #{lib}`"
109
+ false
110
+ end
111
+
112
+ # Checks for a shebang or looks at the file extension to determine
113
+ # the markup type for the file contents. File extensions are registered
114
+ # for a markup type in {MARKUP_EXTENSIONS}.
115
+ #
116
+ # A shebang should be on the first line of a file and be in the form:
117
+ #
118
+ # #!markup_type
119
+ #
120
+ # Standard markup types are text, html, rdoc, markdown, textile
121
+ #
122
+ # @param [String] contents Unused. Was necessary prior to 0.7.0.
123
+ # Newer versions of YARD use {CodeObjects::ExtraFileObject#contents}
124
+ # @return [Symbol] the markup type recognized for the file
125
+ # @see MARKUP_EXTENSIONS
126
+ # @since 0.6.0
127
+ def markup_for_file(contents, filename)
128
+ if contents && contents =~ MARKUP_FILE_SHEBANG # Shebang support
129
+ return $1.to_sym
130
+ end
131
+
132
+ ext = (File.extname(filename)[1..-1] || '').downcase
133
+ MARKUP_EXTENSIONS.each do |type, exts|
134
+ return type if exts.include?(ext)
135
+ end
136
+ options.markup
137
+ end
138
+
139
+ # Strips any shebang lines on the file contents that pertain to
140
+ # markup or preprocessing data.
141
+ #
142
+ # @deprecated Use {CodeObjects::ExtraFileObject#contents} instead
143
+ # @return [String] the file contents minus any preprocessing tags
144
+ # @since 0.6.0
145
+ def markup_file_contents(contents)
146
+ contents =~ MARKUP_FILE_SHEBANG ? $' : contents
147
+ end
148
+
149
+ # Gets the markup provider class/module constant for a markup type
150
+ # Call {#load_markup_provider} before using this method.
151
+ #
152
+ # @param [Symbol] type the markup type (:rdoc, :markdown, etc.)
153
+ # @return [Class] the markup class
154
+ def markup_class(type = options.markup)
155
+ load_markup_provider(type)
156
+ MarkupHelper.markup_cache[type][:class]
157
+ end
158
+
159
+ # Gets the markup provider name for a markup type
160
+ # Call {#load_markup_provider} before using this method.
161
+ #
162
+ # @param [Symbol] type the markup type (:rdoc, :markdown, etc.)
163
+ # @return [Symbol] the markup provider name (usually the gem name of the library)
164
+ def markup_provider(type = options.markup)
165
+ MarkupHelper.markup_cache[type][:provider]
166
+ end
167
+ end
168
+ end
169
+ end
@@ -0,0 +1,74 @@
1
+ module YARD
2
+ module Templates::Helpers
3
+ # Helper methods for method objects.
4
+ module MethodHelper
5
+ # @return [String] formatted arguments for a method
6
+ def format_args(object)
7
+ return if object.parameters.nil?
8
+ params = object.parameters
9
+ if object.has_tag?(:yield) || object.has_tag?(:yieldparam)
10
+ params.reject! do |param|
11
+ param[0].to_s[0,1] == "&" &&
12
+ !object.tags(:param).any? {|t| t.name == param[0][1..-1] }
13
+ end
14
+ end
15
+
16
+ unless params.empty?
17
+ args = params.map do |n, v|
18
+ v ? "#{n}#{n[-1,1] == ':' ? '' : ' ='} #{v}" : n.to_s
19
+ end.join(", ")
20
+ h("(#{args})")
21
+ else
22
+ ""
23
+ end
24
+ end
25
+
26
+ # @return [String] formatted and linked return types for a method
27
+ def format_return_types(object)
28
+ return unless object.has_tag?(:return) && object.tag(:return).types
29
+ return if object.tag(:return).types.empty?
30
+ format_types [object.tag(:return).types.first], false
31
+ end
32
+
33
+ # @return [String] formatted block if one exists
34
+ def format_block(object)
35
+ if object.has_tag?(:yield) && object.tag(:yield).types
36
+ params = object.tag(:yield).types
37
+ elsif object.has_tag?(:yieldparam)
38
+ params = object.tags(:yieldparam).map {|t| t.name }
39
+ elsif object.has_tag?(:yield)
40
+ return "{ ... }"
41
+ else
42
+ params = nil
43
+ end
44
+
45
+ params ? h("{|" + params.join(", ") + "| ... }") : ""
46
+ end
47
+
48
+ # @return [String] formats line numbers for source code of an object
49
+ def format_lines(object)
50
+ return "" if object.source.nil? || object.line.nil?
51
+ i = -1
52
+ object.source.split(/\n/).map { object.line + (i += 1) }.join("\n")
53
+ end
54
+
55
+ # @return [String] formats source of an object
56
+ def format_code(object, show_lines = false)
57
+ i = -1
58
+ lines = object.source.split(/\n/)
59
+ longestline = (object.line + lines.size).to_s.length
60
+ lines.map do |line|
61
+ lineno = object.line + (i += 1)
62
+ (" " * (longestline - lineno.to_s.length)) + lineno.to_s + " " + line
63
+ end.join("\n")
64
+ end
65
+
66
+ # @return [String] formats source code of a constant value
67
+ def format_constant(value)
68
+ sp = value.split("\n").last[/^(\s+)/, 1]
69
+ num = sp ? sp.size : 0
70
+ html_syntax_highlight value.gsub(/^\s{#{num}}/, '')
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,19 @@
1
+ module YARD
2
+ module Templates
3
+ module Helpers
4
+ # Helper methods for managing module objects.
5
+ module ModuleHelper
6
+ # Prunes the method listing by running the verifier and removing attributes/aliases
7
+ # @param [Array<CodeObjects::Base>] list a list of methods
8
+ # @param [Boolean] hide_attributes whether to prune attribute methods from the list
9
+ # @return [Array<CodeObjects::Base>] a pruned list of methods
10
+ def prune_method_listing(list, hide_attributes = true)
11
+ list = run_verifier(list)
12
+ list = list.reject {|o| o.is_alias? unless CodeObjects::Proxy === o.namespace }
13
+ list = list.reject {|o| o.is_attribute? unless CodeObjects::Proxy === o.namespace } if hide_attributes
14
+ list
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,95 @@
1
+ module YARD
2
+ module Templates
3
+ module Helpers
4
+ # Helper methods for text template formats.
5
+ module TextHelper
6
+ # @return [String] escapes text
7
+ def h(text)
8
+ out = ""
9
+ text = text.split(/\n/)
10
+ text.each_with_index do |line, i|
11
+ out <<
12
+ case line
13
+ when /^\s*$/; "\n\n"
14
+ when /^\s+\S/, /^=/; line + "\n"
15
+ else; line + (text[i + 1] =~ /^\s+\S/ ? "\n" : " ")
16
+ end
17
+ end
18
+ out
19
+ end
20
+
21
+ # @return [String] wraps text at +col+ columns.
22
+ def wrap(text, col = 72)
23
+ text.gsub(/(.{1,#{col}})( +|$\n?)|(.{1,#{col}})/, "\\1\\3\n")
24
+ end
25
+
26
+ # @return [String] indents +text+ by +len+ characters.
27
+ def indent(text, len = 4)
28
+ text.gsub(/^/, ' ' * len)
29
+ end
30
+
31
+ # @return [String] aligns a title to the right
32
+ def title_align_right(text, col = 72)
33
+ align_right(text, '-', col)
34
+ end
35
+
36
+ # @return [String] aligns text to the right
37
+ def align_right(text, spacer = ' ', col = 72)
38
+ text = text[0, col - 4] + '...' if (col - 1 - text.length) < 0
39
+ spacer * (col - 1 - text.length) + " " + text
40
+ end
41
+
42
+ # @return [String] returns a horizontal rule for output
43
+ def hr(col = 72, sep = "-")
44
+ sep * col
45
+ end
46
+
47
+ # @return [String] the formatted signature for a method
48
+ def signature(meth)
49
+ # use first overload tag if it has a return type and method itself does not
50
+ if !meth.tag(:return) && meth.tag(:overload) && meth.tag(:overload).tag(:return)
51
+ meth = meth.tag(:overload)
52
+ end
53
+
54
+ type = options.default_return || ""
55
+ rmeth = meth
56
+ if !rmeth.has_tag?(:return) && rmeth.respond_to?(:object)
57
+ rmeth = meth.object
58
+ end
59
+ if rmeth.tag(:return) && rmeth.tag(:return).types
60
+ types = rmeth.tags(:return).map {|t| t.types ? t.types : [] }.flatten.uniq
61
+ first = types.first
62
+ if types.size == 2 && types.last == 'nil'
63
+ type = first + '?'
64
+ elsif types.size == 2 && types.last =~ /^(Array)?<#{Regexp.quote types.first}>$/
65
+ type = first + '+'
66
+ elsif types.size > 2
67
+ type = [first, '...'].join(', ')
68
+ elsif types == ['void'] && options.hide_void_return
69
+ type = ""
70
+ else
71
+ type = types.join(", ")
72
+ end
73
+ end
74
+ type = "(#{type})" if type.include?(',')
75
+ type = " -> #{type} " unless type.empty?
76
+ scope = meth.scope == :class ? "#{meth.namespace.name}." : "#{meth.namespace.name.to_s.downcase}."
77
+ name = meth.name
78
+ blk = format_block(meth)
79
+ args = format_args(meth)
80
+ extras = []
81
+ extras_text = ''
82
+ if rw = meth.namespace.attributes[meth.scope][meth.name]
83
+ attname = [rw[:read] ? 'read' : nil, rw[:write] ? 'write' : nil].compact
84
+ attname = attname.size == 1 ? attname.join('') + 'only' : nil
85
+ extras << attname if attname
86
+ end
87
+ extras << meth.visibility if meth.visibility != :public
88
+ extras_text = '(' + extras.join(", ") + ')' unless extras.empty?
89
+ title = "%s%s%s %s%s%s" % [scope, name, args, blk, type, extras_text]
90
+ title.gsub(/\s+/, ' ')
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,46 @@
1
+ module YARD
2
+ module Templates::Helpers
3
+ # Helpers for UML template format
4
+ module UMLHelper
5
+ # Official UML visibility prefix syntax for an object given its visibility
6
+ # @param [CodeObjects::Base] object the object to retrieve visibility for
7
+ # @return [String] the UML visibility prefix
8
+ def uml_visibility(object)
9
+ case object.visibility
10
+ when :public; '+'
11
+ when :protected; '#'
12
+ when :private; '-'
13
+ end
14
+ end
15
+
16
+ # Formats the path of an object for Graphviz syntax
17
+ # @param [CodeObjects::Base] object an object to format the path of
18
+ # @return [String] the encoded path
19
+ def format_path(object)
20
+ object.path.gsub('::', '_')
21
+ end
22
+
23
+ # Encodes text in escaped Graphviz syntax
24
+ # @param [String] text text to encode
25
+ # @return [String] the encoded text
26
+ def h(text)
27
+ text.to_s.gsub(/(\W)/, '\\\\\1')
28
+ end
29
+
30
+ # Tidies data by formatting and indenting text
31
+ # @param [String] data pre-formatted text
32
+ # @return [String] tidied text.
33
+ def tidy(data)
34
+ indent = 0
35
+ data.split(/\n/).map do |line|
36
+ line.gsub!(/^\s*/, '')
37
+ next if line.empty?
38
+ indent -= 1 if line =~ /^\s*\}\s*$/
39
+ line = (' ' * (indent * 2)) + line
40
+ indent += 1 if line =~ /\{\s*$/
41
+ line
42
+ end.compact.join("\n") + "\n"
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,106 @@
1
+ module YARD
2
+ module Templates
3
+ # Abstracts the structure for a section and its subsections into an ordered
4
+ # list of sections and subsections.
5
+ # @since 0.6.0
6
+ class Section < Array
7
+ attr_accessor :name
8
+
9
+ def initialize(name, *args)
10
+ self.name = name
11
+ replace(parse_sections(args))
12
+ end
13
+
14
+ def dup
15
+ obj = super
16
+ obj.name = name
17
+ obj
18
+ end
19
+
20
+ def [](*args)
21
+ if args.first.is_a?(Range) || args.size > 1
22
+ obj = super(*args)
23
+ obj.name = name
24
+ return obj
25
+ elsif args.first.is_a?(Integer)
26
+ return super(*args)
27
+ end
28
+ find {|o| o.name == args.first }
29
+ end
30
+
31
+ def eql?(other)
32
+ super(other) && name == other.name
33
+ end
34
+
35
+ def ==(other)
36
+ case other
37
+ when Section
38
+ eql?(other)
39
+ when Array
40
+ to_a == other
41
+ else
42
+ name == other
43
+ end
44
+ end
45
+
46
+ def push(*args)
47
+ super(*parse_sections(args))
48
+ end
49
+ alias << push
50
+
51
+ def unshift(*args)
52
+ super(*parse_sections(args))
53
+ end
54
+
55
+ def inspect
56
+ n = name.respond_to?(:path) ? "T('#{name.path}')" : name.inspect
57
+ subsects = empty? ? "" : ", subsections=#{super}"
58
+ "Section(#{n}#{subsects})"
59
+ end
60
+
61
+ def place(*args)
62
+ super(*parse_sections(args))
63
+ end
64
+
65
+ def to_a
66
+ list = [name]
67
+ unless empty?
68
+ subsects = []
69
+ each {|s| subsects += s.to_a }
70
+ list << subsects
71
+ end
72
+ list
73
+ end
74
+
75
+ def any(item)
76
+ find do |section|
77
+ return section if section == item
78
+ return section.any(item) unless section.empty?
79
+ end
80
+ nil
81
+ end
82
+
83
+ private
84
+
85
+ def parse_sections(args)
86
+ if args.size == 1 && args.first.is_a?(Array) && !args.first.is_a?(Section)
87
+ args = args.first
88
+ end
89
+ sections = []
90
+ args.each_with_index do |name, index|
91
+ case name
92
+ when Section; sections << name
93
+ when Array; next
94
+ else
95
+ subsections = args[index + 1].is_a?(Array) ? args[index + 1] : []
96
+ if subsections.is_a?(Section)
97
+ subsections = []
98
+ end
99
+ sections << Section.new(name, subsections)
100
+ end
101
+ end
102
+ sections
103
+ end
104
+ end
105
+ end
106
+ end