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,23 @@
1
+ require 'benchmark'
2
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'yard')
3
+
4
+ TIMES = (ARGV[0] || 10_000).to_i
5
+
6
+ def bench_builtins(name)
7
+ YARD::CodeObjects::BUILTIN_EXCEPTIONS_HASH.has_key? name
8
+ end
9
+
10
+ def bench_eval(name)
11
+ eval(name).is_a?(Class)
12
+ rescue
13
+ false
14
+ end
15
+
16
+ Benchmark.bmbm do |b|
17
+ b.report("builtins PASS") { TIMES.times {YARD::CodeObjects::BUILTIN_EXCEPTIONS.each {|y| bench_builtins(y) } } }
18
+ b.report("eval PASS") { TIMES.times {YARD::CodeObjects::BUILTIN_EXCEPTIONS.each {|y| bench_eval(y) }} }
19
+ b.report("builtins FAIL") { TIMES.times {YARD::CodeObjects::BUILTIN_MODULES.each {|y| bench_builtins(y) } } }
20
+ b.report("eval FAIL") { TIMES.times {YARD::CodeObjects::BUILTIN_MODULES.each {|y| bench_eval(y) }} }
21
+ b.report("builtins ANY") { TIMES.times {YARD::CodeObjects::BUILTIN_CLASSES.each {|y| bench_builtins(y) } } }
22
+ b.report("eval ANY") { TIMES.times {YARD::CodeObjects::BUILTIN_CLASSES.each {|y| bench_eval(y) }} }
23
+ end
@@ -0,0 +1,12 @@
1
+ require "benchmark"
2
+
3
+ STR1 = "Hello"
4
+ JOIN = "::"
5
+ STR2 = "World"
6
+
7
+ TESTS = 100_000
8
+ Benchmark.bmbm do |results|
9
+ results.report("concat") { TESTS.times { "".concat(STR1).concat(JOIN).concat(STR2) } }
10
+ results.report("add ") { TESTS.times { STR1 + JOIN + STR2 } }
11
+ results.report("join ") { TESTS.times { [STR1, STR2].join(JOIN) } }
12
+ end
@@ -0,0 +1,53 @@
1
+ require 'rubygems'
2
+ require 'erubis'
3
+ require 'erubis/tiny'
4
+ require 'erb'
5
+ require "benchmark"
6
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'yard')
7
+
8
+ def rungen
9
+ YARD::Registry.load_yardoc(File.join(File.dirname(__FILE__), '..', '.yardoc'))
10
+ YARD::Registry.at("YARD::CodeObjects::Base").format(:format => :html)
11
+ end
12
+
13
+ Benchmark.bmbm do |x|
14
+ x.report("erubis") do
15
+ eval <<-eof
16
+ module YARD; module Templates; module Template
17
+ def erb_with(str, x) Erubis::Eruby.new(str) end
18
+ end end end
19
+ eof
20
+
21
+ rungen
22
+ end
23
+
24
+ x.report("fast-erubis") do
25
+ eval <<-eof
26
+ module YARD; module Templates; module Template
27
+ def erb_with(str, x) Erubis::FastEruby.new(str) end
28
+ end end end
29
+ eof
30
+
31
+ rungen
32
+ end
33
+
34
+ x.report("tiny-erubis") do
35
+ eval <<-eof
36
+ module YARD; module Templates; module Template
37
+ def erb_with(str, x) Erubis::TinyEruby.new(str) end
38
+ end end end
39
+ eof
40
+
41
+ rungen
42
+ end
43
+
44
+ x.report("erb") do
45
+ eval <<-eof
46
+ module YARD; module Templates; module Template
47
+ def erb_with(str, x) ERB.new(str, nil) end
48
+ end end end
49
+ eof
50
+
51
+ rungen
52
+ end
53
+ end
@@ -0,0 +1,46 @@
1
+ require "benchmark"
2
+ require 'lib/yard'
3
+
4
+ def format_args_regex(object)
5
+ if object.signature
6
+ object.signature[/#{Regexp.quote object.name.to_s}\s*(.*)/, 1]
7
+ else
8
+ ""
9
+ end
10
+ end
11
+
12
+ def format_args_parameters(object)
13
+ if !object.parameters.empty?
14
+ args = object.parameters.map {|n, v| v ? "#{n} = #{v}" : n.to_s }.join(", ")
15
+ "(#{args})"
16
+ else
17
+ ""
18
+ end
19
+ end
20
+
21
+ YARD::Registry.load
22
+ $object = YARD::Registry.at('YARD::Generators::Base#G')
23
+
24
+ log.puts "regex: " + format_args_regex($object)
25
+ log.puts "params: " + format_args_parameters($object)
26
+ log.puts
27
+
28
+ TIMES = 100_000
29
+ Benchmark.bmbm do |x|
30
+ x.report("regex") { TIMES.times { format_args_regex($object) } }
31
+ x.report("parameters") { TIMES.times { format_args_parameters($object) } }
32
+ end
33
+
34
+ =begin LAST RUN Jun 23 2008
35
+ regex: (generator, opts = {})
36
+ params: (generator, opts = {})
37
+
38
+ Rehearsal ----------------------------------------------
39
+ regex 1.270000 0.020000 1.290000 ( 1.294558)
40
+ parameters 0.690000 0.000000 0.690000 ( 0.693324)
41
+ ------------------------------------- total: 1.980000sec
42
+
43
+ user system total real
44
+ regex 1.260000 0.010000 1.270000 ( 1.268214)
45
+ parameters 0.670000 0.000000 0.670000 ( 0.679114)
46
+ =end
@@ -0,0 +1,37 @@
1
+ require "benchmark"
2
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'yard')
3
+
4
+ unless YARD::CodeObjects::Proxy.private_instance_methods.include?('to_obj')
5
+ raise "This benchmark is dependent on YARD::CodeObjects::Proxy#to_obj"
6
+ end
7
+
8
+ def rungen
9
+ YARD::Registry.clear
10
+ YARD::CLI::Yardoc.run('--quiet', '--use-cache')
11
+ end
12
+
13
+ def redef(lock = false)
14
+ eval <<-eof
15
+ class YARD::CodeObjects::Proxy;
16
+ def to_obj
17
+ @obj #{lock ? '||' : ''}= YARD::Registry.resolve(@namespace, @name)
18
+ end
19
+ end
20
+ eof
21
+ end
22
+
23
+ Benchmark.bmbm do |x|
24
+ x.report("gen-w/o-locking") { redef; rungen }
25
+ x.report("gen-with-locking") { redef(true); rungen }
26
+ end
27
+
28
+ =begin Results from 2008-06-07
29
+ Rehearsal ----------------------------------------------------
30
+ gen-w/o-locking 9.650000 0.450000 10.100000 ( 10.150556)
31
+ gen-with-locking 7.790000 0.400000 8.190000 ( 8.373811)
32
+ ------------------------------------------ total: 18.290000sec
33
+
34
+ user system total real
35
+ gen-w/o-locking 9.820000 0.430000 10.250000 ( 10.293283)
36
+ gen-with-locking 7.820000 0.380000 8.200000 ( 8.243326)
37
+ =end
@@ -0,0 +1,63 @@
1
+ require 'benchmark'
2
+ require 'dbm'
3
+
4
+ MARSHAL_FILE = "marshal_test.db"
5
+ DBM_FILE = "dbm_test"
6
+ WRITE_TIMES = 1
7
+ READ_TIMES = 100
8
+ NUM_INDICES = 10000
9
+ INDICES = ['33', '857', '5022', '8555']
10
+
11
+ def generate_index
12
+ '0' * (rand * 4096).floor
13
+ end
14
+
15
+ def write_dbm
16
+ File.unlink(DBM_FILE + ".db") if File.exist?(DBM_FILE + ".db")
17
+ handle = DBM.new(DBM_FILE)
18
+ NUM_INDICES.times {|t| handle[t.to_s] = Marshal.dump(generate_index) }
19
+ handle.close
20
+ end
21
+
22
+ def read_dbm
23
+ db = DBM.open(DBM_FILE)
24
+ INDICES.each {|index| Marshal.load(db[index]) }
25
+ db.close
26
+ end
27
+
28
+ def write_marshal
29
+ File.unlink(MARSHAL_FILE) if File.exist?(MARSHAL_FILE)
30
+ handle = {}
31
+ NUM_INDICES.times {|t| handle[t.to_s] = generate_index }
32
+ File.open(MARSHAL_FILE, "wb") {|f| f.write(Marshal.dump(handle)) }
33
+ end
34
+
35
+ def read_marshal
36
+ db = Marshal.load(File.read(MARSHAL_FILE))
37
+ INDICES.each {|index| db[index] }
38
+ end
39
+
40
+ Benchmark.bmbm do |x|
41
+ x.report("marshal-write") { WRITE_TIMES.times { write_marshal } }
42
+ x.report("dbm-write") { WRITE_TIMES.times { write_dbm } }
43
+ x.report("marshal-read ") { READ_TIMES.times { read_marshal } }
44
+ x.report("dbm-read ") { READ_TIMES.times { read_dbm } }
45
+ end
46
+
47
+ File.unlink(MARSHAL_FILE)
48
+ File.unlink(DBM_FILE + ".db")
49
+
50
+ __END__
51
+
52
+ Rehearsal -------------------------------------------------
53
+ marshal-write 0.090000 0.070000 0.160000 ( 0.465820)
54
+ dbm-write 0.560000 0.570000 1.130000 ( 3.045556)
55
+ marshal-read 4.640000 3.180000 7.820000 ( 7.821978)
56
+ dbm-read 0.020000 0.020000 0.040000 ( 0.070920)
57
+ ---------------------------------------- total: 9.150000sec
58
+
59
+ user system total real
60
+ marshal-write 0.080000 0.050000 0.130000 ( 0.436561)
61
+ dbm-write 0.560000 0.550000 1.110000 ( 2.030530)
62
+ marshal-read 4.670000 3.180000 7.850000 ( 7.842232)
63
+ dbm-read 0.010000 0.020000 0.030000 ( 0.053928)
@@ -0,0 +1,46 @@
1
+ require "benchmark"
2
+ require 'yard'
3
+ require 'logger'
4
+
5
+ PATH_ORDER = [
6
+ 'lib/yard/autoload.rb',
7
+ 'lib/yard/code_objects/base.rb',
8
+ 'lib/yard/code_objects/namespace_object.rb',
9
+ 'lib/yard/handlers/base.rb',
10
+ 'lib/yard/generators/helpers/*.rb',
11
+ 'lib/yard/generators/base.rb',
12
+ 'lib/yard/generators/method_listing_generator.rb',
13
+ 'lib/yard/serializers/base.rb',
14
+ 'lib/**/*.rb'
15
+ ]
16
+
17
+ Benchmark.bmbm do |x|
18
+ x.report("parse in order") { YARD::Registry.clear; YARD.parse PATH_ORDER, [], Logger::ERROR }
19
+ x.report("parse") { YARD::Registry.clear; YARD.parse 'lib/**/*.rb', [], Logger::ERROR }
20
+ end
21
+
22
+ =begin
23
+ load_order branch (2008-06-07):
24
+
25
+ Rehearsal --------------------------------------------------
26
+ parse in order 6.510000 0.050000 6.560000 ( 6.563223)
27
+ parse 6.300000 0.040000 6.340000 ( 6.362272)
28
+ ---------------------------------------- total: 12.900000sec
29
+
30
+ user system total real
31
+ parse in order 6.310000 0.060000 6.370000 ( 6.390945)
32
+ parse 6.300000 0.050000 6.350000 ( 6.366709)
33
+
34
+
35
+ api_changes branch before merge (2008-06-07)
36
+
37
+ Rehearsal --------------------------------------------------
38
+ parse in order 6.330000 0.050000 6.380000 ( 6.397552)
39
+ parse 6.380000 0.050000 6.430000 ( 6.446954)
40
+ ---------------------------------------- total: 12.810000sec
41
+
42
+ user system total real
43
+ parse in order 6.320000 0.040000 6.360000 ( 6.394460)
44
+ parse 6.040000 0.040000 6.080000 ( 6.099738)
45
+ =end
46
+
@@ -0,0 +1,50 @@
1
+ require 'pathname'
2
+ require "benchmark"
3
+ require File.dirname(__FILE__) + '/../lib/yard'
4
+
5
+ pathobj = Pathname.new("a/b/c")
6
+ strobj = "a/b/c"
7
+
8
+ TIMES = 1_000
9
+
10
+ log.puts "join:"
11
+ Benchmark.bmbm do |x|
12
+ x.report("pathname") { TIMES.times { Pathname.new("a/b/c").join("d", "e", "f") } }
13
+ x.report("string ") { TIMES.times { File.join("a/b/c", "d", "e", "f") } }
14
+ x.report("pathname-sameobject") { TIMES.times { pathobj.join("d", "e", "f") } }
15
+ x.report("string-sameobject ") { TIMES.times { File.join(strobj, "d", "e", "f") } }
16
+ end
17
+
18
+ log.puts
19
+ log.puts
20
+ log.puts "cleanpath:"
21
+ Benchmark.bmbm do |x|
22
+ x.report("pathname") { TIMES.times { Pathname.new("a/b//.././c").cleanpath } }
23
+ x.report("string ") { TIMES.times { File.cleanpath("a/b//.././c") } }
24
+ end
25
+
26
+ __END__
27
+ join:
28
+ Rehearsal -------------------------------------------------------
29
+ pathname 0.330000 0.020000 0.350000 ( 0.353481)
30
+ string 0.010000 0.000000 0.010000 ( 0.001390)
31
+ pathname-sameobject 0.360000 0.020000 0.380000 ( 0.384473)
32
+ string-sameobject 0.000000 0.000000 0.000000 ( 0.001187)
33
+ ---------------------------------------------- total: 0.740000sec
34
+
35
+ user system total real
36
+ pathname 0.330000 0.020000 0.350000 ( 0.350820)
37
+ string 0.000000 0.000000 0.000000 ( 0.001055)
38
+ pathname-sameobject 0.330000 0.010000 0.340000 ( 0.346949)
39
+ string-sameobject 0.000000 0.000000 0.000000 ( 0.001141)
40
+
41
+
42
+ cleanpath:
43
+ Rehearsal --------------------------------------------
44
+ pathname 0.060000 0.000000 0.060000 ( 0.059767)
45
+ string 0.010000 0.000000 0.010000 ( 0.013775)
46
+ ----------------------------------- total: 0.070000sec
47
+
48
+ user system total real
49
+ pathname 0.060000 0.000000 0.060000 ( 0.059697)
50
+ string 0.020000 0.000000 0.020000 ( 0.013624)
@@ -0,0 +1,10 @@
1
+ require "benchmark"
2
+
3
+ files = Dir.glob(File.dirname(__FILE__) + '/../lib/**/*.rb').join(" ")
4
+ Benchmark.bmbm do |x|
5
+ x.report("rdoc") { `rm -rf rdoc && rdoc -q -o rdoc #{files} && rm -rf rdoc` }
6
+ x.report("yardoc") { `rm -rf yard && ./bin/yardoc -q -o yard #{files} && rm -rf yard` }
7
+ x.report("yardoc-cached") { `rm -rf yard && ./bin/yardoc -c -q -o yard #{files} && rm -rf yard` }
8
+ x.report("yardoc-legacy") { `rm -rf yard && ./bin/yardoc --legacy -q -o yard #{files} && rm -rf yard` }
9
+ x.report("yardoc-legacy-cached") { `rm -rf yard && ./bin/yardoc --legacy -c -q -o yard #{files} && rm -rf yard` }
10
+ end
@@ -0,0 +1,48 @@
1
+ require 'benchmark'
2
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'yard')
3
+
4
+ def parse_and_select_objects
5
+ YARD::Registry.load_yardoc(File.join(File.dirname(__FILE__), '..', '.yardoc'))
6
+ YARD::Registry.load_all
7
+ $paths = []
8
+ 4.times { $paths << YARD::Registry.paths[rand(YARD::Registry.paths.size)] }
9
+
10
+ $regular_registry = {}
11
+ $types_registry = {}
12
+ YARD::Registry.all.each do |object|
13
+ $regular_registry[object.path] = object
14
+ ($types_registry[object.type] ||= {})[object.path] = object
15
+ end
16
+ end
17
+
18
+ def run_lookup
19
+ $paths.select {|path| $regular_registry[path] }
20
+ end
21
+
22
+ def run_lookup_with_types
23
+ $paths.select {|path| $types_registry.values.find {|list| list[path] } }
24
+ end
25
+
26
+ TIMES = 100_000
27
+
28
+ parse_and_select_objects
29
+ p $paths
30
+ Benchmark.bmbm do |x|
31
+ x.report("normal") { TIMES.times { run_lookup } }
32
+ x.report("types") { TIMES.times { run_lookup_with_types } }
33
+ end
34
+
35
+ __END__
36
+ # Run on March 22 2012
37
+ ["YARD::Parser::Ruby::Legacy::RubyToken::TkUnknownChar#initialize",
38
+ "YARD::Parser::C::CParser#enumerator",
39
+ "YARD::CodeObjects::ClassObject#inherited_meths",
40
+ "YARD::Parser::C::Statement#source="]
41
+ Rehearsal ----------------------------------------------
42
+ normal 0.180000 0.000000 0.180000 ( 0.182640)
43
+ types 1.150000 0.010000 1.160000 ( 1.160219)
44
+ ------------------------------------- total: 1.340000sec
45
+
46
+ user system total real
47
+ normal 0.170000 0.000000 0.170000 ( 0.165621)
48
+ types 1.140000 0.000000 1.140000 ( 1.142269)
@@ -0,0 +1,18 @@
1
+ require "benchmark"
2
+
3
+ TIMES = 10
4
+ Benchmark.bmbm do |x|
5
+ x.report("ri") { TIMES.times { `ri -T YARD::Tags::Library` } }
6
+ x.report("yri") { TIMES.times { `./bin/yri -T YARD::Tags::Library` } }
7
+ end
8
+
9
+ __END__
10
+
11
+ Rehearsal ---------------------------------------
12
+ ri 0.000000 0.020000 6.880000 ( 6.929591)
13
+ yri 0.000000 0.000000 1.060000 ( 1.074840)
14
+ ------------------------------ total: 7.940000sec
15
+
16
+ user system total real
17
+ ri 0.000000 0.020000 6.850000 ( 6.871660)
18
+ yri 0.000000 0.010000 1.060000 ( 1.067585)
@@ -0,0 +1,12 @@
1
+ # encoding: utf-8
2
+ require 'benchmark'
3
+ require File.dirname(__FILE__) + '/../lib/yard'
4
+
5
+ $files = Dir[File.dirname(__FILE__) + '/../lib/**/*.rb'].map {|f| File.read(f) }
6
+ $files_rip = Dir[File.dirname(__FILE__) + '/../lib/**/*.rb'].map {|f| [File.read(f), f] }
7
+
8
+ TIMES = 2
9
+ Benchmark.bmbm do |x|
10
+ x.report("rip-parser") { TIMES.times { $files_rip.each {|f| YARD::Parser::Ruby::RubyParser.parse(*f) } } }
11
+ x.report("yard-parser ") { TIMES.times { $files.each {|f| YARD::Parser::Ruby::Legacy::StatementList.new(f) } } }
12
+ end
@@ -0,0 +1,12 @@
1
+ require "benchmark"
2
+
3
+ # To prove that flattening a small list is not significantly slower than
4
+ # calling *list (used to get around create_tag list issue)
5
+ $a = "FOO BAR BAZ"
6
+ def foo(*args) args.last.inspect end
7
+
8
+ TESTS = 10_000
9
+ Benchmark.bmbm do |x|
10
+ x.report("splat") { TESTS.times { foo *$a } }
11
+ x.report("flatten") { TESTS.times { foo *[$a].flatten } }
12
+ end
@@ -0,0 +1,22 @@
1
+ require "benchmark"
2
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'yard')
3
+
4
+ YARD::Registry.load_yardoc(File.join(File.dirname(__FILE__), '..', '.yardoc'))
5
+ obj = YARD::Registry.at("YARD::CodeObjects::Base")
6
+
7
+ TIMES = 3
8
+ Benchmark.bm do |x|
9
+ x.report("trim-line") { TIMES.times { obj.format(:format => :html) } }
10
+ module YARD
11
+ module Templates
12
+ module Template
13
+ def erb(section, &block)
14
+ erb = ERB.new(cache(section), nil)
15
+ erb.filename = cache_filename(section).to_s
16
+ erb.result(binding, &block)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ x.report("no-trim ") { TIMES.times { obj.format(:format => :html) } }
22
+ end
@@ -0,0 +1,6 @@
1
+ require "benchmark"
2
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'yard')
3
+
4
+ YARD::Registry.load_yardoc(File.join(File.dirname(__FILE__), '..', '.yardoc'))
5
+ obj = YARD::Registry.at("YARD::CodeObjects::Base")
6
+ log.puts Benchmark.measure { obj.format(:format => :html) }
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ require 'ruby-prof'
3
+ #require 'benchmark'
4
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'yard')
5
+
6
+ YARD::Registry.load_yardoc(File.join(File.dirname(__FILE__), '..', '.yardoc'))
7
+ obj = YARD::Registry.at("YARD::CodeObjects::Base")
8
+
9
+ #PerfTools::CpuProfiler.start("template_profile") do
10
+ #end
11
+
12
+ result = RubyProf.profile do
13
+ obj.format(:format => :html, :no_highlight => true)
14
+ end
15
+
16
+ printer = RubyProf::CallTreePrinter.new(result)
17
+ printer.print(STDOUT)
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + "/../lib/yard"
2
+ require "benchmark"
3
+ include YARD::CLI
4
+
5
+ class YARD::CLI::YRI
6
+ def print_object(object) end
7
+ end
8
+
9
+ def remove_cache
10
+ File.unlink(YRI::CACHE_FILE)
11
+ end
12
+
13
+ TIMES = 10
14
+ NAME = 'YARD'
15
+ remove_cache; YRI.run(NAME)
16
+ Benchmark.bmbm do |x|
17
+ x.report("cache ") { TIMES.times { YRI.run(NAME) } }
18
+ x.report("no-cache") { TIMES.times { remove_cache; YRI.run(NAME) } }
19
+ end
data/bin/yard ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # We do all this work just to find the proper load path
4
+ path = __FILE__
5
+ while File.symlink?(path)
6
+ path = File.expand_path(File.readlink(path), File.dirname(path))
7
+ end
8
+ $:.unshift(File.join(File.dirname(File.expand_path(path)), '..', 'lib'))
9
+
10
+ require 'yard'
11
+
12
+ YARD::CLI::CommandParser.run(*ARGV)
data/bin/yardoc ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # We do all this work just to find the proper load path
4
+ path = __FILE__
5
+ while File.symlink?(path)
6
+ path = File.expand_path(File.readlink(path), File.dirname(path))
7
+ end
8
+ $:.unshift(File.join(File.dirname(File.expand_path(path)), '..', 'lib'))
9
+
10
+ require 'yard'
11
+
12
+ YARD::CLI::Yardoc.run(*ARGV)
data/bin/yri ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # We do all this work just to find the proper load path
4
+ path = __FILE__
5
+ while File.symlink?(path)
6
+ path = File.expand_path(File.readlink(path), File.dirname(path))
7
+ end
8
+ $:.unshift(File.join(File.dirname(File.expand_path(path)), '..', 'lib'))
9
+
10
+ require 'yard'
11
+
12
+ YARD::CLI::YRI.run(*ARGV)
@@ -0,0 +1,115 @@
1
+ # @title CodeObjects Architecture
2
+
3
+ # CodeObjects Architecture
4
+
5
+ Code objects are Ruby objects that describe the code being documented. For instance,
6
+ all classes, modules, methods, etc. are all extracted from the Ruby source as code
7
+ objects. All of these code objects extend from the {YARD::CodeObjects::Base} class, which
8
+ provides basic attributes like source location, source code, name and path.
9
+
10
+ ## CodeObjects Organization
11
+
12
+ Code objects are divided into two basic types. {YARD::CodeObjects::NamespaceObject NamespaceObjects}
13
+ and non-namespace objects. A namespace object refers to any object in Ruby that can have
14
+ other objects defined inside of it. In the context of Ruby, this specifically means
15
+ modules and classes (both of which are subclasses of `NamespaceObject`). These objects
16
+ act like tree structures, maintaining a list of all of their direct children. All non
17
+ namespace objects are simply subclasses of the Base class. The {YARD::CodeObjects::RootObject RootObject}
18
+ is a special kind of `NamespaceObject` which refers to the top level namespace in Ruby.
19
+ Methods that accept a namespace object as a parameter should also accept the symbol
20
+ `:root` as a shortcut for the root object.
21
+
22
+ The following is an overview of the classes within the `CodeObjects` namespace:
23
+
24
+ ![CodeObjects Class Diagram](images/code-objects-class-diagram.png)
25
+
26
+ ## Unique Path Representation
27
+
28
+ All CodeObjects are uniquely defined by their implementation of {YARD::CodeObjects::Base#path}.
29
+ This path is used to locate or store a code object in the {YARD::Registry}. It is therefore
30
+ essential that any Base subclass return a unique String value for #path so that the
31
+ object may co-exist with other objects in the Registry.
32
+
33
+ In practice, a path is simply the conventional Ruby representation of a class,
34
+ module, constant, class variable or method. For example, the following objects
35
+ would have the following respective paths:
36
+
37
+ * Class `Klass` inside module `Mod`: `Mod::Klass`
38
+ * Instance method `bar` inside class `Foo`: `Foo#bar`
39
+ * Class method `bar` inside class `Foo`: `Foo.bar`
40
+ * Constant `VERSION` inside class `YARD`: `YARD::VERSION`
41
+ * Class variable `@@abc` inside class `A`: `A::@@abc`
42
+
43
+ ## Registry
44
+
45
+ CodeObjects classes are coupled with the {YARD::Registry} class which keeps track of
46
+ all instantiated code objects. This is an explicit design choice to allow objects
47
+ to be fetched, cached, imported and exported from a centralized location. As mentioned
48
+ above, this coupling is a result of the fact that each object is uniquely identified by
49
+ its path, which is used to implement lookups. You can read more about the registry
50
+ in the {YARD::Registry} class.
51
+
52
+ ## Identity Map
53
+
54
+ Code objects are instantiated using an identity-map like implementation that guarantees
55
+ only one unique Ruby object exists for an object described by a specific path. This
56
+ allows developers to create a code object without checking if it already exists in
57
+ the {YARD::Registry}. The following example will only create one object:
58
+
59
+ id = ClassObject.new(:root, "MyClass").object_id #=> 13352
60
+ ClassObject.new(:root, "MyClass").object_id #=> 13352
61
+
62
+ ## Proxy Objects
63
+
64
+ In addition to providing access to existing objects, a {YARD::CodeObjects::Proxy}
65
+ class exists which can represent an object at a path that may or may not have been
66
+ created. This is necessary to represent a reference to an object in code that is
67
+ never defined in the same body of source code, or perhaps defined later. If any
68
+ attributes of a proxy are accessed, it will immediately be resolved to the object
69
+ at its declared path. In the case where such an object exists, it will act as
70
+ a delegate to the object. However, if the object does not exist, a warning will
71
+ be raised. Whenever arbitrary code objects are used, care should be taken in
72
+ order to make sure attributes are not accessed on unresolvable proxies. An
73
+ unresolvable proxy will return a class name of `Proxy` and #type of `:proxy`,
74
+ for example:
75
+
76
+ P(:InvalidObject).type == :proxy #=> true
77
+ P(:InvalidObject).is_a?(Proxy) #=> true
78
+
79
+ ## Adding Data to Code Objects
80
+
81
+ Code objects act as hash-like structures that allow any arbitrary value to be set.
82
+ This allows easy extending of existing objects without creating custom subclasses.
83
+ For instance, to add a timestamp to a method object (when it was modified, maybe),
84
+ it is possible to simply do:
85
+
86
+ object = MethodObject.new(:root, "my_method")
87
+ object[:modified_at] = Time.now
88
+
89
+ This value can now be retrieved on this object both by the hash `[]` syntax as
90
+ well as like any other method:
91
+
92
+ object.modified_at #=> 2009-06-03 20:08:46 -0400
93
+
94
+ ## Creating a Custom CodeObject
95
+
96
+ It should first be mentioned that creating a custom code object should not be
97
+ necessary in most cases, except when functionality that cannot be represented
98
+ by classical Ruby objects is added. A good example *might* be a test class,
99
+ which although is technically a Ruby class, has a significantly different purpose
100
+ in documentation and needs a different set of metadata, as well as its own
101
+ representation in documentation.
102
+
103
+ The {YARD::CodeObjects::Base#path} implementation is the most important part of the
104
+ code object architecture. The first thing any custom code object must guarantee is
105
+ that its path value is unique among all other objects. The recommended way to do this
106
+ with custom objects is to add a descriptive prefix to the path. For example, the
107
+ following is an implementation of the path for a hypothetical `FooObject`:
108
+
109
+ def path
110
+ "__FooPrefix" + sep + super
111
+ end
112
+
113
+ Note that if our FooObject is a `NamespaceObject`, meaning if it can have child
114
+ FooObjects defined inside of it, you may need to verify that the prefix is only
115
+ applied once.