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,136 @@
1
+ module YARD
2
+ module CLI
3
+ # CLI command to view or edit configuration options
4
+ # @since 0.6.2
5
+ class Config < Command
6
+ # @return [Symbol, nil] the key to view/edit, if any
7
+ attr_accessor :key
8
+
9
+ # @return [Array, nil] the list of values to set (or single value), if modifying
10
+ attr_accessor :values
11
+
12
+ # @return [Boolean] whether to reset the {#key}
13
+ attr_accessor :reset
14
+
15
+ # @return [Boolean] whether the value being set should be inside a list
16
+ attr_accessor :as_list
17
+
18
+ # @return [Boolean] whether to append values to existing key
19
+ attr_accessor :append
20
+
21
+ def initialize
22
+ super
23
+ self.key = nil
24
+ self.values = []
25
+ self.reset = false
26
+ self.append = false
27
+ self.as_list = false
28
+ end
29
+
30
+ def description
31
+ 'Views or edits current global configuration'
32
+ end
33
+
34
+ def run(*args)
35
+ optparse(*args)
36
+ if key
37
+ if reset || values.size > 0
38
+ modify_item
39
+ else
40
+ view_item
41
+ end
42
+ else
43
+ list_configuration
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def modify_item
50
+ if reset
51
+ log.debug "Resetting #{key}"
52
+ YARD::Config.options[key] = YARD::Config::DEFAULT_CONFIG_OPTIONS[key]
53
+ else
54
+ log.debug "Setting #{key} to #{values.inspect}"
55
+ items, current_items = encode_values, YARD::Config.options[key]
56
+ items = [current_items].flatten + [items].flatten if append
57
+ YARD::Config.options[key] = items
58
+ end
59
+ YARD::Config.save
60
+ end
61
+
62
+ def view_item
63
+ log.debug "Viewing #{key}"
64
+ log.puts YARD::Config.options[key].inspect
65
+ end
66
+
67
+ def list_configuration
68
+ log.debug "Listing configuration"
69
+ require 'yaml'
70
+ log.puts YAML.dump(YARD::Config.options).sub(/\A--.*\n/, '').gsub(/\n\n/, "\n")
71
+ end
72
+
73
+ def encode_values
74
+ if values.size == 1 && !as_list
75
+ encode_value(values.first)
76
+ else
77
+ values.map {|v| encode_value(v) }
78
+ end
79
+ end
80
+
81
+ def encode_value(value)
82
+ case value
83
+ when /^-?\d+/; value.to_i
84
+ when "true"; true
85
+ when "false"; false
86
+ else value
87
+ end
88
+ end
89
+
90
+ def optparse(*args)
91
+ list = false
92
+ self.as_list = false
93
+ self.append = false
94
+ opts = OptionParser.new
95
+ opts.banner = "Usage: yard config [options] [item [value ...]]"
96
+ opts.separator ""
97
+ opts.separator "Example: yard config load_plugins true"
98
+ opts.separator ""
99
+ opts.separator "Views and sets configuration items. If an item is provided"
100
+ opts.separator "With no value, the item is viewed. If a value is provided,"
101
+ opts.separator "the item is modified. Specifying no item is equivalent to --list."
102
+ opts.separator "If you specify multiple space delimited values, these are"
103
+ opts.separator "parsed as an array of values."
104
+ opts.separator ""
105
+ opts.separator "Note that `true` and `false` are reserved words."
106
+ opts.separator ""
107
+ opts.separator "General options:"
108
+
109
+ opts.on('-l', '--list', 'List current configuration') do
110
+ list = true
111
+ end
112
+ opts.on('-r', '--reset', 'Resets the specific item to default') do
113
+ self.reset = true
114
+ end
115
+
116
+ opts.separator ""
117
+ opts.separator "Modifying keys:"
118
+
119
+ opts.on('-a', '--append', 'Appends items to existing key values') do
120
+ self.append = true
121
+ end
122
+ opts.on('--as-list', 'Forces the value(s) to be wrapped in an array') do
123
+ self.as_list = true
124
+ end
125
+
126
+ common_options(opts)
127
+ parse_options(opts, args)
128
+ args = [] if list
129
+ self.key = args.shift.to_sym if args.size >= 1
130
+ self.values = args if args.size >= 1
131
+ args
132
+ end
133
+
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,270 @@
1
+ require 'tmpdir'
2
+ require 'fileutils'
3
+ require 'open-uri'
4
+
5
+ module YARD
6
+ module CLI
7
+ # CLI command to return the objects that were added/removed from 2 versions
8
+ # of a project (library, gem, working copy).
9
+ # @since 0.6.0
10
+ class Diff < Command
11
+ def initialize
12
+ super
13
+ @list_all = false
14
+ @use_git = false
15
+ @compact = false
16
+ @modified = true
17
+ @verifier = Verifier.new
18
+ @old_git_commit = nil
19
+ @old_path = Dir.pwd
20
+ log.show_backtraces = true
21
+ end
22
+
23
+ def description
24
+ 'Returns the object diff of two gems or .yardoc files'
25
+ end
26
+
27
+ def run(*args)
28
+ registry = optparse(*args).map do |gemfile|
29
+ if @use_git
30
+ load_git_commit(gemfile)
31
+ all_objects
32
+ else
33
+ if load_gem_data(gemfile)
34
+ log.info "Found #{gemfile}"
35
+ all_objects
36
+ else
37
+ log.error "Cannot find gem #{gemfile}"
38
+ nil
39
+ end
40
+ end
41
+ end.compact
42
+
43
+ return if registry.size != 2
44
+
45
+ first_object = nil
46
+ [ ["Added objects", "A", added_objects(*registry)],
47
+ ["Modified objects", "M", modified_objects(*registry)],
48
+ ["Removed objects", "D", removed_objects(*registry)]].each do |name, short, objects|
49
+ next if short == "M" && @modified == false
50
+ next if objects.empty?
51
+ last_object = nil
52
+ all_objects_notice = false
53
+ log.puts name + ":" unless @compact
54
+ objects.sort_by {|o| o.path }.each do |object|
55
+ if !@list_all && last_object && object.parent == last_object
56
+ log.print " (...)" unless all_objects_notice
57
+ all_objects_notice = true
58
+ next
59
+ elsif @compact
60
+ log.puts if first_object
61
+ else
62
+ log.puts
63
+ end
64
+ all_objects_notice = false
65
+ log.print "" + (@compact ? "#{short} " : " ") +
66
+ object.path + " (#{object.file}:#{object.line})"
67
+ last_object = object
68
+ first_object = true
69
+ end
70
+ unless @compact
71
+ log.puts; log.puts
72
+ end
73
+ end
74
+ log.puts if @compact
75
+ end
76
+
77
+ private
78
+
79
+ def all_objects
80
+ return Registry.all if @verifier.expressions.empty?
81
+ @verifier.run(Registry.all)
82
+ end
83
+
84
+ def added_objects(registry1, registry2)
85
+ registry2.reject {|o| registry1.find {|o2| o2.path == o.path } }
86
+ end
87
+
88
+ def modified_objects(registry1, registry2)
89
+ registry1.select do |obj|
90
+ case obj
91
+ when CodeObjects::MethodObject
92
+ registry2.find {|o| obj == o && o.source != obj.source }
93
+ when CodeObjects::ConstantObject
94
+ registry2.find {|o| obj == o && o.value != obj.value }
95
+ end
96
+ end.compact
97
+ end
98
+
99
+ def removed_objects(registry1, registry2)
100
+ registry1.reject {|o| registry2.find {|o2| o2.path == o.path } }
101
+ end
102
+
103
+ def load_git_commit(commit)
104
+ Registry.clear
105
+ commit_path = 'git_commit' + commit.gsub(/\W/, '_')
106
+ tmpdir = File.join(Dir.tmpdir, commit_path)
107
+ log.info "Expanding #{commit} to #{tmpdir}..."
108
+ Dir.chdir(@old_path)
109
+ FileUtils.mkdir_p(tmpdir)
110
+ FileUtils.cp_r('.', tmpdir)
111
+ Dir.chdir(tmpdir)
112
+ log.info("git says: " + `git reset --hard #{commit}`.chomp)
113
+ generate_yardoc(tmpdir)
114
+ ensure
115
+ Dir.chdir(@old_path)
116
+ cleanup(commit_path)
117
+ end
118
+
119
+ def load_gem_data(gemfile)
120
+ require_rubygems
121
+ Registry.clear
122
+
123
+ # First check for argument as .yardoc file
124
+ [File.join(gemfile, '.yardoc'), gemfile].each do |yardoc|
125
+ log.info "Searching for .yardoc db at #{yardoc}"
126
+ if File.directory?(yardoc)
127
+ Registry.load_yardoc(yardoc)
128
+ Registry.load_all
129
+ return true
130
+ end
131
+ end
132
+
133
+ # Next check installed RubyGems
134
+ gemfile_without_ext = gemfile.sub(/\.gem$/, '')
135
+ log.info "Searching for installed gem #{gemfile_without_ext}"
136
+ Gem.source_index.find_name('').find do |spec|
137
+ if spec.full_name == gemfile_without_ext
138
+ if yardoc = Registry.yardoc_file_for_gem(spec.name, "= #{spec.version}")
139
+ Registry.load_yardoc(yardoc)
140
+ Registry.load_all
141
+ else
142
+ log.enter_level(Logger::ERROR) do
143
+ olddir = Dir.pwd
144
+ Gems.run(spec.name, spec.version.to_s)
145
+ Dir.chdir(olddir)
146
+ end
147
+ end
148
+ return true
149
+ end
150
+ end
151
+
152
+ # Look for local .gem file
153
+ gemfile += '.gem' unless gemfile =~ /\.gem$/
154
+ log.info "Searching for local gem file #{gemfile}"
155
+ if File.exist?(gemfile)
156
+ File.open(gemfile, 'rb') do |io|
157
+ expand_and_parse(gemfile, io)
158
+ end
159
+ return true
160
+ end
161
+
162
+ # Remote gemfile from rubygems.org
163
+ url = "http://rubygems.org/downloads/#{gemfile}"
164
+ log.info "Searching for remote gem file #{url}"
165
+ begin
166
+ open(url) {|io| expand_and_parse(gemfile, io) }
167
+ return true
168
+ rescue OpenURI::HTTPError
169
+ end
170
+ false
171
+ end
172
+
173
+ def expand_and_parse(gemfile, io)
174
+ dir = expand_gem(gemfile, io)
175
+ generate_yardoc(dir)
176
+ cleanup(gemfile)
177
+ end
178
+
179
+ def generate_yardoc(dir)
180
+ olddir = Dir.pwd
181
+ Dir.chdir(dir) do
182
+ log.enter_level(Logger::ERROR) { Yardoc.run('-n', '--no-save') }
183
+ end
184
+ end
185
+
186
+ def expand_gem(gemfile, io)
187
+ tmpdir = File.join(Dir.tmpdir, gemfile)
188
+ FileUtils.mkdir_p(tmpdir)
189
+ log.info "Expanding #{gemfile} to #{tmpdir}..."
190
+
191
+ if Gem::VERSION >= '2.0.0'
192
+ require 'rubygems/package/tar_reader'
193
+ reader = Gem::Package::TarReader.new(io)
194
+ reader.each do |pkg|
195
+ if pkg.full_name == 'data.tar.gz'
196
+ Zlib::GzipReader.wrap(pkg) do |gzio|
197
+ tar = Gem::Package::TarReader.new(gzio)
198
+ tar.each do |entry|
199
+ mode = entry.header.mode
200
+ file = File.join(tmpdir, entry.full_name)
201
+ FileUtils.mkdir_p(File.dirname(file))
202
+ File.open(file, 'wb') do |out|
203
+ out.write(entry.read)
204
+ out.fsync rescue nil
205
+ end
206
+ end
207
+ end
208
+ break
209
+ end
210
+ end
211
+ else
212
+ Gem::Package.open(io) do |pkg|
213
+ pkg.each do |entry|
214
+ pkg.extract_entry(tmpdir, entry)
215
+ end
216
+ end
217
+ end
218
+
219
+ tmpdir
220
+ end
221
+
222
+ def require_rubygems
223
+ require 'rubygems'
224
+ require 'rubygems/package'
225
+ rescue LoadError => e
226
+ log.error "Missing RubyGems, cannot run this command."
227
+ raise(e)
228
+ end
229
+
230
+ def cleanup(gemfile)
231
+ dir = File.join(Dir.tmpdir, gemfile)
232
+ log.info "Cleaning up #{dir}..."
233
+ FileUtils.rm_rf(dir)
234
+ end
235
+
236
+ def optparse(*args)
237
+ opts = OptionParser.new
238
+ opts.banner = "Usage: yard diff [options] oldgem newgem"
239
+ opts.separator ""
240
+ opts.separator "Example: yard diff yard-0.5.6 yard-0.5.8"
241
+ opts.separator ""
242
+ opts.separator "If the files don't exist locally, they will be grabbed using the `gem fetch`"
243
+ opts.separator "command. If the gem is a .yardoc directory, it will be used. Finally, if the"
244
+ opts.separator "gem name matches an installed gem (full name-version syntax), that gem will be used."
245
+
246
+ opts.on('-a', '--all', 'List all objects, even if they are inside added/removed module/class') do
247
+ @list_all = true
248
+ end
249
+ opts.on('--compact', 'Show compact results') { @compact = true }
250
+ opts.on('--git', 'Compare versions from two git commit/branches') do
251
+ @use_git = true
252
+ end
253
+ opts.on('--query QUERY', 'Only diff filtered objects') do |query|
254
+ @verifier.add_expressions(query)
255
+ end
256
+ opts.on('--no-modified', 'Ignore modified objects') do
257
+ @modified = false
258
+ end
259
+ common_options(opts)
260
+ parse_options(opts, args)
261
+ unless args.size == 2
262
+ log.puts opts.banner
263
+ exit(0)
264
+ end
265
+
266
+ args
267
+ end
268
+ end
269
+ end
270
+ end
@@ -0,0 +1,68 @@
1
+ module YARD
2
+ module CLI
3
+ # Display one object
4
+ # @since 0.8.6
5
+ class Display < Yardoc
6
+ def description; 'Displays a formatted object' end
7
+
8
+ def initialize(*args)
9
+ super
10
+ options.format = :text # default for this command
11
+ @layout = nil
12
+ @objects = []
13
+ end
14
+
15
+ # Runs the commandline utility, parsing arguments and displaying an object
16
+ # from the {Registry}.
17
+ #
18
+ # @param [Array<String>] args the list of arguments.
19
+ # @return [void]
20
+ def run(*args)
21
+ return unless parse_arguments(*args)
22
+ log.puts wrap_layout(format_objects)
23
+ end
24
+
25
+ # @return [String] the output data for all formatted objects
26
+ def format_objects
27
+ @objects.inject([]) do |arr, obj|
28
+ arr.push obj.format(options)
29
+ end.join("\n")
30
+ end
31
+
32
+ def wrap_layout(contents)
33
+ return contents unless @layout
34
+ opts = options.merge(
35
+ :contents => contents,
36
+ :object => @objects.first,
37
+ :objects => @objects
38
+ )
39
+ args = [options.template, @layout, options.format]
40
+ Templates::Engine.template(*args).run(opts)
41
+ end
42
+
43
+ # Parses commandline options.
44
+ # @param [Array<String>] args each tokenized argument
45
+ def parse_arguments(*args)
46
+ opts = OptionParser.new
47
+ opts.banner = "Usage: yard display [options] OBJECT [OTHER OBJECTS]"
48
+ general_options(opts)
49
+ output_options(opts)
50
+ parse_options(opts, args)
51
+
52
+ Registry.load
53
+ @objects = args.map {|o| Registry.at(o) }
54
+
55
+ # validation
56
+ return false if @objects.any? {|o| o.nil? }
57
+ verify_markup_options
58
+ end
59
+
60
+ def output_options(opts)
61
+ super(opts)
62
+ opts.on('-l', '--layout [LAYOUT]', 'Wraps output in layout template (good for HTML)') do |layout|
63
+ @layout = layout || 'layout'
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,83 @@
1
+ module YARD
2
+ module CLI
3
+ # @since 0.6.0
4
+ class Gems < Command
5
+ def initialize
6
+ @rebuild = false
7
+ @gems = []
8
+ end
9
+
10
+ def description; "Builds YARD index for gems" end
11
+
12
+ # Runs the commandline utility, parsing arguments and generating
13
+ # YARD indexes for gems.
14
+ #
15
+ # @param [Array<String>] args the list of arguments
16
+ # @return [void]
17
+ def run(*args)
18
+ require 'rubygems'
19
+ optparse(*args)
20
+ build_gems
21
+ end
22
+
23
+ private
24
+
25
+ # Builds .yardoc files for all non-existing gems
26
+ # @param [Array] gems
27
+ def build_gems
28
+ require 'rubygems'
29
+ @gems.each do |spec|
30
+ ver = "= #{spec.version}"
31
+ dir = Registry.yardoc_file_for_gem(spec.name, ver)
32
+ if dir && File.directory?(dir) && !@rebuild
33
+ log.debug "#{spec.name} index already exists at '#{dir}'"
34
+ else
35
+ yfile = Registry.yardoc_file_for_gem(spec.name, ver, true)
36
+ next unless yfile
37
+ next unless File.directory?(spec.full_gem_path)
38
+ Registry.clear
39
+ Dir.chdir(spec.full_gem_path)
40
+ log.info "Building yardoc index for gem: #{spec.full_name}"
41
+ Yardoc.run('--no-stats', '-n', '-b', yfile)
42
+ end
43
+ end
44
+ end
45
+
46
+ def add_gems(gems)
47
+ 0.step(gems.size - 1, 2) do |index|
48
+ gem, ver_require = gems[index], gems[index + 1] || ">= 0"
49
+ specs = Gem.source_index.find_name(gem, ver_require)
50
+ if specs.empty?
51
+ log.warn "#{gem} #{ver_require} could not be found in RubyGems index"
52
+ else
53
+ @gems += specs
54
+ end
55
+ end
56
+ end
57
+
58
+ # Parses options
59
+ def optparse(*args)
60
+ opts = OptionParser.new
61
+ opts.banner = 'Usage: yard gems [options] [gem_name [version]]'
62
+ opts.separator ""
63
+ opts.separator "#{description}. If no gem_name is given,"
64
+ opts.separator "all gems are built."
65
+ opts.separator ""
66
+ opts.on('--rebuild', 'Rebuilds index') do
67
+ @rebuild = true
68
+ end
69
+
70
+ common_options(opts)
71
+ parse_options(opts, args)
72
+ add_gems(args)
73
+
74
+
75
+ if !args.empty? && @gems.empty?
76
+ log.error "No specified gems could be found for command"
77
+ elsif @gems.empty?
78
+ @gems += Gem.source_index.find_name('') if @gems.empty?
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,126 @@
1
+ module YARD
2
+ module CLI
3
+ # Options to pass to the {Graph} CLI.
4
+ class GraphOptions < Templates::TemplateOptions
5
+ # @return [:dot] the default output format
6
+ default_attr :format, :dot
7
+
8
+ # @return [Boolean] whether to list the full class diagram
9
+ attr_accessor :full
10
+
11
+ # @return [Boolean] whether to show the object dependencies
12
+ attr_accessor :dependencies
13
+
14
+ # @return [String] any contents to pass to the digraph
15
+ attr_accessor :contents
16
+ end
17
+
18
+ # A command-line utility to generate Graphviz graphs from
19
+ # a set of objects
20
+ #
21
+ # @see Graph#run
22
+ # @since 0.6.0
23
+ class Graph < YardoptsCommand
24
+ # The options parsed out of the commandline.
25
+ # Default options are:
26
+ # :format => :dot
27
+ attr_reader :options
28
+
29
+ # The set of objects to include in the graph.
30
+ attr_reader :objects
31
+
32
+ # Creates a new instance of the command-line utility
33
+ def initialize
34
+ super
35
+ @use_document_file = false
36
+ @options = GraphOptions.new
37
+ options.reset_defaults
38
+ options.serializer = YARD::Serializers::StdoutSerializer.new
39
+ end
40
+
41
+ def description
42
+ "Graphs class diagram using Graphviz"
43
+ end
44
+
45
+ # Runs the command-line utility.
46
+ #
47
+ # @example
48
+ # grapher = Graph.new
49
+ # grapher.run('--private')
50
+ # @param [Array<String>] args each tokenized argument
51
+ def run(*args)
52
+ parse_arguments(*args)
53
+
54
+ contents = objects.map do |o|
55
+ o.format(options.merge(:serialize => false))
56
+ end.join("\n")
57
+ opts = {:type => :layout, :contents => contents}
58
+ options.update(opts)
59
+ Templates::Engine.render(options)
60
+ end
61
+
62
+ private
63
+
64
+ def unrecognized_option(err) end
65
+
66
+ # Parses commandline options.
67
+ # @param [Array<String>] args each tokenized argument
68
+ def optparse(*args)
69
+ visibilities = [:public]
70
+ opts = OptionParser.new
71
+
72
+ opts.separator ""
73
+ opts.separator "General Options:"
74
+
75
+ opts.on('-b', '--db FILE', 'Use a specified .yardoc db to load from or save to. (defaults to .yardoc)') do |yfile|
76
+ YARD::Registry.yardoc_file = yfile
77
+ end
78
+
79
+ opts.on('--full', 'Full class diagrams (show methods and attributes).') do
80
+ options[:full] = true
81
+ end
82
+
83
+ opts.on('-d', '--dependencies', 'Show mixins in dependency graph.') do
84
+ options[:dependencies] = true
85
+ end
86
+
87
+ opts.on('--no-public', "Don't show public methods. (default shows public)") do
88
+ visibilities.delete(:public)
89
+ end
90
+
91
+ opts.on('--protected', "Show or don't show protected methods. (default hides protected)") do
92
+ visibilities.push(:protected)
93
+ end
94
+
95
+ opts.on('--private', "Show or don't show private methods. (default hides private)") do
96
+ visibilities.push(:private)
97
+ end
98
+
99
+ opts.separator ""
100
+ opts.separator "Output options:"
101
+
102
+ opts.on('--dot [OPTIONS]', 'Send the results directly to `dot` with optional arguments.') do |dotopts|
103
+ options.serializer = Serializers::ProcessSerializer.new('dot ' + dotopts.to_s)
104
+ end
105
+
106
+ opts.on('-f', '--file [FILE]', 'Writes output to a file instead of stdout.') do |file|
107
+ options.serializer = Serializers::FileSystemSerializer.new(:basepath => '.', :extension => nil)
108
+ options.serializer.instance_eval "def serialized_path(object) #{file.inspect} end"
109
+ end
110
+
111
+ common_options(opts)
112
+ parse_options(opts, args)
113
+
114
+ Registry.load
115
+
116
+ expression = "#{visibilities.uniq.inspect}.include?(object.visibility)"
117
+ options.verifier = Verifier.new(expression)
118
+ if args.first
119
+ @objects = args.map {|o| Registry.at(o) }.compact
120
+ else
121
+ @objects = [Registry.root]
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,18 @@
1
+ module YARD
2
+ module CLI
3
+ # Handles help for commands
4
+ # @since 0.6.0
5
+ class Help < Command
6
+ def description; "Retrieves help for a command" end
7
+
8
+ def run(*args)
9
+ if args.first && cmd = CommandParser.commands[args.first.to_sym]
10
+ cmd.run('--help')
11
+ else
12
+ log.puts "Command #{args.first} not found." if args.first
13
+ CommandParser.run('--help')
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end