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,299 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'spec_helper')
2
+
3
+ describe YARD::Parser::Ruby::Legacy::StatementList do
4
+ def stmts(code) YARD::Parser::Ruby::Legacy::StatementList.new(code) end
5
+ def stmt(code) stmts(code).first end
6
+
7
+ it "should parse dangling block expressions" do
8
+ s = stmt <<-eof
9
+ if
10
+ foo
11
+ puts 'hi'
12
+ end
13
+ eof
14
+
15
+ s.tokens.to_s(true).should == "if\n foo\n ...\n end"
16
+ s.tokens.to_s.should == "if\n foo"
17
+ s.block.to_s.should == "puts 'hi'"
18
+
19
+ s = stmt <<-eof
20
+ if foo ||
21
+ bar
22
+ puts 'hi'
23
+ end
24
+ eof
25
+
26
+ s.tokens.to_s(true).should == "if foo ||\n bar\n ...\n end"
27
+ s.tokens.to_s.should == "if foo ||\n bar"
28
+ s.block.to_s.should == "puts 'hi'"
29
+ end
30
+
31
+ it "should allow semicolons within parentheses" do
32
+ s = stmt "(foo; bar)"
33
+
34
+ s.tokens.to_s(true).should == "(foo; bar)"
35
+ s.block.should be_nil
36
+ end
37
+
38
+ it "should allow for non-block statements" do
39
+ s = stmt "hello_world(1, 2, 3)"
40
+ s.tokens.to_s.should == "hello_world(1, 2, 3)"
41
+ s.block.should be_nil
42
+ end
43
+
44
+ it "should allow block statements to be used as part of other block statements" do
45
+ s = stmt "while (foo; bar); foo = 12; end; while"
46
+
47
+ s.tokens.to_s(true).should == "while (foo; bar); ... end"
48
+ s.tokens.to_s.should == "while (foo; bar)"
49
+ s.block.to_s.should == "foo = 12"
50
+ end
51
+
52
+ it "should allow continued processing after a block" do
53
+ s = stmt "if foo; end.stuff"
54
+ s.tokens.to_s(true).should == "if foo; end.stuff"
55
+ s.block.to_s.should == ""
56
+
57
+ s = stmt "if foo; end[stuff]"
58
+ s.tokens.to_s(true).should == "if foo; end[stuff]"
59
+ s.block.to_s.should == ""
60
+
61
+ s = stmt "if foo; hi end.map do; 123; end"
62
+ s.tokens.to_s(true).should == "if foo; ... end.map do; 123; end"
63
+ s.block.to_s.should == "hi"
64
+ end
65
+
66
+ it "should parse default arguments" do
67
+ s = stmt "def foo(bar, baz = 1, bang = 2); bar; end"
68
+ s.tokens.to_s(true).should == "def foo(bar, baz = 1, bang = 2) ... end"
69
+ s.block.to_s.should == "bar"
70
+
71
+ s = stmt "def foo bar, baz = 1, bang = 2; bar; end"
72
+ s.tokens.to_s(true).should == "def foo bar, baz = 1, bang = 2; ... end"
73
+ s.block.to_s.should == "bar"
74
+
75
+ s = stmt "def foo bar , baz = 1 , bang = 2; bar; end"
76
+ s.tokens.to_s(true).should == "def foo bar , baz = 1 , bang = 2; ... end"
77
+ s.block.to_s.should == "bar"
78
+ end
79
+
80
+ it "should parse complex default arguments" do
81
+ s = stmt "def foo(bar, baz = File.new(1, 2), bang = 3); bar; end"
82
+ s.tokens.to_s(true).should == "def foo(bar, baz = File.new(1, 2), bang = 3) ... end"
83
+ s.block.to_s.should == "bar"
84
+
85
+ s = stmt "def foo bar, baz = File.new(1, 2), bang = 3; bar; end"
86
+ s.tokens.to_s(true).should == "def foo bar, baz = File.new(1, 2), bang = 3; ... end"
87
+ s.block.to_s.should == "bar"
88
+
89
+ s = stmt "def foo bar , baz = File.new(1, 2) , bang = 3; bar; end"
90
+ s.tokens.to_s(true).should == "def foo bar , baz = File.new(1, 2) , bang = 3; ... end"
91
+ s.block.to_s.should == "bar"
92
+ end
93
+
94
+ it "should parse blocks with do/end" do
95
+ s = stmt <<-eof
96
+ foo do
97
+ puts 'hi'
98
+ end
99
+ eof
100
+
101
+ s.tokens.to_s(true).should == "foo do\n ...\n end"
102
+ s.block.to_s.should == "puts 'hi'"
103
+ end
104
+
105
+ it "should parse blocks with {}" do
106
+ s = stmt "x { y }"
107
+ s.tokens.to_s(true).should == "x { ... }"
108
+ s.block.to_s.should == "y"
109
+
110
+ s = stmt "x() { y }"
111
+ s.tokens.to_s(true).should == "x() { ... }"
112
+ s.block.to_s.should == "y"
113
+ end
114
+
115
+ it "should parse blocks with begin/end" do
116
+ s = stmt "begin xyz end"
117
+ s.tokens.to_s(true).should == "begin ... end"
118
+ s.block.to_s.should == "xyz"
119
+ end
120
+
121
+ it "should parse nested blocks" do
122
+ s = stmt "foo(:x) { baz(:y) { skippy } }"
123
+
124
+ s.tokens.to_s(true).should == "foo(:x) { ... }"
125
+ s.block.to_s.should == "baz(:y) { skippy }"
126
+ end
127
+
128
+ it "should not parse hashes as blocks" do
129
+ s = stmt "x({})"
130
+ s.tokens.to_s(true).should == "x({})"
131
+ s.block.to_s.should == ""
132
+
133
+ s = stmt "x = {}"
134
+ s.tokens.to_s(true).should == "x = {}"
135
+ s.block.to_s.should == ""
136
+
137
+ s = stmt "x(y, {})"
138
+ s.tokens.to_s(true).should == "x(y, {})"
139
+ s.block.to_s.should == ""
140
+ end
141
+
142
+ it "should parse hashes in blocks with {}" do
143
+ s = stmt "x {x = {}}"
144
+
145
+ s.tokens.to_s(true).should == "x {...}"
146
+ s.block.to_s.should == "x = {}"
147
+ end
148
+
149
+ it "should parse blocks with {} in hashes" do
150
+ s = stmt "[:foo, x {}]"
151
+
152
+ s.tokens.to_s(true).should == "[:foo, x {}]"
153
+ s.block.to_s.should == ""
154
+ end
155
+
156
+ it "should handle multiple methods" do
157
+ s = stmt <<-eof
158
+ def %; end
159
+ def b; end
160
+ eof
161
+ s.to_s.should == "def %; end"
162
+ end
163
+
164
+ it "should handle nested methods" do
165
+ s = stmt <<-eof
166
+ def *(o) def +@; end
167
+ def ~@
168
+ end end
169
+ eof
170
+ s.tokens.to_s(true).should == "def *(o) ... end"
171
+ s.block.to_s.should == "def +@; end\n def ~@\n end"
172
+
173
+ s = stmts(<<-eof)
174
+ def /(other) 'hi' end
175
+ def method1
176
+ def dynamic; end
177
+ end
178
+ eof
179
+ s[1].to_s.should == "def method1\n def dynamic; end\n end"
180
+ end
181
+
182
+ it "should get comment line numbers" do
183
+ s = stmt <<-eof
184
+ # comment
185
+ # comment
186
+ # comment
187
+ def method; end
188
+ eof
189
+ s.comments.should == ["comment", "comment", "comment"]
190
+ s.comments_range.should == (1..3)
191
+
192
+ s = stmt <<-eof
193
+
194
+ # comment
195
+ # comment
196
+ def method; end
197
+ eof
198
+ s.comments.should == ["comment", "comment"]
199
+ s.comments_range.should == (2..3)
200
+
201
+ s = stmt <<-eof
202
+ # comment
203
+ # comment
204
+
205
+ def method; end
206
+ eof
207
+ s.comments.should == ["comment", "comment"]
208
+ s.comments_range.should == (1..2)
209
+
210
+ s = stmt <<-eof
211
+ # comment
212
+ def method; end
213
+ eof
214
+ s.comments.should == ["comment"]
215
+ s.comments_range.should == (1..1)
216
+
217
+ s = stmt <<-eof
218
+ def method; end # comment
219
+ eof
220
+ s.comments.should == ["comment"]
221
+ s.comments_range.should == (1..1)
222
+ end
223
+
224
+ it "should only look up to two lines back for comments" do
225
+ s = stmt <<-eof
226
+ # comments
227
+
228
+ # comments
229
+
230
+ def method; end
231
+ eof
232
+ s.comments.should == ["comments"]
233
+
234
+ s = stmt <<-eof
235
+ # comments
236
+
237
+
238
+ def method; end
239
+ eof
240
+ s.comments.should == nil
241
+
242
+ ss = stmts <<-eof
243
+ # comments
244
+
245
+
246
+ def method; end
247
+
248
+ # hello
249
+ def method2; end
250
+ eof
251
+ ss[0].comments.should == nil
252
+ ss[1].comments.should == ['hello']
253
+ end
254
+
255
+ it "should handle CRLF (Windows) newlines" do
256
+ s = stmts("require 'foo'\r\n\r\n# Test Test\r\n# \r\n# Example:\r\n# example code\r\ndef test\r\nend\r\n")
257
+ s[1].comments.should == ['Test Test', '', 'Example:', ' example code']
258
+ end
259
+
260
+ it "should handle elsif blocks" do
261
+ s = stmts(stmt("if 0\n foo\nelsif 2\n bar\nend\nbaz").block)
262
+ s.size.should == 2
263
+ s[1].tokens.to_s.should == "elsif 2"
264
+ s[1].block.to_s.should == "bar"
265
+ end
266
+
267
+ it "should handle else blocks" do
268
+ s = stmts(stmt("if 0\n foo\nelse\n bar\nend\nbaz").block)
269
+ s.size.should == 2
270
+ s[1].tokens.to_s.should == "else"
271
+ s[1].block.to_s.should == "bar"
272
+ end
273
+
274
+ it "should allow aliasing keywords" do
275
+ ['do x', 'x do', 'end begin', 'begin end'].each do |a|
276
+ s = stmt("alias #{a}\ndef foo; end")
277
+ s.tokens.to_s.should == "alias #{a}"
278
+ s.block.should be_nil
279
+ end
280
+
281
+ s = stmt("alias do x if 2 ==\n 2")
282
+ s.tokens.to_s.should == "alias do x if 2 ==\n 2"
283
+ end
284
+
285
+ it "should not open a block on an aliased keyword block opener" do
286
+ s = stmts(<<-eof)
287
+ class A; alias x do end
288
+ class B; end
289
+ eof
290
+ s[0].block.to_s.should == 'alias x do'
291
+ s.size.should > 1
292
+ end
293
+
294
+ it "should convert heredoc to string" do
295
+ src = "<<-XML\n foo\n\nXML"
296
+ s = stmt(src)
297
+ s.source.should == '"foo\n\n"'
298
+ end
299
+ end
@@ -0,0 +1,77 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'spec_helper')
2
+
3
+ include YARD::Parser::Ruby::Legacy
4
+ include YARD::Parser::Ruby::Legacy::RubyToken
5
+
6
+ describe YARD::Parser::Ruby::Legacy::TokenList do
7
+ describe "#initialize / #push" do
8
+ it "should accept a tokenlist (via constructor or push)" do
9
+ lambda { TokenList.new(TokenList.new) }.should_not raise_error(ArgumentError)
10
+ TokenList.new.push(TokenList.new("x = 2")).size.should == 6
11
+ end
12
+
13
+ it "accept a token (via constructor or push)" do
14
+ lambda { TokenList.new(Token.new(0, 0)) }.should_not raise_error(ArgumentError)
15
+ TokenList.new.push(Token.new(0, 0), Token.new(1, 1)).size.should == 2
16
+ end
17
+
18
+ it "should accept a string and parse it as code (via constructor or push)" do
19
+ lambda { TokenList.new("x = 2") }.should_not raise_error(ArgumentError)
20
+ x = TokenList.new
21
+ x.push("x", "=", "2")
22
+ x.size.should == 6
23
+ x.to_s.should == "x\n=\n2\n"
24
+ end
25
+
26
+ it "should not accept any other input" do
27
+ lambda { TokenList.new(:notcode) }.should raise_error(ArgumentError)
28
+ end
29
+
30
+ it "should not interpolate string data" do
31
+ x = TokenList.new('x = "hello #{world}"')
32
+ x.size.should == 6
33
+ x[4].class.should == TkDSTRING
34
+ x.to_s.should == 'x = "hello #{world}"' + "\n"
35
+ end
36
+
37
+ it 'handles label syntax' do
38
+ x = TokenList.new('a:1,b:2')
39
+ x[0].class.should == TkLABEL
40
+ x[0].text.should == 'a:'
41
+ x[3].class.should == TkLABEL
42
+ x[3].text.should == 'b:'
43
+ end
44
+ end
45
+
46
+ describe '#to_s' do
47
+ before do
48
+ @t = TokenList.new
49
+ @t << TkDEF.new(1, 1, "def")
50
+ @t << TkSPACE.new(1, 1)
51
+ @t << TkIDENTIFIER.new(1, 1, "x")
52
+ @t << TkStatementEnd.new(1, 1)
53
+ @t << TkSEMICOLON.new(1, 1) << TkSPACE.new(1, 1)
54
+ @t << TkBlockContents.new(1, 1)
55
+ @t << TkSPACE.new(1, 1) << TkEND.new(1, 1, "end")
56
+ @t[0].set_text "def"
57
+ @t[1].set_text " "
58
+ @t[2].set_text "x"
59
+ @t[4].set_text ";"
60
+ @t[5].set_text " "
61
+ @t[7].set_text " "
62
+ @t[8].set_text "end"
63
+ end
64
+
65
+ it "should only show the statement portion of the tokens by default" do
66
+ @t.to_s.should == "def x"
67
+ end
68
+
69
+ it "should show ... for the block token if all of the tokens are shown" do
70
+ @t.to_s(true).should == "def x; ... end"
71
+ end
72
+
73
+ it "should ignore ... if show_block = false" do
74
+ @t.to_s(true, false).should == "def x; end"
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,334 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
+
3
+ describe YARD::Parser::Ruby::RubyParser do
4
+ def stmt(stmt)
5
+ YARD::Parser::Ruby::RubyParser.new(stmt, nil).parse.root.first
6
+ end
7
+
8
+ def stmts(stmts)
9
+ YARD::Parser::Ruby::RubyParser.new(stmts, nil).parse.root
10
+ end
11
+
12
+ def tokenize(stmt)
13
+ YARD::Parser::Ruby::RubyParser.new(stmt, nil).parse.tokens
14
+ end
15
+
16
+ describe '#parse' do
17
+ it "should get comment line numbers" do
18
+ s = stmt <<-eof
19
+ # comment
20
+ # comment
21
+ # comment
22
+ def method; end
23
+ eof
24
+ s.comments.should == "comment\ncomment\ncomment"
25
+ s.comments_range.should == (1..3)
26
+
27
+ s = stmt <<-eof
28
+
29
+ # comment
30
+ # comment
31
+ def method; end
32
+ eof
33
+ s.comments.should == "comment\ncomment"
34
+ s.comments_range.should == (2..3)
35
+
36
+ s = stmt <<-eof
37
+ # comment
38
+ # comment
39
+
40
+ def method; end
41
+ eof
42
+ s.comments.should == "comment\ncomment"
43
+ s.comments_range.should == (1..2)
44
+
45
+ s = stmt <<-eof
46
+ # comment
47
+ def method; end
48
+ eof
49
+ s.comments.should == "comment"
50
+ s.comments_range.should == (1..1)
51
+
52
+ s = stmt <<-eof
53
+ def method; end # comment
54
+ eof
55
+ s.comments.should == "comment"
56
+ s.comments_range.should == (1..1)
57
+ end
58
+
59
+ it "should only look up to two lines back for comments" do
60
+ s = stmts <<-eof
61
+ # comments
62
+
63
+ # comments
64
+
65
+ def method; end
66
+ eof
67
+ s[1].comments.should == "comments"
68
+
69
+ s = stmts <<-eof
70
+ # comments
71
+
72
+
73
+ def method; end
74
+ eof
75
+ s[1].comments.should == nil
76
+
77
+ ss = stmts <<-eof
78
+ # comments
79
+
80
+
81
+ def method; end
82
+
83
+ # hello
84
+ def method2; end
85
+ eof
86
+ ss[1].comments.should == nil
87
+ ss[2].comments.should == 'hello'
88
+ end
89
+
90
+ it "should handle block comment followed by line comment" do
91
+ ss = stmts <<-eof
92
+ # comments1
93
+
94
+ =begin
95
+ comments2
96
+ =end
97
+ # comments3
98
+ def hello; end
99
+ eof
100
+ ss.last.comments.should == "comments3"
101
+ end
102
+
103
+ it "should handle block comment followed by block comment" do
104
+ ss = stmts <<-eof
105
+ =begin
106
+ comments1
107
+ =end
108
+ =begin
109
+ comments2
110
+ =end
111
+ def hello; end
112
+ eof
113
+ ss.last.comments.strip.should == "comments2"
114
+ end
115
+
116
+ it "should handle 1.9 lambda syntax with args" do
117
+ src = "->(a,b,c=1,*args,&block) { hello_world }"
118
+ stmt(src).source.should == src
119
+ end
120
+
121
+ it "should handle 1.9 lambda syntax" do
122
+ src = "-> { hello_world }"
123
+ stmt(src).source.should == src
124
+ end
125
+
126
+ it "should handle standard lambda syntax" do
127
+ src = "lambda { hello_world }"
128
+ stmt(src).source.should == src
129
+ end
130
+
131
+ it "should throw a ParserSyntaxError on invalid code" do
132
+ lambda { stmt("Foo, bar.") }.should raise_error(YARD::Parser::ParserSyntaxError)
133
+ end
134
+
135
+ it "should handle bare hashes as method parameters" do
136
+ src = "command :a => 1, :b => 2, :c => 3"
137
+ stmt(src).jump(:command)[1].source.should == ":a => 1, :b => 2, :c => 3"
138
+
139
+ src = "command a: 1, b: 2, c: 3"
140
+ stmt(src).jump(:command)[1].source.should == "a: 1, b: 2, c: 3"
141
+ end
142
+
143
+ it "should handle source for hash syntax" do
144
+ src = "{ :a => 1, :b => 2, :c => 3 }"
145
+ stmt(src).jump(:hash).source.should == "{ :a => 1, :b => 2, :c => 3 }"
146
+ end
147
+
148
+ it "should handle an empty hash" do
149
+ stmt("{}").jump(:hash).source.should == "{}"
150
+ end
151
+
152
+ it "new hash label syntax should show label without colon" do
153
+ ast = stmt("{ a: 1 }").jump(:label)
154
+ ast[0].should == "a"
155
+ ast.source.should == "a:"
156
+ end
157
+
158
+ it "should handle begin/rescue blocks" do
159
+ ast = stmt("begin; X; rescue => e; Y end").jump(:rescue)
160
+ ast.source.should == "rescue => e; Y end"
161
+
162
+ ast = stmt("begin; X; rescue A => e; Y end").jump(:rescue)
163
+ ast.source.should == "rescue A => e; Y end"
164
+
165
+ ast = stmt("begin; X; rescue A, B => e; Y end").jump(:rescue)
166
+ ast.source.should == "rescue A, B => e; Y end"
167
+ end
168
+
169
+ it "should handle method rescue blocks" do
170
+ ast = stmt("def x; A; rescue Y; B end")
171
+ ast.source.should == "def x; A; rescue Y; B end"
172
+ ast.jump(:rescue).source.should == "rescue Y; B end"
173
+ end
174
+
175
+ it "should handle defs with keywords as method name" do
176
+ ast = stmt("# docstring\nclass A;\ndef class; end\nend")
177
+ ast.jump(:class).docstring.should == "docstring"
178
+ ast.jump(:class).line_range.should == (2..4)
179
+ end
180
+
181
+ it "should end source properly on array reference" do
182
+ ast = stmt("AS[0, 1 ] ")
183
+ ast.source.should == 'AS[0, 1 ]'
184
+
185
+ ast = stmt("def x(a = S[1]) end").jump(:default_arg)
186
+ ast.source.should == 'a = S[1]'
187
+ end
188
+
189
+ it "should end source properly on if/unless mod" do
190
+ %w(if unless while).each do |mod|
191
+ stmt("A=1 #{mod} true").source.should == "A=1 #{mod} true"
192
+ end
193
+ end
194
+
195
+ it "should show proper source for assignment" do
196
+ stmt("A=1").jump(:assign).source.should == "A=1"
197
+ end
198
+
199
+ it "should show proper source for a top_const_ref" do
200
+ s = stmt("::\nFoo::Bar")
201
+ s.jump(:top_const_ref).source.should == "::\nFoo"
202
+ s.should be_ref
203
+ s.jump(:top_const_ref).should be_ref
204
+ s.source.should == "::\nFoo::Bar"
205
+ s.line_range.to_a.should == [1, 2]
206
+ end
207
+
208
+ it "should show proper source for inline heredoc" do
209
+ src = "def foo\n foo(<<-XML, 1, 2)\n bar\n\n XML\nend"
210
+ s = stmt(src)
211
+ t = tokenize(src)
212
+ s.source.should == src
213
+ t.map {|x| x[1] }.join.should == src
214
+ end
215
+
216
+ it "should show proper source for regular heredoc" do
217
+ src = "def foo\n x = <<-XML\n Hello \#{name}!\n Bye!\n XML\nend"
218
+ s = stmt(src)
219
+ t = tokenize(src)
220
+ s.source.should == src
221
+ t.map {|x| x[1] }.join.should == src
222
+ end
223
+
224
+ it "should show proper source for heredoc with comment" do
225
+ src = "def foo\n x = <<-XML # HI!\n Hello \#{name}!\n Bye!\n XML\nend"
226
+ s = stmt(src)
227
+ t = tokenize(src)
228
+ s.source.should == src
229
+ t.map {|x| x[1] }.join.should == src
230
+ end
231
+
232
+ it "should show proper source for string" do
233
+ ["'", '"'].each do |q|
234
+ src = "#{q}hello\n\nworld#{q}"
235
+ s = stmt(src)
236
+ s.jump(:string_content).source.should == "hello\n\nworld"
237
+ s.source.should == src
238
+ end
239
+
240
+ src = '("this is a string")'
241
+ stmt(src).jump(:string_literal).source.should == '"this is a string"'
242
+ end
243
+
244
+ it "should show proper source for %w() array" do
245
+ src = "%w(\na b c\n d e f\n)"
246
+ stmt(src).jump(:qwords_literal).source.should == src
247
+ end
248
+
249
+ it "should show proper source for %w{} array" do
250
+ src = "%w{\na b c\n d e f\n}"
251
+ stmt(src).jump(:array).source.should == src
252
+ end
253
+
254
+ it "should parse %w() array in constant declaration" do
255
+ s = stmt(<<-eof)
256
+ class Foo
257
+ FOO = %w( foo bar )
258
+ end
259
+ eof
260
+ s.jump(:qwords_literal).source.should == '%w( foo bar )'
261
+ if RUBY_VERSION >= '1.9.3' # ripper fix: array node encapsulates qwords
262
+ s.jump(:array).source.should == '%w( foo bar )'
263
+ end
264
+ end
265
+
266
+ it "should parse %w() array source in object[] parsed context" do
267
+ s = stmts(<<-eof)
268
+ {}[:key]
269
+ FOO = %w( foo bar )
270
+ eof
271
+ s[1].jump(:array).source.should == '%w( foo bar )'
272
+ end
273
+
274
+ it "should parse %w() array source in object[]= parsed context" do
275
+ s = stmts(<<-eof)
276
+ {}[:key] = :value
277
+ FOO = %w( foo bar )
278
+ eof
279
+ s[1].jump(:array).source.should == '%w( foo bar )'
280
+ end
281
+
282
+ it "should parse [] as array" do
283
+ s = stmt(<<-eof)
284
+ class Foo
285
+ FOO = ['foo', 'bar']
286
+ end
287
+ eof
288
+ s.jump(:array).source.should == "['foo', 'bar']"
289
+ end
290
+
291
+ it "should show source for unary minus" do
292
+ stmt("X = - 1").jump(:unary).source.should == '- 1'
293
+ end
294
+
295
+ it "should show source for unary exclamation" do
296
+ stmt("X = !1").jump(:unary).source.should == '!1'
297
+ end
298
+
299
+ it "should have the correct line range for class/modules" do
300
+ s = stmt(<<-eof)
301
+ class Foo
302
+ def foo; end
303
+
304
+
305
+
306
+ # Ending comment
307
+ end
308
+ eof
309
+ s.jump(:class).line_range.should == (1..7)
310
+ end
311
+
312
+ it "should find lone comments" do
313
+ Registry.clear
314
+ ast = YARD.parse_string(<<-eof).enumerator
315
+ class Foo
316
+ ##
317
+ # comment here
318
+
319
+
320
+ def foo; end
321
+
322
+ # end comment
323
+ end
324
+ eof
325
+ comment = ast.first.last.first
326
+ comment.type.should == :comment
327
+ comment.docstring_hash_flag.should be_true
328
+ comment.docstring.strip.should == "comment here"
329
+
330
+ ast.first.last.last.type.should == :comment
331
+ ast.first.last.last.docstring.should == "end comment"
332
+ end
333
+ end
334
+ end if HAVE_RIPPER