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,225 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::CodeObjects::ClassObject do
4
+ describe '#inheritance_tree' do
5
+ before(:all) do
6
+ Registry.clear
7
+ @mixin = ModuleObject.new(:root, :SomeMixin)
8
+ @mixin2 = ModuleObject.new(:root, :SomeMixin2)
9
+ @mixin2.instance_mixins << @mixin
10
+ @mixin3 = ModuleObject.new(:root, :SomeMixin3)
11
+ @mixin4 = ModuleObject.new(:root, :SomeMixin4)
12
+ @mixin2.instance_mixins << @mixin3
13
+ @superyard = ClassObject.new(:root, :SuperYard)
14
+ @superyard.superclass = P("String")
15
+ @superyard.instance_mixins << @mixin2
16
+ @superyard.class_mixins << @mixin4
17
+ @yard = ClassObject.new(:root, :YARD)
18
+ @yard.superclass = @superyard
19
+ @yard.instance_mixins << @mixin
20
+ end
21
+
22
+ it "should show the proper inheritance tree" do
23
+ @yard.inheritance_tree.should == [@yard, @superyard, P(:String)]
24
+ end
25
+
26
+ it "should show proper inheritance tree when mixins are included" do
27
+ @yard.inheritance_tree(true).should == [@yard, @mixin, @superyard, @mixin4, @mixin2, @mixin3, P(:String)]
28
+ end
29
+
30
+ it "should not modify the object's mixin list when mixins are included" do
31
+ @class1 = ClassObject.new(:root, :A)
32
+ @class2 = ClassObject.new(:root, :B)
33
+ @class2.superclass = @class1
34
+
35
+ @class2.inheritance_tree(true)
36
+ @class2.mixins.should == []
37
+ end
38
+
39
+ it "should list class mixins in inheritance tree" do
40
+ mod = ModuleObject.new(:root, :ClassMethods)
41
+ klass = ClassObject.new(:root, :ReceivingClass)
42
+ klass.class_mixins << mod
43
+ klass.inheritance_tree(true).should == [klass, mod]
44
+ end
45
+ end
46
+
47
+ describe "#meths / #inherited_meths" do
48
+ before(:all) do
49
+ Registry.clear
50
+
51
+ YARD.parse_string <<-eof
52
+ class SuperYard < String
53
+ def foo; end
54
+ def foo2; end
55
+ def bar; end
56
+ def middle; end
57
+ protected :foo2
58
+ private
59
+ def self.bar; end
60
+ end
61
+
62
+ class MiddleYard < SuperYard
63
+ def middle; end
64
+ end
65
+
66
+ class YARD < MiddleYard
67
+ def mymethod; end
68
+ def bar; end
69
+ end
70
+
71
+ module IncludedYard
72
+ def foo; end
73
+ end
74
+
75
+ class FinalYard < SuperYard
76
+ include IncludedYard
77
+ end
78
+ eof
79
+ end
80
+
81
+ it "should show inherited methods by default" do
82
+ meths = P(:YARD).meths
83
+ meths.should include(P("YARD#mymethod"))
84
+ meths.should include(P("SuperYard#foo"))
85
+ meths.should include(P("SuperYard#foo2"))
86
+ meths.should include(P("SuperYard.bar"))
87
+ end
88
+
89
+ it "should allow :inherited to be set to false" do
90
+ meths = P(:YARD).meths(:inherited => false)
91
+ meths.should include(P("YARD#mymethod"))
92
+ meths.should_not include(P("SuperYard#foo"))
93
+ meths.should_not include(P("SuperYard#foo2"))
94
+ meths.should_not include(P("SuperYard.bar"))
95
+ end
96
+
97
+ it "should not show overridden methods" do
98
+ meths = P(:YARD).meths
99
+ meths.should include(P("YARD#bar"))
100
+ meths.should_not include(P("SuperYard#bar"))
101
+
102
+ meths = P(:YARD).inherited_meths
103
+ meths.should_not include(P("YARD#bar"))
104
+ meths.should_not include(P("YARD#mymethod"))
105
+ meths.should include(P("SuperYard#foo"))
106
+ meths.should include(P("SuperYard#foo2"))
107
+ meths.should include(P("SuperYard.bar"))
108
+ end
109
+
110
+ it "should not show inherited methods overridden by other subclasses" do
111
+ meths = P(:YARD).inherited_meths
112
+ meths.should include(P('MiddleYard#middle'))
113
+ meths.should_not include(P('SuperYard#middle'))
114
+ end
115
+
116
+ it "should show mixed in methods before superclass method" do
117
+ meths = P(:FinalYard).meths
118
+ meths.should include(P('IncludedYard#foo'))
119
+ meths.should_not include(P('SuperYard#foo'))
120
+ end
121
+ end
122
+
123
+ describe "#constants / #inherited_constants" do
124
+ before(:all) do
125
+ Registry.clear
126
+
127
+ Parser::SourceParser.parse_string <<-eof
128
+ class YARD
129
+ CONST1 = 1
130
+ CONST2 = "hello"
131
+ CONST4 = 0
132
+ end
133
+
134
+ class SUPERYARD < YARD
135
+ CONST4 = 5
136
+ end
137
+
138
+ class SubYard < SUPERYARD
139
+ CONST2 = "hi"
140
+ CONST3 = "foo"
141
+ end
142
+ eof
143
+ end
144
+
145
+ it "should list inherited constants by default" do
146
+ consts = P(:SubYard).constants
147
+ consts.should include(P("YARD::CONST1"))
148
+ consts.should include(P("SubYard::CONST3"))
149
+
150
+ consts = P(:SubYard).inherited_constants
151
+ consts.should include(P("YARD::CONST1"))
152
+ consts.should_not include(P("YARD::CONST2"))
153
+ consts.should_not include(P("SubYard::CONST2"))
154
+ consts.should_not include(P("SubYard::CONST3"))
155
+ end
156
+
157
+ it "should not list inherited constants if turned off" do
158
+ consts = P(:SubYard).constants(:inherited => false)
159
+ consts.should_not include(P("YARD::CONST1"))
160
+ consts.should include(P("SubYard::CONST3"))
161
+ end
162
+
163
+ it "should not include an inherited constant if it is overridden by the object" do
164
+ consts = P(:SubYard).constants
165
+ consts.should include(P("SubYard::CONST2"))
166
+ consts.should_not include(P("YARD::CONST2"))
167
+ end
168
+
169
+ it "should not include an inherited constant if it is overridden by another subclass" do
170
+ consts = P(:SubYard).inherited_constants
171
+ consts.should include(P("SUPERYARD::CONST4"))
172
+ consts.should_not include(P("YARD::CONST4"))
173
+ end
174
+
175
+ it "should not set a superclass on BasicObject class" do
176
+ o = ClassObject.new(:root, :Object)
177
+ o.superclass.should == P(:BasicObject)
178
+ end
179
+
180
+ it "should set superclass of Object to BasicObject" do
181
+ o = ClassObject.new(:root, :BasicObject)
182
+ o.superclass.should be_nil
183
+ end
184
+
185
+ it "should raise ArgumentError if superclass == self" do
186
+ lambda do
187
+ o = ClassObject.new(:root, :Object) do |o|
188
+ o.superclass = :Object
189
+ end
190
+ end.should raise_error(ArgumentError)
191
+ end
192
+
193
+ it "should tell the world if it is an exception class" do
194
+ o = ClassObject.new(:root, :MyClass)
195
+ o2 = ClassObject.new(:root, :OtherClass)
196
+ o2.superclass = :SystemCallError
197
+ o3 = ClassObject.new(:root, :StandardError)
198
+ o3.superclass = :Object
199
+ o4 = ClassObject.new(:root, :Object)
200
+
201
+ o.superclass = :Object
202
+ o.is_exception?.should == false
203
+
204
+ o.superclass = :Exception
205
+ o.is_exception?.should == true
206
+
207
+ o.superclass = :NoMethodError
208
+ o.is_exception?.should == true
209
+
210
+ o.superclass = o2
211
+ o.is_exception?.should == true
212
+
213
+ o.superclass = o3
214
+ o.is_exception?.should == true
215
+ end
216
+
217
+ it "should not raise ArgumentError if superclass is proxy in different namespace" do
218
+ lambda do
219
+ o = ClassObject.new(:root, :X) do |o|
220
+ o.superclass = P('OTHER::X')
221
+ end
222
+ end.should_not raise_error(ArgumentError)
223
+ end
224
+ end
225
+ end
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::CodeObjects::CodeObjectList do
4
+ before { Registry.clear }
5
+
6
+ it "pushing a value should only allow CodeObjects::Base, String or Symbol" do
7
+ list = CodeObjectList.new(nil)
8
+ lambda { list.push(:hash => 1) }.should raise_error(ArgumentError)
9
+ list << "Test"
10
+ list << :Test2
11
+ list << ModuleObject.new(nil, :YARD)
12
+ list.size.should == 3
13
+ end
14
+
15
+ it "added value should be a proxy if parameter was String or Symbol" do
16
+ list = CodeObjectList.new(nil)
17
+ list << "Test"
18
+ list.first.class.should == Proxy
19
+ end
20
+
21
+ it "should contain a unique list of objects" do
22
+ obj = ModuleObject.new(nil, :YARD)
23
+ list = CodeObjectList.new(nil)
24
+
25
+ list << P(:YARD)
26
+ list << obj
27
+ list.size.should == 1
28
+
29
+ list << :Test
30
+ list << "Test"
31
+ list.size.should == 2
32
+ end
33
+ end
@@ -0,0 +1,82 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::CodeObjects, "CONSTANTMATCH" do
4
+ it "should match a constant" do
5
+ "Constant"[CodeObjects::CONSTANTMATCH].should == "Constant"
6
+ "identifier"[CodeObjects::CONSTANTMATCH].should be_nil
7
+ "File.new"[CodeObjects::CONSTANTMATCH].should == "File"
8
+ end
9
+ end
10
+
11
+ describe YARD::CodeObjects, "NAMESPACEMATCH" do
12
+ it "should match a namespace (multiple constants with ::)" do
13
+ "Constant"[CodeObjects::NAMESPACEMATCH].should == "Constant"
14
+ "A::B::C.new"[CodeObjects::NAMESPACEMATCH].should == "A::B::C"
15
+ end
16
+ end
17
+
18
+ describe YARD::CodeObjects, "METHODNAMEMATCH" do
19
+ it "should match a method name" do
20
+ "method"[CodeObjects::METHODNAMEMATCH].should == "method"
21
+ "[]()"[CodeObjects::METHODNAMEMATCH].should == "[]"
22
+ "-@"[CodeObjects::METHODNAMEMATCH].should == "-@"
23
+ "method?"[CodeObjects::METHODNAMEMATCH].should == "method?"
24
+ "method!!"[CodeObjects::METHODNAMEMATCH].should == "method!"
25
+ end
26
+ end
27
+
28
+ describe YARD::CodeObjects, "METHODMATCH" do
29
+ it "should match a full class method path" do
30
+ "method"[CodeObjects::METHODMATCH].should == "method"
31
+ "A::B::C.method?"[CodeObjects::METHODMATCH].should == "A::B::C.method?"
32
+ "A::B::C :: method"[CodeObjects::METHODMATCH].should == "A::B::C :: method"
33
+ "SomeClass . method"[CodeObjects::METHODMATCH].should == "SomeClass . method"
34
+ end
35
+
36
+ it "should match self.method" do
37
+ "self :: method!"[CodeObjects::METHODMATCH].should == "self :: method!"
38
+ "self.is_a?"[CodeObjects::METHODMATCH].should == "self.is_a?"
39
+ end
40
+ end
41
+
42
+ describe YARD::CodeObjects, "BUILTIN_EXCEPTIONS" do
43
+ it "should include all base exceptions" do
44
+ YARD::CodeObjects::BUILTIN_EXCEPTIONS.each do |name|
45
+ eval(name).should <= Exception
46
+ end
47
+ end
48
+ end
49
+
50
+ describe YARD::CodeObjects, "BUILTIN_CLASSES" do
51
+ it "should include all base classes" do
52
+ YARD::CodeObjects::BUILTIN_CLASSES.each do |name|
53
+ next if name == "MatchingData" && !defined?(::MatchingData)
54
+ next if name == "Continuation"
55
+ eval(name).should be_instance_of(Class)
56
+ end
57
+ end
58
+
59
+ it "should include all exceptions" do
60
+ YARD::CodeObjects::BUILTIN_EXCEPTIONS.each do |name|
61
+ YARD::CodeObjects::BUILTIN_CLASSES.should include(name)
62
+ end
63
+ end
64
+ end
65
+
66
+ describe YARD::CodeObjects, "BUILTIN_ALL" do
67
+ it "should include classes modules and exceptions" do
68
+ a = YARD::CodeObjects::BUILTIN_ALL
69
+ b = YARD::CodeObjects::BUILTIN_CLASSES
70
+ c = YARD::CodeObjects::BUILTIN_MODULES
71
+ a.should == b+c
72
+ end
73
+ end
74
+
75
+ describe YARD::CodeObjects, "BUILTIN_MODULES" do
76
+ it "should include all base modules" do
77
+ YARD::CodeObjects::BUILTIN_MODULES.each do |name|
78
+ next if YARD.ruby19? && ["Precision"].include?(name)
79
+ eval(name).should be_instance_of(Module)
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,147 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::CodeObjects::ExtraFileObject do
4
+ describe '#initialize' do
5
+ it "should attempt to read contents from filesystem if contents=nil" do
6
+ File.should_receive(:read).with('file.txt').and_return('')
7
+ ExtraFileObject.new('file.txt')
8
+ end
9
+
10
+ it "should raise Errno::ENOENT if contents=nil and file does not exist" do
11
+ lambda { ExtraFileObject.new('file.txt') }.should raise_error(Errno::ENOENT)
12
+ end
13
+
14
+ it "should not attempt to read from disk if contents are provided" do
15
+ ExtraFileObject.new('file.txt', 'CONTENTS')
16
+ end
17
+
18
+ it "should set filename to filename" do
19
+ file = ExtraFileObject.new('a/b/c/file.txt', 'CONTENTS')
20
+ file.filename.should == "a/b/c/file.txt"
21
+ end
22
+
23
+ it "should parse out attributes at top of the file" do
24
+ file = ExtraFileObject.new('file.txt', "# @title X\n# @some_attribute Y\nFOO BAR")
25
+ file.attributes[:title].should == "X"
26
+ file.attributes[:some_attribute].should == "Y"
27
+ file.contents.should == "FOO BAR"
28
+ end
29
+
30
+ it "should allow whitespace prior to '#' marker when parsing attributes" do
31
+ file = ExtraFileObject.new('file.txt', " \t # @title X\nFOO BAR")
32
+ file.attributes[:title].should == "X"
33
+ file.contents.should == "FOO BAR"
34
+ end
35
+
36
+ it "should parse out old-style #!markup shebang format" do
37
+ file = ExtraFileObject.new('file.txt', "#!foobar\nHello")
38
+ file.attributes[:markup].should == "foobar"
39
+ end
40
+
41
+ it "should not parse old-style #!markup if any whitespace is found" do
42
+ file = ExtraFileObject.new('file.txt', " #!foobar\nHello")
43
+ file.attributes[:markup].should be_nil
44
+ file.contents.should == " #!foobar\nHello"
45
+ end
46
+
47
+ it "should not parse out attributes if there are newlines prior to attributes" do
48
+ file = ExtraFileObject.new('file.txt', "\n# @title\nFOO BAR")
49
+ file.attributes.should be_empty
50
+ file.contents.should == "\n# @title\nFOO BAR"
51
+ end
52
+
53
+ it "should set contents to data after attributes" do
54
+ file = ExtraFileObject.new('file.txt', "# @title\nFOO BAR")
55
+ file.contents.should == "FOO BAR"
56
+ end
57
+
58
+ it "should preserve newlines" do
59
+ file = ExtraFileObject.new('file.txt', "FOO\r\nBAR\nBAZ")
60
+ file.contents.should == "FOO\r\nBAR\nBAZ"
61
+ end
62
+
63
+ it "should not include newlines in attribute data" do
64
+ file = ExtraFileObject.new('file.txt', "# @title FooBar\r\nHello world")
65
+ file.attributes[:title].should == "FooBar"
66
+ end
67
+
68
+ it "should force encoding to @encoding attribute if present" do
69
+ log.should_not_receive(:warn)
70
+ data = "# @encoding sjis\nFOO"
71
+ data.force_encoding('binary')
72
+ file = ExtraFileObject.new('file.txt', data)
73
+ ['Shift_JIS', 'Windows-31J'].should include(file.contents.encoding.to_s)
74
+ end if YARD.ruby19?
75
+
76
+ it "should warn if @encoding is invalid" do
77
+ log.should_receive(:warn).with("Invalid encoding `INVALID' in file.txt")
78
+ data = "# @encoding INVALID\nFOO"
79
+ encoding = data.encoding
80
+ file = ExtraFileObject.new('file.txt', data)
81
+ file.contents.encoding.should == encoding
82
+ end if YARD.ruby19?
83
+
84
+ it "should ignore encoding in 1.8.x (or encoding-unaware platforms)" do
85
+ log.should_not_receive(:warn)
86
+ file = ExtraFileObject.new('file.txt', "# @encoding INVALID\nFOO")
87
+ end if YARD.ruby18?
88
+
89
+ it "should attempt to re-parse data as 8bit ascii if parsing fails" do
90
+ log.should_not_receive(:warn)
91
+ str, out = *(["\xB0"] * 2)
92
+ if str.respond_to?(:force_encoding)
93
+ str.force_encoding('utf-8')
94
+ out.force_encoding('binary')
95
+ end
96
+ file = ExtraFileObject.new('file.txt', str)
97
+ file.contents.should == out
98
+ end
99
+ end
100
+
101
+ describe '#name' do
102
+ it "should be set to basename (not extension) of filename" do
103
+ file = ExtraFileObject.new('file.txt', '')
104
+ file.name.should == 'file'
105
+ end
106
+ end
107
+
108
+ describe '#title' do
109
+ it "should return @title attribute if present" do
110
+ file = ExtraFileObject.new('file.txt', '# @title FOO')
111
+ file.title.should == 'FOO'
112
+ end
113
+
114
+ it "should return #name if no @title attribute exists" do
115
+ file = ExtraFileObject.new('file.txt', '')
116
+ file.title.should == 'file'
117
+ end
118
+ end
119
+
120
+ describe '#locale=' do
121
+ it "should translate contents" do
122
+ file = ExtraFileObject.new('file.txt', 'Hello')
123
+ file.locale = 'fr'
124
+ fr_locale = I18n::Locale.new('fr')
125
+ fr_messages = fr_locale.instance_variable_get(:@messages)
126
+ fr_messages["Hello"] = 'Bonjour'
127
+ Registry.should_receive(:locale).with('fr').and_return(fr_locale)
128
+ file.contents.should == 'Bonjour'
129
+ end
130
+ end
131
+
132
+ describe '#==' do
133
+ it "should define equality on filename alone" do
134
+ file1 = ExtraFileObject.new('file.txt', 'A')
135
+ file2 = ExtraFileObject.new('file.txt', 'B')
136
+ file1.should == file2
137
+ file1.should be_eql(file2)
138
+ file1.should be_equal(file2)
139
+
140
+ # Another way to test the equality interface
141
+ a = [file1]
142
+ a |= [file2]
143
+ a.size.should == 1
144
+ end
145
+
146
+ end
147
+ end
@@ -0,0 +1,148 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::CodeObjects::MacroObject do
4
+ before do
5
+ Registry.clear
6
+ end
7
+
8
+ describe '.create' do
9
+ def create(*args) MacroObject.create(*args) end
10
+
11
+ it "should create an object" do
12
+ create('foo', '')
13
+ obj = Registry.at('.macro.foo')
14
+ obj.should_not be_nil
15
+ end
16
+
17
+ it "should use identity map" do
18
+ obj1 = create('foo', '')
19
+ obj2 = create('foo', '')
20
+ obj1.object_id.should == obj2.object_id
21
+ end
22
+
23
+ it "should allow specifying of macro data" do
24
+ obj = create('foo', 'MACRODATA')
25
+ obj.macro_data.should == 'MACRODATA'
26
+ end
27
+
28
+ it "should attach if a method object is provided" do
29
+ obj = create('foo', 'MACRODATA', P('Foo.property'))
30
+ obj.method_object.should == P('Foo.property')
31
+ obj.should be_attached
32
+ end
33
+ end
34
+
35
+ describe '.find' do
36
+ before { MacroObject.create('foo', 'DATA') }
37
+
38
+ it "should search for an object by name" do
39
+ MacroObject.find('foo').macro_data.should == 'DATA'
40
+ end
41
+
42
+ it "should accept Symbol" do
43
+ MacroObject.find(:foo).macro_data.should == 'DATA'
44
+ end
45
+ end
46
+
47
+ describe '.find_or_create' do
48
+ it "should look up name if @!macro is present and find object" do
49
+ macro1 = MacroObject.create('foo', 'FOO')
50
+ macro2 = MacroObject.find_or_create('foo', "a b c")
51
+ macro1.should == macro2
52
+ end
53
+
54
+ it "should create new macro if macro by that name does not exist" do
55
+ MacroObject.find_or_create('foo', "@!method $1")
56
+ MacroObject.find('foo').macro_data.should == "@!method $1"
57
+ end
58
+ end
59
+
60
+ describe '.apply' do
61
+ before do
62
+ @args = %w(foo a b c)
63
+ end
64
+
65
+ def apply(comments)
66
+ MacroObject.apply(comments, @args)
67
+ end
68
+
69
+ it "should only expand macros if @macro is present" do
70
+ apply("$1$2$3").should == "$1$2$3"
71
+ end
72
+
73
+ it "should handle macro text inside block" do
74
+ apply("@!macro\n foo$1$2$3\nfoobaz").should == "fooabc\nfoobaz"
75
+ end
76
+
77
+ it "should append docstring to existing macro" do
78
+ macro = MacroObject.create('name', '$3$2$1')
79
+ result = MacroObject.apply("@!macro name\nfoobar", @args)
80
+ result.should == "cba\nfoobar"
81
+ end
82
+
83
+ it "should use only non macro data if docstring is an existing macro" do
84
+ data = "@!macro name\n $3$2$1\nEXTRA"
85
+ result = MacroObject.apply(data, @args, 'SOURCE')
86
+ result.should == "cba\nEXTRA"
87
+ MacroObject.apply("@!macro name\nFOO", @args).should == "cba\nFOO"
88
+ end
89
+
90
+ it "should create macros if they don't exist" do
91
+ result = MacroObject.apply("@!macro name\n foo!$1", @args, 'SOURCE')
92
+ result.should == "foo!a"
93
+ MacroObject.find('name').macro_data.should == 'foo!$1'
94
+ end
95
+
96
+ it "should keep other tags" do
97
+ apply("@!macro\n foo$1$2$3\n@param name foo\nfoo").should ==
98
+ "fooabc\nfoo\n@param name\n foo"
99
+ end
100
+ end
101
+
102
+ describe '.expand' do
103
+ def expand(comments)
104
+ args = %w(foo a b c)
105
+ full_line = 'foo :bar, :baz'
106
+ MacroObject.expand(comments, args, full_line)
107
+ end
108
+
109
+ it "should allow escaping of macro syntax" do
110
+ expand("$1\\$2$3").should == "a$2c"
111
+ end
112
+
113
+ it "should replace $* with the whole statement" do
114
+ expand("$* ${*}").should == "foo :bar, :baz foo :bar, :baz"
115
+ end
116
+
117
+ it "should replace $0 with method name" do
118
+ expand("$0 ${0}").should == "foo foo"
119
+ end
120
+
121
+ it "should replace all $N values with the Nth argument in the method call" do
122
+ expand("$1$2$3${3}\nfoobar").should == "abcc\nfoobar"
123
+ end
124
+
125
+ it "should replace ${N-M} ranges with N-M arguments (incl. commas)" do
126
+ expand("${1-2}x").should == "a, bx"
127
+ end
128
+
129
+ it "should handle open ended ranges (${N-})" do
130
+ expand("${2-}").should == "b, c"
131
+ end
132
+
133
+ it "should handle negative indexes ($-N)" do
134
+ expand("$-1 ${-2-} ${-2--2}").should == "c b, c b"
135
+ end
136
+
137
+ it "should accept Docstring objects" do
138
+ expand(Docstring.new("$1\n@param name foo")).should == "a\n@param name foo"
139
+ end
140
+ end
141
+
142
+ describe '#expand' do
143
+ it "should expand macro given its data" do
144
+ macro = MacroObject.create_docstring('foo', '$1 $2 THREE!')
145
+ macro.expand(['NAME', 'ONE', 'TWO']).should == "ONE TWO THREE!"
146
+ end
147
+ end
148
+ end