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,67 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe YARD::I18n::Messages do
4
+ def message(id)
5
+ YARD::I18n::Message.new(id)
6
+ end
7
+
8
+ def messages
9
+ YARD::I18n::Messages.new
10
+ end
11
+
12
+ before do
13
+ @messages = messages
14
+ end
15
+
16
+ describe "#each" do
17
+ it "should enumerate Message" do
18
+ @messages.register("Hello World!")
19
+ @messages.register("Title")
20
+ enumerated_messages = []
21
+ @messages.each do |message|
22
+ enumerated_messages << message
23
+ end
24
+ enumerated_messages = enumerated_messages.sort_by {|m| m.id }
25
+ enumerated_messages.should == [message("Hello World!"), message("Title")]
26
+ end
27
+
28
+ it "should not any Message for empty messages" do
29
+ enumerated_messages = []
30
+ @messages.each do |message|
31
+ enumerated_messages << message
32
+ end
33
+ enumerated_messages.should == []
34
+ end
35
+ end
36
+
37
+ describe "#[]" do
38
+ it "should return registered message" do
39
+ @messages.register("Hello World!")
40
+ @messages["Hello World!"].should == message("Hello World!")
41
+ end
42
+
43
+ it "should return for nonexistent message ID" do
44
+ @messages["Hello World!"].should == nil
45
+ end
46
+ end
47
+
48
+ describe "#register" do
49
+ it "should return registered message" do
50
+ @messages.register("Hello World!").should == message("Hello World!")
51
+ end
52
+
53
+ it "should return existent message" do
54
+ message = @messages.register("Hello World!")
55
+ @messages.register("Hello World!").object_id.should == message.object_id
56
+ end
57
+ end
58
+
59
+ describe "#==" do
60
+ it "should return true for same value messages" do
61
+ @messages.register("Hello World!")
62
+ other_messages = messages
63
+ other_messages.register("Hello World!")
64
+ @messages.should == other_messages
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,262 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe YARD::I18n::PotGenerator do
4
+ def create_messages(messages)
5
+ yard_messages = YARD::I18n::Messages.new
6
+ add_messages(yard_messages, messages)
7
+ yard_messages
8
+ end
9
+
10
+ def add_messages(yard_messages, messages)
11
+ messages.each do |id, properties|
12
+ yard_message = yard_messages.register(id)
13
+ (properties[:locations] || []).each do |path, line|
14
+ yard_message.add_location(path, line)
15
+ end
16
+ (properties[:comments] || []).each do |comment|
17
+ yard_message.add_comment(comment)
18
+ end
19
+ end
20
+ end
21
+
22
+ before do
23
+ @generator = YARD::I18n::PotGenerator.new("..")
24
+ end
25
+
26
+ describe "Generate" do
27
+ it "should generate the default header" do
28
+ @generator.generate.should == <<-'eoh'
29
+ # SOME DESCRIPTIVE TITLE.
30
+ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
31
+ # This file is distributed under the same license as the PACKAGE package.
32
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
33
+ #
34
+ #, fuzzy
35
+ msgid ""
36
+ msgstr ""
37
+ "Project-Id-Version: PACKAGE VERSION\n"
38
+ "Report-Msgid-Bugs-To: \n"
39
+ "POT-Creation-Date: 2011-11-20 22:17+0900\n"
40
+ "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
41
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
42
+ "Language-Team: LANGUAGE <LL@li.org>\n"
43
+ "Language: \n"
44
+ "MIME-Version: 1.0\n"
45
+ "Content-Type: text/plain; charset=UTF-8\n"
46
+ "Content-Transfer-Encoding: 8bit\n"
47
+
48
+ eoh
49
+ end
50
+
51
+ it "should generate messages in location order" do
52
+ @generator.stub!(:header).and_return("HEADER\n\n")
53
+ messages = {
54
+ "tag|see|Parser::SourceParser.parse" => {
55
+ :locations => [["yard.rb", 14]],
56
+ :comments => ["@see"],
57
+ },
58
+ "Parses a path or set of paths" => {
59
+ :locations => [["yard.rb", 12], ["yard/parser/source_parser.rb", 83]],
60
+ :comments => ["YARD.parse", "YARD::Parser::SourceParser.parse"],
61
+ }
62
+ }
63
+ add_messages(@generator.messages, messages)
64
+ @generator.generate.should == <<-'eoh'
65
+ HEADER
66
+
67
+ # YARD.parse
68
+ # YARD::Parser::SourceParser.parse
69
+ #: ../yard.rb:12
70
+ #: ../yard/parser/source_parser.rb:83
71
+ msgid "Parses a path or set of paths"
72
+ msgstr ""
73
+
74
+ # @see
75
+ #: ../yard.rb:14
76
+ msgid "tag|see|Parser::SourceParser.parse"
77
+ msgstr ""
78
+
79
+ eoh
80
+ end
81
+ end
82
+
83
+ describe "Escape" do
84
+ def generate_message_pot(message_id)
85
+ pot = ""
86
+ message = YARD::I18n::Message.new(message_id)
87
+ @generator.send(:generate_message, pot, message)
88
+ pot
89
+ end
90
+
91
+ it "should escape <\\>" do
92
+ generate_message_pot("hello \\ world").should == <<-'eop'
93
+ msgid "hello \\ world"
94
+ msgstr ""
95
+
96
+ eop
97
+ end
98
+
99
+ it "should escape <\">" do
100
+ generate_message_pot("hello \" world").should == <<-'eop'
101
+ msgid "hello \" world"
102
+ msgstr ""
103
+
104
+ eop
105
+ end
106
+
107
+ it "should escape <\\n>" do
108
+ generate_message_pot("hello \n world").should == <<-'eop'
109
+ msgid "hello \n"
110
+ " world"
111
+ msgstr ""
112
+
113
+ eop
114
+ end
115
+ end
116
+
117
+ describe "Object" do
118
+ before do
119
+ Registry.clear
120
+ @yard = YARD::CodeObjects::ModuleObject.new(:root, :YARD)
121
+ end
122
+
123
+ it "should extract docstring" do
124
+ object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
125
+ o.docstring = "An alias to {Parser::SourceParser}'s parsing method"
126
+ end
127
+ @generator.parse_objects([object])
128
+ @generator.messages.should == create_messages({
129
+ "An alias to {Parser::SourceParser}'s parsing method" => {
130
+ :locations => [],
131
+ :comments => ["YARD.parse"],
132
+ }
133
+ })
134
+ end
135
+
136
+ it "should extract location" do
137
+ object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
138
+ o.docstring = "An alias to {Parser::SourceParser}'s parsing method"
139
+ o.files = [["yard.rb", 12]]
140
+ end
141
+ @generator.parse_objects([object])
142
+ @generator.messages.should == create_messages({
143
+ "An alias to {Parser::SourceParser}'s parsing method" => {
144
+ :locations => [["yard.rb", 13]],
145
+ :comments => ["YARD.parse"],
146
+ }
147
+ })
148
+ end
149
+
150
+ it "should extract tag name" do
151
+ object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
152
+ o.docstring = "@see Parser::SourceParser.parse"
153
+ o.files = [["yard.rb", 12]]
154
+ end
155
+ @generator.parse_objects([object])
156
+ @generator.messages.should == create_messages({
157
+ "tag|see|Parser::SourceParser.parse" => {
158
+ :locations => [["yard.rb", 12]],
159
+ :comments => ["@see"],
160
+ },
161
+ })
162
+ end
163
+
164
+ it "should extract tag text" do
165
+ object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
166
+ o.docstring = <<-eod
167
+ @example Parse a glob of files
168
+ YARD.parse('lib/**/*.rb')
169
+ eod
170
+ o.files = [["yard.rb", 12]]
171
+ end
172
+ @generator.parse_objects([object])
173
+ @generator.messages.should == create_messages({
174
+ "tag|example|Parse a glob of files" => {
175
+ :locations => [["yard.rb", 12]],
176
+ :comments => ["@example"],
177
+ },
178
+ "YARD.parse('lib/**/*.rb')" => {
179
+ :locations => [["yard.rb", 12]],
180
+ :comments => ["@example Parse a glob of files"],
181
+ }
182
+ })
183
+ end
184
+
185
+ it "should extract tag types" do
186
+ object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
187
+ o.docstring = <<-eod
188
+ @param [String, Array<String>] paths a path, glob, or list of paths to
189
+ parse
190
+ eod
191
+ o.files = [["yard.rb", 12]]
192
+ end
193
+ @generator.parse_objects([object])
194
+ @generator.messages.should == create_messages({
195
+ "tag|param|paths" => {
196
+ :locations => [["yard.rb", 12]],
197
+ :comments => ["@param [String, Array<String>]"],
198
+ },
199
+ "a path, glob, or list of paths to\nparse" => {
200
+ :locations => [["yard.rb", 12]],
201
+ :comments => ["@param [String, Array<String>] paths"],
202
+ }
203
+ })
204
+ end
205
+ end
206
+
207
+ describe "File" do
208
+ it "should extract attribute" do
209
+ path = "GettingStarted.md"
210
+ text = <<-eor
211
+ # @title Getting Started Guide
212
+
213
+ # Getting Started with YARD
214
+ eor
215
+ File.stub!(:open).with(path).and_yield(StringIO.new(text))
216
+ File.stub!(:read).with(path).and_return(text)
217
+ file = YARD::CodeObjects::ExtraFileObject.new(path)
218
+ @generator.parse_files([file])
219
+ @generator.messages.should == create_messages({
220
+ "Getting Started Guide" => {
221
+ :locations => [[path, 1]],
222
+ :comments => ["title"],
223
+ },
224
+ "# Getting Started with YARD" => {
225
+ :locations => [[path, 3]],
226
+ :comments => [],
227
+ }
228
+ })
229
+ end
230
+
231
+ it "should extract paragraphs" do
232
+ path = "README.md"
233
+ paragraph1 = <<-eop.strip
234
+ Note that class methods must not be referred to with the "::" namespace
235
+ separator. Only modules, classes and constants should use "::".
236
+ eop
237
+ paragraph2 = <<-eop.strip
238
+ You can also do lookups on any installed gems. Just make sure to build the
239
+ .yardoc databases for installed gems with:
240
+ eop
241
+ text = <<-eot
242
+ #{paragraph1}
243
+
244
+ #{paragraph2}
245
+ eot
246
+ File.stub!(:open).with(path).and_yield(StringIO.new(text))
247
+ File.stub!(:read).with(path).and_return(text)
248
+ file = YARD::CodeObjects::ExtraFileObject.new(path)
249
+ @generator.parse_files([file])
250
+ @generator.messages.should == create_messages({
251
+ paragraph1 => {
252
+ :locations => [[path, 1]],
253
+ :comments => [],
254
+ },
255
+ paragraph2 => {
256
+ :locations => [[path, 4]],
257
+ :comments => [],
258
+ }
259
+ })
260
+ end
261
+ end
262
+ end
@@ -0,0 +1,180 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe YARD::I18n::Text do
4
+ describe "#extract_messages" do
5
+ def extract_messages(input, options={})
6
+ text = YARD::I18n::Text.new(StringIO.new(input), options)
7
+ messages = []
8
+ text.extract_messages do |*message|
9
+ messages << message
10
+ end
11
+ messages
12
+ end
13
+
14
+ describe "Header" do
15
+ it "should extract attribute" do
16
+ text = <<-eot
17
+ # @title Getting Started Guide
18
+
19
+ # Getting Started with YARD
20
+ eot
21
+ extract_messages(text, :have_header => true).should ==
22
+ [[:attribute, "title", "Getting Started Guide", 1],
23
+ [:paragraph, "# Getting Started with YARD", 3]]
24
+ end
25
+
26
+ it "should ignore markup line" do
27
+ text = <<-eot
28
+ #!markdown
29
+ # @title Getting Started Guide
30
+
31
+ # Getting Started with YARD
32
+ eot
33
+ extract_messages(text, :have_header => true).should ==
34
+ [[:attribute, "title", "Getting Started Guide", 2],
35
+ [:paragraph, "# Getting Started with YARD", 4]]
36
+ end
37
+
38
+ it "should terminate header block by markup line not at the first line" do
39
+ text = <<-eot
40
+ # @title Getting Started Guide
41
+ #!markdown
42
+
43
+ # Getting Started with YARD
44
+ eot
45
+ extract_messages(text, :have_header => true).should ==
46
+ [[:attribute, "title", "Getting Started Guide", 1],
47
+ [:paragraph, "#!markdown", 2],
48
+ [:paragraph, "# Getting Started with YARD", 4]]
49
+ end
50
+ end
51
+
52
+ describe "Body" do
53
+ it "should split to paragraphs" do
54
+ paragraph1 = <<-eop.strip
55
+ Note that class methods must not be referred to with the "::" namespace
56
+ separator. Only modules, classes and constants should use "::".
57
+ eop
58
+ paragraph2 = <<-eop.strip
59
+ You can also do lookups on any installed gems. Just make sure to build the
60
+ .yardoc databases for installed gems with:
61
+ eop
62
+ text = <<-eot
63
+ #{paragraph1}
64
+
65
+ #{paragraph2}
66
+ eot
67
+ extract_messages(text).should ==
68
+ [[:paragraph, paragraph1, 1],
69
+ [:paragraph, paragraph2, 4]]
70
+ end
71
+ end
72
+ end
73
+
74
+ describe "#translate" do
75
+ def locale
76
+ locale = YARD::I18n::Locale.new("fr")
77
+ messages = locale.instance_variable_get(:@messages)
78
+ messages["markdown"] = "markdown (markdown in fr)"
79
+ messages["Hello"] = "Bonjour (Hello in fr)"
80
+ messages["Paragraph 1."] = "Paragraphe 1."
81
+ messages["Paragraph 2."] = "Paragraphe 2."
82
+ locale
83
+ end
84
+
85
+ def translate(input, options={})
86
+ text = YARD::I18n::Text.new(StringIO.new(input), options)
87
+ text.translate(locale)
88
+ end
89
+
90
+ describe "Header" do
91
+ it "should extract attribute" do
92
+ text = <<-eot
93
+ # @title Hello
94
+
95
+ # Getting Started with YARD
96
+
97
+ Paragraph.
98
+ eot
99
+ translate(text, :have_header => true).should == <<-eot
100
+ # @title Bonjour (Hello in fr)
101
+
102
+ # Getting Started with YARD
103
+
104
+ Paragraph.
105
+ eot
106
+ end
107
+
108
+ it "should ignore markup line" do
109
+ text = <<-eot
110
+ #!markdown
111
+ # @title Hello
112
+
113
+ # Getting Started with YARD
114
+
115
+ Paragraph.
116
+ eot
117
+ translate(text, :have_header => true).should == <<-eot
118
+ #!markdown
119
+ # @title Bonjour (Hello in fr)
120
+
121
+ # Getting Started with YARD
122
+
123
+ Paragraph.
124
+ eot
125
+ end
126
+ end
127
+
128
+ describe "Body" do
129
+ it "should split to paragraphs" do
130
+ paragraph1 = <<-eop.strip
131
+ Paragraph 1.
132
+ eop
133
+ paragraph2 = <<-eop.strip
134
+ Paragraph 2.
135
+ eop
136
+ text = <<-eot
137
+ #{paragraph1}
138
+
139
+ #{paragraph2}
140
+ eot
141
+ translate(text).should == <<-eot
142
+ Paragraphe 1.
143
+
144
+ Paragraphe 2.
145
+ eot
146
+ end
147
+
148
+ it "should not modified non-translated message" do
149
+ nonexistent_paragraph = <<-eop.strip
150
+ Nonexsitent paragraph.
151
+ eop
152
+ text = <<-eot
153
+ #{nonexistent_paragraph}
154
+ eot
155
+ translate(text).should == <<-eot
156
+ #{nonexistent_paragraph}
157
+ eot
158
+ end
159
+
160
+ it "should keep empty lines" do
161
+ text = <<-eot
162
+ Paragraph 1.
163
+
164
+
165
+
166
+
167
+ Paragraph 2.
168
+ eot
169
+ translate(text).should == <<-eot
170
+ Paragraphe 1.
171
+
172
+
173
+
174
+
175
+ Paragraphe 2.
176
+ eot
177
+ end
178
+ end
179
+ end
180
+ end
@@ -0,0 +1,35 @@
1
+ require File.join(File.dirname(__FILE__), "spec_helper")
2
+
3
+ describe YARD::Logger do
4
+ describe '#show_backtraces' do
5
+ it "should be true if debug level is on" do
6
+ log.show_backtraces = true
7
+ log.enter_level(Logger::DEBUG) do
8
+ log.show_backtraces = false
9
+ log.show_backtraces.should == true
10
+ end
11
+ log.show_backtraces.should == false
12
+ end
13
+ end
14
+
15
+ describe '#backtrace' do
16
+ before { log.show_backtraces = true }
17
+ after { log.show_backtraces = false }
18
+
19
+ it "should log backtrace in error by default" do
20
+ log.should_receive(:error).with("RuntimeError: foo")
21
+ log.should_receive(:error).with("Stack trace:\n\tline1\n\tline2\n")
22
+ exc = RuntimeError.new("foo")
23
+ exc.set_backtrace(['line1', 'line2'])
24
+ log.enter_level(Logger::INFO) { log.backtrace(exc) }
25
+ end
26
+
27
+ it "should allow backtrace to be entered in other modes" do
28
+ log.should_receive(:warn).with("RuntimeError: foo")
29
+ log.should_receive(:warn).with("Stack trace:\n\tline1\n\tline2\n")
30
+ exc = RuntimeError.new("foo")
31
+ exc.set_backtrace(['line1', 'line2'])
32
+ log.enter_level(Logger::INFO) { log.backtrace(exc, :warn) }
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,171 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe YARD::Options do
4
+ class FooOptions < YARD::Options
5
+ attr_accessor :foo
6
+ def initialize; self.foo = "abc" end
7
+ end
8
+
9
+ describe '.default_attr' do
10
+ it "should allow default attributes to be defined with symbols" do
11
+ class DefaultOptions1 < YARD::Options
12
+ default_attr :foo, 'HELLO'
13
+ end
14
+ o = DefaultOptions1.new
15
+ o.reset_defaults
16
+ o.foo.should == 'HELLO'
17
+ end
18
+
19
+ it "should call lambda if value is a Proc" do
20
+ class DefaultOptions2 < YARD::Options
21
+ default_attr :foo, lambda { 100 }
22
+ end
23
+ o = DefaultOptions2.new
24
+ o.reset_defaults
25
+ o.foo.should == 100
26
+ end
27
+ end
28
+
29
+ describe '#reset_defaults' do
30
+ it "should not define defaults until reset is called" do
31
+ class ResetDefaultOptions1 < YARD::Options
32
+ default_attr :foo, 'FOO'
33
+ end
34
+ ResetDefaultOptions1.new.foo.should be_nil
35
+ o = ResetDefaultOptions1.new
36
+ o.reset_defaults
37
+ o.foo.should == 'FOO'
38
+ end
39
+
40
+ it "should use defaults from superclass as well" do
41
+ class ResetDefaultOptions2 < YARD::Options
42
+ default_attr :foo, 'FOO'
43
+ end
44
+ class ResetDefaultOptions3 < ResetDefaultOptions2
45
+ end
46
+ o = ResetDefaultOptions3.new
47
+ o.reset_defaults
48
+ o.foo.should == 'FOO'
49
+ end
50
+ end
51
+
52
+ describe '#delete' do
53
+ it "should delete an option" do
54
+ o = FooOptions.new
55
+ o.delete(:foo)
56
+ o.to_hash.should == {}
57
+ end
58
+
59
+ it "should not error if an option is deleted that does not exist" do
60
+ o = FooOptions.new
61
+ o.delete(:foo)
62
+ o.delete(:foo)
63
+ o.to_hash.should == {}
64
+ end
65
+ end
66
+
67
+ describe '#[]' do
68
+ it "should handle getting option values using hash syntax" do
69
+ FooOptions.new[:foo].should == "abc"
70
+ end
71
+ end
72
+
73
+ describe '#[]=' do
74
+ it "should handle setting options using hash syntax" do
75
+ o = FooOptions.new
76
+ o[:foo] = "xyz"
77
+ o[:foo].should == "xyz"
78
+ end
79
+
80
+ it "should allow setting of unregistered keys" do
81
+ o = FooOptions.new
82
+ o[:bar] = "foo"
83
+ o[:bar].should == "foo"
84
+ end
85
+ end
86
+
87
+ describe '#method_missing' do
88
+ it "should allow setting of unregistered keys" do
89
+ o = FooOptions.new
90
+ o.bar = 'foo'
91
+ o.bar.should == 'foo'
92
+ end
93
+
94
+ it "should allow getting values of unregistered keys (return nil)" do
95
+ FooOptions.new.bar.should be_nil
96
+ end
97
+
98
+ it "should print debugging messages about unregistered keys" do
99
+ log.should_receive(:debug).with("Attempting to access unregistered key bar on FooOptions")
100
+ FooOptions.new.bar
101
+ log.should_receive(:debug).with("Attempting to set unregistered key bar on FooOptions")
102
+ FooOptions.new.bar = 1
103
+ end
104
+ end
105
+
106
+ describe '#update' do
107
+ it "should allow updating of options" do
108
+ FooOptions.new.update(:foo => "xyz").foo.should == "xyz"
109
+ end
110
+
111
+ it "should not ignore keys with no setter (OpenStruct behaviour)" do
112
+ o = FooOptions.new
113
+ o.update(:bar => "xyz")
114
+ o.to_hash.should == {:foo => "abc", :bar => "xyz"}
115
+ end
116
+ end
117
+
118
+ describe '#merge' do
119
+ it "should update a new object" do
120
+ o = FooOptions.new
121
+ o.merge(:foo => "xyz").object_id.should_not == o.object_id
122
+ o.merge(:foo => "xyz").to_hash.should == {:foo => "xyz"}
123
+ end
124
+
125
+ it "should add in values from original object" do
126
+ o = FooOptions.new
127
+ o.update(:bar => "foo")
128
+ o.merge(:baz => 1).to_hash.should == {:foo => "abc", :bar => "foo", :baz => 1}
129
+ end
130
+ end
131
+
132
+ describe '#to_hash' do
133
+ it "should convert all instance variables and symbolized keys" do
134
+ class ToHashOptions1 < YARD::Options
135
+ attr_accessor :foo, :bar, :baz
136
+ def initialize; @foo = 1; @bar = 2; @baz = "hello" end
137
+ end
138
+ o = ToHashOptions1.new
139
+ hash = o.to_hash
140
+ hash.keys.should include(:foo, :bar, :baz)
141
+ hash[:foo].should == 1
142
+ hash[:bar].should == 2
143
+ hash[:baz].should == "hello"
144
+ end
145
+
146
+ it "should use accessor when converting values to hash" do
147
+ class ToHashOptions2 < YARD::Options
148
+ def initialize; @foo = 1 end
149
+ def foo; "HELLO#{@foo}" end
150
+ end
151
+ o = ToHashOptions2.new
152
+ o.to_hash.should == {:foo => "HELLO1"}
153
+ end
154
+
155
+ it "should ignore ivars with no accessor" do
156
+ class ToHashOptions3 < YARD::Options
157
+ attr_accessor :foo
158
+ def initialize; @foo = 1; @bar = "NOIGNORE" end
159
+ end
160
+ o = ToHashOptions3.new
161
+ o.to_hash.should == {:foo => 1, :bar => "NOIGNORE"}
162
+ end
163
+ end
164
+
165
+ describe '#tap' do
166
+ it "should support #tap(&block) (even in 1.8.6)" do
167
+ o = FooOptions.new.tap {|o| o.foo = :BAR }
168
+ o.to_hash.should == {:foo => :BAR}
169
+ end
170
+ end
171
+ end