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,87 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ class MyProcCommand < Base
4
+ def initialize(&block) self.class.send(:define_method, :run, &block) end
5
+ end
6
+
7
+ class MyCacheCommand < Base
8
+ def run; cache 'foo' end
9
+ end
10
+
11
+ describe YARD::Server::Commands::Base do
12
+ describe '#cache' do
13
+ before do
14
+ @command = MyCacheCommand.new(:adapter => mock_adapter, :caching => true)
15
+ @command.request = OpenStruct.new
16
+ end
17
+
18
+ it "should not cache if caching == false" do
19
+ File.should_not_receive(:open)
20
+ @command.caching = false
21
+ @command.run
22
+ end
23
+
24
+ it "should require document root to cache" do
25
+ File.should_not_receive(:open)
26
+ @command.adapter.document_root = nil
27
+ @command.run
28
+ end
29
+
30
+ it "should cache to path/to/file.html and create directories" do
31
+ FileUtils.should_receive(:mkdir_p).with('/public/path/to')
32
+ File.should_receive(:open).with('/public/path/to/file.html', anything)
33
+ @command.request.path = '/path/to/file.html'
34
+ @command.run
35
+ end
36
+ end
37
+
38
+ describe '#redirect' do
39
+ it "should return a valid redirection" do
40
+ cmd = MyProcCommand.new { redirect '/foo' }
41
+ cmd.call(mock_request('/foo')).should ==
42
+ [302, {"Content-Type" => "text/html", "Location" => "/foo"}, [""]]
43
+ end
44
+ end
45
+
46
+ describe '#call' do
47
+ it "should handle a NotFoundError and use message as body" do
48
+ cmd = MyProcCommand.new { raise NotFoundError, "hello world" }
49
+ s, h, b = *cmd.call(mock_request('/foo'))
50
+ s.should == 404
51
+ b.should == ["hello world"]
52
+ end
53
+
54
+ it "should not use message as body if not provided in NotFoundError" do
55
+ cmd = MyProcCommand.new { raise NotFoundError }
56
+ s, h, b = *cmd.call(mock_request('/foo'))
57
+ s.should == 404
58
+ b.should == ["Not found: /foo"]
59
+ end
60
+
61
+ it "should handle 404 status code from #run" do
62
+ cmd = MyProcCommand.new { self.status = 404 }
63
+ s, h, b = *cmd.call(mock_request('/foo'))
64
+ s.should == 404
65
+ b.should == ["Not found: /foo"]
66
+ end
67
+
68
+ it "should not override body if status is 404 and body is defined" do
69
+ cmd = MyProcCommand.new { self.body = "foo"; self.status = 404 }
70
+ s, h, b = *cmd.call(mock_request('/bar'))
71
+ s.should == 404
72
+ b.should == ['foo']
73
+ end
74
+
75
+ it "should handle body as Array" do
76
+ cmd = MyProcCommand.new { self.body = ['a', 'b', 'c'] }
77
+ s, h, b = *cmd.call(mock_request('/foo'))
78
+ b.should == %w(a b c)
79
+ end
80
+
81
+ it "should allow headers to be defined" do
82
+ cmd = MyProcCommand.new { self.headers['Foo'] = 'BAR' }
83
+ s, h, b = *cmd.call(mock_request('/foo'))
84
+ h['Foo'].should == 'BAR'
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,39 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+ require 'ostruct'
3
+
4
+ describe YARD::Server::Commands::LibraryCommand do
5
+ before do
6
+ Templates::Engine.stub!(:render)
7
+ Templates::Engine.stub!(:generate)
8
+ YARD.stub!(:parse)
9
+ Registry.stub!(:load)
10
+ Registry.stub!(:save)
11
+
12
+ @cmd = LibraryCommand.new(:adapter => mock_adapter)
13
+ @request = OpenStruct.new(:xhr? => false, :path => "/foo")
14
+ @library = OpenStruct.new(:source_path => '.')
15
+ @cmd.library = @library
16
+ @cmd.stub!(:load_yardoc).and_return(nil)
17
+ end
18
+
19
+ def call
20
+ lambda { @cmd.call(@request) }.should raise_error(NotImplementedError)
21
+ end
22
+
23
+ describe "#call" do
24
+ it "should raise NotImplementedError" do
25
+ call
26
+ end
27
+
28
+ it "should set :rdoc as the default markup in incremental mode" do
29
+ @cmd.incremental = true
30
+ call
31
+ @cmd.options[:markup].should == :rdoc
32
+ end
33
+
34
+ it "should set :rdoc as the default markup in regular mode" do
35
+ call
36
+ @cmd.options[:markup].should == :rdoc
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,84 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe YARD::Server::Commands::StaticFileCommand do
4
+ before do
5
+ adapter = mock_adapter
6
+ adapter.document_root = '/c'
7
+ @cmd = StaticFileCommand.new(:adapter => adapter)
8
+ end
9
+
10
+ describe '#run' do
11
+ def run(path, status = nil, body = nil)
12
+ s, h, b = *@cmd.call(mock_request(path))
13
+ body.should == b.first if body
14
+ status.should == s if status
15
+ [s, h, b]
16
+ end
17
+
18
+ it "should search through document root before static paths" do
19
+ File.should_receive(:exist?).with('/c/path/to/file.txt').ordered.and_return(false)
20
+ StaticFileCommand::STATIC_PATHS.reverse.each do |path|
21
+ File.should_receive(:exist?).with(File.join(path, 'path/to/file.txt')).ordered.and_return(false)
22
+ end
23
+ run '/path/to/file.txt'
24
+ end
25
+
26
+ it "should return file contents if found" do
27
+ tpl = Templates::Engine.template(:default, :fulldoc, :html)
28
+ File.should_receive(:exist?).with('/c/path/to/file.txt').and_return(false)
29
+ tpl.should_receive(:find_file).with('/path/to/file.txt').and_return('/path/to/foo')
30
+ File.should_receive(:read).with('/path/to/foo').and_return('FOO')
31
+ run('/path/to/file.txt', 200, 'FOO')
32
+ end
33
+
34
+ it "should allow registering of new paths and use those before other static paths" do
35
+ Server.register_static_path '/foo'
36
+ path = '/foo/path/to/file.txt'
37
+ File.should_receive(:exist?).with('/c/path/to/file.txt').and_return(false)
38
+ File.should_receive(:exist?).with(path).and_return(true)
39
+ File.should_receive(:read).with(path).and_return('FOO')
40
+ run('/path/to/file.txt', 200, 'FOO')
41
+ end
42
+
43
+ it "should not use registered path before docroot" do
44
+ Server.register_static_path '/foo'
45
+ path = '/foo/path/to/file.txt'
46
+ File.should_receive(:exist?).with('/c/path/to/file.txt').and_return(true)
47
+ File.should_receive(:read).with('/c/path/to/file.txt').and_return('FOO')
48
+ run('/c/path/to/file.txt', 200, 'FOO')
49
+ end
50
+
51
+ it "should return 404 if not found" do
52
+ File.should_receive(:exist?).with('/c/path/to/file.txt').ordered.and_return(false)
53
+ StaticFileCommand::STATIC_PATHS.reverse.each do |path|
54
+ File.should_receive(:exist?).with(File.join(path, 'path/to/file.txt')).ordered.and_return(false)
55
+ end
56
+ run('/path/to/file.txt', 404)
57
+ end
58
+
59
+ it "should return text/html for file with no extension" do
60
+ File.should_receive(:exist?).with('/c/file').and_return(true)
61
+ File.should_receive(:read).with('/c/file')
62
+ s, h, b = *run('/file')
63
+ h['Content-Type'].should == 'text/html'
64
+ end
65
+
66
+ {
67
+ "js" => "text/javascript",
68
+ "css" => "text/css",
69
+ "png" => "image/png",
70
+ "gif" => "image/gif",
71
+ "htm" => "text/html",
72
+ "html" => "text/html",
73
+ "txt" => "text/plain",
74
+ "unknown" => "application/octet-stream"
75
+ }.each do |ext, mime|
76
+ it "should serve file.#{ext} as #{mime}" do
77
+ File.should_receive(:exist?).with('/c/file.' + ext).and_return(true)
78
+ File.should_receive(:read).with('/c/file.' + ext)
79
+ s, h, b = *run('/file.' + ext)
80
+ h['Content-Type'].should == mime
81
+ end
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__) + "/spec_helper"
2
+
3
+ class MyDocServerSerializerRouter
4
+ attr_accessor :request
5
+ def docs_prefix; 'PREFIX' end
6
+ def initialize; @request = mock_request end
7
+ end
8
+
9
+ class MockDocServerHelper
10
+ include YARD::Templates::Helpers::BaseHelper
11
+ include YARD::Templates::Helpers::HtmlHelper
12
+ include YARD::Server::DocServerHelper
13
+
14
+ attr_accessor :adapter
15
+ attr_accessor :single_library
16
+ attr_accessor :library
17
+
18
+ def initialize
19
+ @single_library = false
20
+ @library = LibraryVersion.new('foo')
21
+ @adapter = mock_adapter(:router => MyDocServerSerializerRouter.new)
22
+ @serializer = YARD::Server::DocServerSerializer.new
23
+ @object = YARD::Registry.root
24
+ end
25
+
26
+ def options; OpenStruct.new end
27
+ end
28
+
29
+ describe YARD::Server::DocServerHelper do
30
+ before do
31
+ @helper = MockDocServerHelper.new
32
+ end
33
+
34
+ describe '#url_for' do
35
+ it "should not link to /library/ if single_library = true" do
36
+ @helper.single_library = true
37
+ @helper.url_for(Registry.root).should == "/PREFIX/toplevel"
38
+ end
39
+
40
+ it "should return /PREFIX/foo/version if foo has a version" do
41
+ @helper.library = LibraryVersion.new('foo', 'bar')
42
+ @helper.adapter.router.request.version_supplied = true
43
+ @helper.url_for(P('A')).should == '/PREFIX/foo/bar/A'
44
+ end
45
+ end
46
+
47
+ describe '#url_for_file' do
48
+ it "should properly link file objects using file/ prefix" do
49
+ file = CodeObjects::ExtraFileObject.new('a/b/FooBar.md', '')
50
+ @helper.url_for_file(file).should == '/PREFIX/foo/file/a/b/FooBar.md'
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,45 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::Server::DocServerSerializer do
4
+ describe '#serialized_path' do
5
+ before do
6
+ Registry.clear
7
+ @serializer = Server::DocServerSerializer.new
8
+ end
9
+
10
+ after(:all) { Server::Adapter.shutdown }
11
+
12
+ it "should return '/PREFIX/library/toplevel' for root" do
13
+ @serializer.serialized_path(Registry.root).should == "toplevel"
14
+ end
15
+
16
+ it "should return /PREFIX/library/Object for Object in a library" do
17
+ @serializer.serialized_path(P('A::B::C')).should == 'A/B/C'
18
+ end
19
+
20
+ it "should link to instance method as Class:method" do
21
+ obj = CodeObjects::MethodObject.new(:root, :method)
22
+ @serializer.serialized_path(obj).should == 'toplevel:method'
23
+ end
24
+
25
+ it "should link to class method as Class.method" do
26
+ obj = CodeObjects::MethodObject.new(:root, :method, :class)
27
+ @serializer.serialized_path(obj).should == 'toplevel.method'
28
+ end
29
+
30
+ it "should link to anchor for constant" do
31
+ obj = CodeObjects::ConstantObject.new(:root, :FOO)
32
+ @serializer.serialized_path(obj).should == 'toplevel#FOO-constant'
33
+ end
34
+
35
+ it "should link to anchor for class variable" do
36
+ obj = CodeObjects::ClassVariableObject.new(:root, :@@foo)
37
+ @serializer.serialized_path(obj).should == 'toplevel#@@foo-classvariable'
38
+ end
39
+
40
+ it "should link files using file/ prefix" do
41
+ file = CodeObjects::ExtraFileObject.new('a/b/FooBar.md', '')
42
+ @serializer.serialized_path(file).should == 'file/FooBar'
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,20 @@
1
+ require File.dirname(__FILE__) + "/spec_helper"
2
+
3
+ describe "YARD::Server::RackMiddleware" do
4
+ before do
5
+ begin; require 'rack'; rescue LoadError; pending "rack required for these tests" end
6
+ @superapp = mock(:superapp)
7
+ @app = YARD::Server::RackMiddleware.new(@superapp, :libraries => {'foo' => [LibraryVersion.new('foo', nil)]})
8
+ end
9
+
10
+ after(:all) { YARD::Server::Adapter.shutdown }
11
+
12
+ it "should handle requests" do
13
+ @app.call(Rack::MockRequest.env_for('/'))[0].should == 200
14
+ end
15
+
16
+ it "should pass up to the next middleware on 404" do
17
+ @superapp.should_receive(:call).and_return([200, {}, ['OK']])
18
+ @app.call(Rack::MockRequest.env_for('/INVALID')).should == [200, {}, ['OK']]
19
+ end
20
+ end
@@ -0,0 +1,122 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ class MyRouterSpecRouter < Router
4
+ def docs_prefix; 'mydocs/foo' end
5
+ def list_prefix; 'mylist/foo' end
6
+ def search_prefix; 'mysearch/foo' end
7
+
8
+ def check_static_cache; nil end
9
+ end
10
+
11
+ describe YARD::Server::Router do
12
+ before do
13
+ @adapter = mock_adapter
14
+ @projects = @adapter.libraries['project']
15
+ @request = mock_request
16
+ end
17
+
18
+ describe '#parse_library_from_path' do
19
+ def parse(*args)
20
+ @request.path = '/' + args.join('/')
21
+ @router = MyRouterSpecRouter.new(@adapter)
22
+ @router.request = @request
23
+ @router.parse_library_from_path(args.flatten)
24
+ end
25
+
26
+ it "should parse library and version name out of path" do
27
+ parse('project', '1.0.0').should == [@projects[0], []]
28
+ @request.version_supplied.should be_true
29
+ end
30
+
31
+ it "should parse library and use latest version if version is not supplied" do
32
+ parse('project').should == [@projects[1], []]
33
+ @request.version_supplied.should be_false
34
+ end
35
+
36
+ it "should parse library and use latest version if next component is not a version" do
37
+ parse('project', 'notaversion').should == [@projects[1], ['notaversion']]
38
+ @request.version_supplied.should be_false
39
+ end
40
+
41
+ it "should return nil library if no library is found" do
42
+ parse('notproject').should == [nil, ['notproject']]
43
+ end
44
+
45
+ it "should not parse library or version if single_library == true" do
46
+ @adapter.stub!(:options).and_return(:single_library => true)
47
+ parse('notproject').should == [@projects[0], ['notproject']]
48
+ end
49
+ end
50
+
51
+ describe '#route' do
52
+ def route_to(route, command, *args)
53
+ req = mock_request(route)
54
+ router = MyRouterSpecRouter.new(@adapter)
55
+ command.should_receive(:new).and_return do |*args|
56
+ @command = command.allocate
57
+ @command.send(:initialize, *args)
58
+ class << @command; def call(req); self end end
59
+ @command
60
+ end
61
+ router.call(req)
62
+ end
63
+
64
+ it "should route /docs/OBJECT to object if single_library = true" do
65
+ @adapter.stub!(:options).and_return(:single_library => true)
66
+ route_to('/mydocs/foo/FOO', DisplayObjectCommand)
67
+ end
68
+
69
+ it "should route /docs" do
70
+ route_to('/mydocs/foo', LibraryIndexCommand)
71
+ end
72
+
73
+ it "should route /docs as index for library if single_library == true" do
74
+ @adapter.stub!(:options).and_return(:single_library => true)
75
+ route_to('/mydocs/foo/', DisplayObjectCommand)
76
+ end
77
+
78
+ it "should route /docs/name/version" do
79
+ route_to('/mydocs/foo/project/1.0.0', DisplayObjectCommand)
80
+ @command.library.should == @projects[0]
81
+ end
82
+
83
+ it "should route /docs/name/ to latest version of library" do
84
+ route_to('/mydocs/foo/project', DisplayObjectCommand)
85
+ @command.library.should == @projects[1]
86
+ end
87
+
88
+ it "should route /list/name/version/class" do
89
+ route_to('/mylist/foo/project/1.0.0/class', ListCommand)
90
+ @command.library.should == @projects[0]
91
+ end
92
+
93
+ it "should route /list/name/version/methods" do
94
+ route_to('/mylist/foo/project/1.0.0/methods', ListCommand)
95
+ @command.library.should == @projects[0]
96
+ end
97
+
98
+ it "should route /list/name/version/files" do
99
+ route_to('/mylist/foo/project/1.0.0/files', ListCommand)
100
+ @command.library.should == @projects[0]
101
+ end
102
+
103
+ it "should route /list/name to latest version of library" do
104
+ route_to('/mylist/foo/project/class', ListCommand)
105
+ @command.library.should == @projects[1]
106
+ end
107
+
108
+ it "should route /search/name/version" do
109
+ route_to('/mysearch/foo/project/1.0.0', SearchCommand)
110
+ @command.library.should == @projects[0]
111
+ end
112
+
113
+ it "should route /search/name to latest version of library" do
114
+ route_to('/mysearch/foo/project', SearchCommand)
115
+ @command.library.should == @projects[1]
116
+ end
117
+
118
+ it "should search static files for non-existent library" do
119
+ route_to('/mydocs/foo/notproject', StaticFileCommand)
120
+ end
121
+ end
122
+ end
@@ -0,0 +1,17 @@
1
+ require File.dirname(__FILE__) + "/../spec_helper"
2
+ require 'ostruct'
3
+
4
+ include Server
5
+ include Commands
6
+
7
+ def mock_adapter(opts = {})
8
+ opts[:libraries] ||= {'project' => [LibraryVersion.new('project', '1.0.0'), LibraryVersion.new('project', '1.0.1')]}
9
+ opts[:document_root] ||= '/public'
10
+ opts[:options] ||= {:single_library => false, :caching => false}
11
+ opts[:server_options] ||= {}
12
+ OpenStruct.new(opts)
13
+ end
14
+
15
+ def mock_request(path = '/')
16
+ OpenStruct.new(:path => path)
17
+ end
@@ -0,0 +1,39 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::Server::StaticCaching do
4
+ include StaticCaching
5
+
6
+ describe '#check_static_cache' do
7
+ def adapter; @adapter ||= mock_adapter end
8
+ def request; @request ||= OpenStruct.new end
9
+
10
+ it "should return nil if document root is not set" do
11
+ adapter.document_root = nil
12
+ check_static_cache.should be_nil
13
+ end
14
+
15
+ it "should read a file from document root if path matches file on system" do
16
+ request.path = '/hello/world.html'
17
+ File.should_receive(:file?).with('/public/hello/world.html').and_return(true)
18
+ File.should_receive(:open).with('/public/hello/world.html', anything).and_return('body')
19
+ s, h, b = *check_static_cache
20
+ s.should == 200
21
+ b.should == ["body"]
22
+ end
23
+
24
+ it "should read a file if path matches file on system + .html" do
25
+ request.path = '/hello/world'
26
+ File.should_receive(:file?).with('/public/hello/world.html').and_return(true)
27
+ File.should_receive(:open).with('/public/hello/world.html', anything).and_return('body')
28
+ s, h, b = *check_static_cache
29
+ s.should == 200
30
+ b.should == ["body"]
31
+ end
32
+
33
+ it "should return nil if no matching file is found" do
34
+ request.path = '/hello/foo'
35
+ File.should_receive(:file?).with('/public/hello/foo.html').and_return(false)
36
+ check_static_cache.should == nil
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,20 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::Server::WebrickServlet do
4
+ describe '#do_GET' do
5
+ it "should perform a GET" do
6
+ resp = OpenStruct.new
7
+ class << resp
8
+ def []=(name, value) (self.headers ||= {})[name] = value end
9
+ end
10
+ server = mock(:server)
11
+ server.stub!(:[])
12
+ adapter = mock_adapter
13
+ adapter.router = proc { [200, {'Header' => 'foo'}, ['body']]}
14
+ WebrickServlet.new(server, adapter).do_GET(mock_request('/foo'), resp)
15
+ resp.status.should == 200
16
+ resp.headers.should == {'Header' => 'foo'}
17
+ resp.body.should == 'body'
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,10 @@
1
+ require File.dirname(__FILE__) + "/spec_helper"
2
+
3
+ describe YARD::Server do
4
+ describe '.register_static_path' do
5
+ it "should register a static path" do
6
+ YARD::Server.register_static_path 'foo'
7
+ YARD::Server::Commands::StaticFileCommand::STATIC_PATHS.last.should == "foo"
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,128 @@
1
+ require "rubygems"
2
+ begin
3
+ require "rspec"
4
+ rescue LoadError
5
+ require "spec"
6
+ end
7
+
8
+ begin
9
+ require 'bundler'
10
+ Bundler.setup
11
+ rescue LoadError
12
+ end
13
+
14
+ begin
15
+ require 'simplecov'
16
+ SimpleCov.start
17
+ # TODO: hide some rb files from cov report
18
+ # hide = '_spec\.rb$,spec_helper\.rb$,ruby_lex\.rb$,autoload\.rb$'
19
+ # if YARD::Parser::SourceParser.parser_type == :ruby
20
+ # hide += ',legacy\/.+_handler'
21
+ # else
22
+ # hide += ',ruby_parser\.rb$,ast_node\.rb$,handlers\/ruby\/[^\/]+\.rb$'
23
+ # end
24
+ rescue LoadError
25
+ end if ENV['COVERAGE']
26
+
27
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'yard'))
28
+
29
+ unless defined?(HAVE_RIPPER)
30
+ begin require 'ripper'; rescue LoadError; end
31
+ HAVE_RIPPER = defined?(::Ripper) && !ENV['LEGACY'] ? true : false
32
+ LEGACY_PARSER = !HAVE_RIPPER
33
+
34
+ class YARD::Parser::SourceParser
35
+ def self.parser_type; :ruby18 end
36
+ end if ENV['LEGACY']
37
+ end
38
+
39
+ def parse_file(file, thisfile = __FILE__, log_level = log.level, ext = '.rb.txt')
40
+ Registry.clear
41
+ path = File.join(File.dirname(thisfile), 'examples', file.to_s + ext)
42
+ YARD::Parser::SourceParser.parse(path, [], log_level)
43
+ end
44
+
45
+ def described_in_docs(klass, meth, file = nil)
46
+ YARD::Tags::Library.define_tag "RSpec Specification", :it, :with_raw_title_and_text
47
+
48
+ # Parse the file (could be multiple files)
49
+ if file
50
+ filename = File.join(YARD::ROOT, file)
51
+ YARD::Parser::SourceParser.new.parse(filename)
52
+ else
53
+ underscore = klass.class_name.gsub(/([a-z])([A-Z])/, '\1_\2').downcase.gsub('::', '/')
54
+ $".find_all {|p| p.include? underscore }.each do |filename|
55
+ next unless File.exist? filename
56
+ YARD::Parser::SourceParser.new.parse(filename)
57
+ end
58
+ end
59
+
60
+ # Get the object
61
+ objname = klass.name + (meth[0,1] == '#' ? meth : '::' + meth)
62
+ obj = Registry.at(objname)
63
+ raise "Cannot find object #{objname} described by spec." unless obj
64
+ raise "#{obj.path} has no @it tags to spec." unless obj.has_tag? :it
65
+
66
+ # Run examples
67
+ describe(klass, meth) do
68
+ obj.tags(:it).each do |it|
69
+ path = File.relative_path(YARD::ROOT, obj.file)
70
+ it(it.name + " (from #{path}:#{obj.line})") do
71
+ begin
72
+ eval(it.text)
73
+ rescue => e
74
+ e.set_backtrace(["#{path}:#{obj.line}:in @it tag specification"])
75
+ raise e
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+
82
+ def docspec(objname = self.class.description, klass = self.class.described_type)
83
+ # Parse the file (could be multiple files)
84
+ underscore = klass.class_name.gsub(/([a-z])([A-Z])/, '\1_\2').downcase.gsub('::', '/')
85
+ $".find_all {|p| p.include? underscore }.each do |filename|
86
+ filename = File.join(YARD::ROOT, filename)
87
+ next unless File.exist? filename
88
+ YARD::Parser::SourceParser.new.parse(filename)
89
+ end
90
+
91
+ # Get the object
92
+ objname = klass.name + objname if objname =~ /^[^A-Z]/
93
+ obj = Registry.at(objname)
94
+ raise "Cannot find object #{objname} described by spec." unless obj
95
+ raise "#{obj.path} has no @example tags to spec." unless obj.has_tag? :example
96
+
97
+ # Run examples
98
+ obj.tags(:example).each do |exs|
99
+ exs.text.split(/\n/).each do |ex|
100
+ begin
101
+ hash = eval("{ #{ex} }")
102
+ hash.keys.first.should == hash.values.first
103
+ rescue => e
104
+ raise e, "#{e.message}\nInvalid spec example in #{objname}:\n\n\t#{ex}\n"
105
+ end
106
+ end
107
+ end
108
+ end
109
+
110
+ module Kernel
111
+ require 'cgi'
112
+
113
+ def p(*args)
114
+ puts args.map {|arg| CGI.escapeHTML(arg.inspect) }.join("<br/>\n")
115
+ args.first
116
+ end
117
+
118
+ def puts(str = '')
119
+ STDOUT.puts str + "<br/>\n"
120
+ str
121
+ end
122
+ end if ENV['TM_APP_PATH']
123
+
124
+ RSpec.configure do |config|
125
+ config.before(:each) { log.io = StringIO.new }
126
+ end
127
+
128
+ include YARD