yard 0.7.5 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of yard might be problematic. Click here for more details.

Files changed (339) hide show
  1. data/.yardopts +10 -2
  2. data/ChangeLog +1263 -38
  3. data/LEGAL +5 -5
  4. data/LICENSE +1 -1
  5. data/README.md +91 -82
  6. data/Rakefile +6 -6
  7. data/benchmarks/builtins_vs_eval.rb +1 -1
  8. data/benchmarks/erb_vs_erubis.rb +4 -4
  9. data/benchmarks/generation.rb +5 -5
  10. data/benchmarks/parsing.rb +2 -2
  11. data/benchmarks/registry_store_types.rb +48 -0
  12. data/bin/yard +9 -1
  13. data/bin/yardoc +9 -1
  14. data/bin/yri +10 -2
  15. data/docs/CodeObjects.md +10 -10
  16. data/docs/GettingStarted.md +85 -83
  17. data/docs/Handlers.md +21 -21
  18. data/docs/Overview.md +7 -7
  19. data/docs/Parser.md +30 -30
  20. data/docs/Tags.md +250 -554
  21. data/docs/TagsArch.md +123 -0
  22. data/docs/Templates.md +58 -80
  23. data/docs/WhatsNew.md +378 -133
  24. data/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
  25. data/docs/templates/default/fulldoc/html/setup.rb +6 -0
  26. data/docs/templates/default/layout/html/setup.rb +8 -0
  27. data/docs/templates/default/layout/html/tag_list.erb +11 -0
  28. data/docs/templates/default/yard_tags/html/list.erb +18 -0
  29. data/docs/templates/default/yard_tags/html/setup.rb +27 -0
  30. data/docs/templates/plugin.rb +65 -0
  31. data/lib/yard.rb +1 -10
  32. data/lib/yard/autoload.rb +75 -27
  33. data/lib/yard/cli/command.rb +5 -2
  34. data/lib/yard/cli/command_parser.rb +3 -2
  35. data/lib/yard/cli/diff.rb +1 -1
  36. data/lib/yard/cli/i18n.rb +69 -0
  37. data/lib/yard/cli/list.rb +1 -1
  38. data/lib/yard/cli/server.rb +30 -7
  39. data/lib/yard/cli/stats.rb +5 -6
  40. data/lib/yard/cli/yardoc.rb +95 -45
  41. data/lib/yard/cli/yri.rb +24 -3
  42. data/lib/yard/code_objects/base.rb +35 -4
  43. data/lib/yard/code_objects/extra_file_object.rb +1 -1
  44. data/lib/yard/code_objects/macro_object.rb +56 -99
  45. data/lib/yard/code_objects/method_object.rb +44 -6
  46. data/lib/yard/config.rb +18 -8
  47. data/lib/yard/core_ext/symbol_hash.rb +1 -1
  48. data/lib/yard/docstring.rb +45 -85
  49. data/lib/yard/docstring_parser.rb +269 -0
  50. data/lib/yard/handlers/base.rb +129 -118
  51. data/lib/yard/handlers/c/alias_handler.rb +15 -0
  52. data/lib/yard/handlers/c/attribute_handler.rb +13 -0
  53. data/lib/yard/handlers/c/base.rb +110 -0
  54. data/lib/yard/handlers/c/class_handler.rb +26 -0
  55. data/lib/yard/handlers/c/constant_handler.rb +12 -0
  56. data/lib/yard/handlers/c/handler_methods.rb +165 -0
  57. data/lib/yard/handlers/c/init_handler.rb +16 -0
  58. data/lib/yard/handlers/c/method_handler.rb +35 -0
  59. data/lib/yard/handlers/c/mixin_handler.rb +13 -0
  60. data/lib/yard/handlers/c/module_handler.rb +16 -0
  61. data/lib/yard/handlers/c/override_comment_handler.rb +22 -0
  62. data/lib/yard/handlers/c/path_handler.rb +10 -0
  63. data/lib/yard/handlers/c/struct_handler.rb +12 -0
  64. data/lib/yard/handlers/c/symbol_handler.rb +7 -0
  65. data/lib/yard/handlers/processor.rb +41 -30
  66. data/lib/yard/handlers/ruby/alias_handler.rb +0 -2
  67. data/lib/yard/handlers/ruby/attribute_handler.rb +16 -17
  68. data/lib/yard/handlers/ruby/base.rb +10 -6
  69. data/lib/yard/handlers/ruby/comment_handler.rb +9 -0
  70. data/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
  71. data/lib/yard/handlers/ruby/dsl_handler_methods.rb +71 -0
  72. data/lib/yard/handlers/ruby/legacy/alias_handler.rb +0 -3
  73. data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +16 -17
  74. data/lib/yard/handlers/ruby/legacy/base.rb +28 -6
  75. data/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
  76. data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
  77. data/lib/yard/handlers/ruby/legacy/method_handler.rb +0 -2
  78. data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +1 -1
  79. data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
  80. data/lib/yard/handlers/ruby/method_handler.rb +10 -15
  81. data/lib/yard/handlers/ruby/mixin_handler.rb +1 -1
  82. data/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
  83. data/lib/yard/handlers/ruby/struct_handler_methods.rb +3 -2
  84. data/lib/yard/i18n/pot_generator.rb +281 -0
  85. data/lib/yard/i18n/text.rb +72 -0
  86. data/lib/yard/logging.rb +3 -7
  87. data/lib/yard/options.rb +216 -0
  88. data/lib/yard/parser/c/c_parser.rb +225 -0
  89. data/lib/yard/parser/c/comment_parser.rb +131 -0
  90. data/lib/yard/parser/c/statement.rb +63 -0
  91. data/lib/yard/parser/ruby/ast_node.rb +91 -1
  92. data/lib/yard/parser/ruby/legacy/ruby_parser.rb +1 -0
  93. data/lib/yard/parser/ruby/legacy/statement.rb +7 -2
  94. data/lib/yard/parser/ruby/legacy/statement_list.rb +13 -22
  95. data/lib/yard/parser/ruby/ruby_parser.rb +87 -26
  96. data/lib/yard/parser/source_parser.rb +89 -88
  97. data/lib/yard/rake/yardoc_task.rb +1 -1
  98. data/lib/yard/registry.rb +21 -10
  99. data/lib/yard/registry_store.rb +48 -0
  100. data/lib/yard/serializers/file_system_serializer.rb +18 -20
  101. data/lib/yard/serializers/yardoc_serializer.rb +1 -0
  102. data/lib/yard/server/adapter.rb +2 -2
  103. data/lib/yard/server/commands/base.rb +1 -1
  104. data/lib/yard/server/commands/display_object_command.rb +13 -6
  105. data/lib/yard/server/commands/frames_command.rb +4 -21
  106. data/lib/yard/server/commands/library_command.rb +57 -11
  107. data/lib/yard/server/commands/list_command.rb +10 -34
  108. data/lib/yard/server/commands/search_command.rb +8 -2
  109. data/lib/yard/server/doc_server_helper.rb +34 -0
  110. data/lib/yard/server/rack_adapter.rb +5 -1
  111. data/lib/yard/server/router.rb +4 -10
  112. data/lib/yard/server/static_caching.rb +2 -2
  113. data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +2 -2
  114. data/lib/yard/server/templates/default/fulldoc/html/js/live.js +0 -15
  115. data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +3 -3
  116. data/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
  117. data/lib/yard/server/templates/doc_server/processing/html/processing.erb +1 -1
  118. data/lib/yard/server/templates/doc_server/search/html/setup.rb +1 -1
  119. data/lib/yard/tags/default_factory.rb +31 -4
  120. data/lib/yard/tags/directives.rb +593 -0
  121. data/lib/yard/tags/library.rb +437 -35
  122. data/lib/yard/templates/engine.rb +17 -12
  123. data/lib/yard/templates/helpers/base_helper.rb +8 -2
  124. data/lib/yard/templates/helpers/html_helper.rb +57 -14
  125. data/lib/yard/templates/helpers/markup/rdoc_markup.rb +1 -1
  126. data/lib/yard/templates/helpers/markup_helper.rb +9 -9
  127. data/lib/yard/templates/helpers/text_helper.rb +2 -2
  128. data/lib/yard/templates/template.rb +42 -13
  129. data/lib/yard/templates/template_options.rb +81 -0
  130. data/spec/cli/command_parser_spec.rb +4 -4
  131. data/spec/cli/command_spec.rb +3 -3
  132. data/spec/cli/config_spec.rb +13 -13
  133. data/spec/cli/diff_spec.rb +13 -10
  134. data/spec/cli/gems_spec.rb +12 -12
  135. data/spec/cli/help_spec.rb +2 -2
  136. data/spec/cli/i18n_spec.rb +111 -0
  137. data/spec/cli/server_spec.rb +66 -18
  138. data/spec/cli/stats_spec.rb +15 -15
  139. data/spec/cli/yardoc_spec.rb +124 -97
  140. data/spec/cli/yri_spec.rb +14 -12
  141. data/spec/code_objects/base_spec.rb +104 -46
  142. data/spec/code_objects/class_object_spec.rb +33 -33
  143. data/spec/code_objects/code_object_list_spec.rb +5 -5
  144. data/spec/code_objects/constants_spec.rb +4 -3
  145. data/spec/code_objects/extra_file_object_spec.rb +19 -19
  146. data/spec/code_objects/macro_object_spec.rb +31 -37
  147. data/spec/code_objects/method_object_spec.rb +46 -23
  148. data/spec/code_objects/module_object_spec.rb +16 -16
  149. data/spec/code_objects/namespace_object_spec.rb +6 -6
  150. data/spec/code_objects/proxy_spec.rb +19 -19
  151. data/spec/config_spec.rb +33 -24
  152. data/spec/core_ext/array_spec.rb +1 -1
  153. data/spec/core_ext/file_spec.rb +8 -8
  154. data/spec/core_ext/hash_spec.rb +1 -1
  155. data/spec/core_ext/insertion_spec.rb +3 -3
  156. data/spec/core_ext/module_spec.rb +1 -1
  157. data/spec/core_ext/string_spec.rb +6 -6
  158. data/spec/core_ext/symbol_hash_spec.rb +11 -11
  159. data/spec/docstring_parser_spec.rb +207 -0
  160. data/spec/docstring_spec.rb +33 -146
  161. data/spec/handlers/alias_handler_spec.rb +14 -14
  162. data/spec/handlers/attribute_handler_spec.rb +20 -20
  163. data/spec/handlers/base_spec.rb +16 -16
  164. data/spec/handlers/c/alias_handler_spec.rb +33 -0
  165. data/spec/handlers/c/attribute_handler_spec.rb +40 -0
  166. data/spec/handlers/c/class_handler_spec.rb +64 -0
  167. data/spec/handlers/c/constant_handler_spec.rb +68 -0
  168. data/spec/handlers/c/init_handler_spec.rb +36 -0
  169. data/spec/handlers/c/method_handler_spec.rb +228 -0
  170. data/spec/handlers/c/mixin_handler_spec.rb +27 -0
  171. data/spec/handlers/c/module_handler_spec.rb +38 -0
  172. data/spec/handlers/c/override_comment_handler_spec.rb +43 -0
  173. data/spec/handlers/c/path_handler_spec.rb +35 -0
  174. data/spec/handlers/c/spec_helper.rb +11 -0
  175. data/spec/handlers/c/struct_handler_spec.rb +15 -0
  176. data/spec/handlers/class_condition_handler_spec.rb +10 -10
  177. data/spec/handlers/class_handler_spec.rb +38 -38
  178. data/spec/handlers/class_variable_handler_spec.rb +1 -1
  179. data/spec/handlers/constant_handler_spec.rb +7 -7
  180. data/spec/handlers/{macro_handler_spec.rb → dsl_handler_spec.rb} +72 -53
  181. data/spec/handlers/examples/alias_handler_001.rb.txt +5 -5
  182. data/spec/handlers/examples/class_condition_handler_001.rb.txt +9 -9
  183. data/spec/handlers/examples/class_handler_001.rb.txt +1 -1
  184. data/spec/handlers/examples/dsl_handler_001.rb.txt +110 -0
  185. data/spec/handlers/examples/exception_handler_001.rb.txt +14 -14
  186. data/spec/handlers/examples/method_condition_handler_001.rb.txt +2 -2
  187. data/spec/handlers/examples/method_handler_001.rb.txt +16 -16
  188. data/spec/handlers/examples/mixin_handler_001.rb.txt +8 -4
  189. data/spec/handlers/examples/private_constant_handler_001.rb.txt +1 -1
  190. data/spec/handlers/examples/visibility_handler_001.rb.txt +3 -3
  191. data/spec/handlers/examples/yield_handler_001.rb.txt +13 -14
  192. data/spec/handlers/exception_handler_spec.rb +9 -9
  193. data/spec/handlers/extend_handler_spec.rb +2 -2
  194. data/spec/handlers/legacy_base_spec.rb +34 -34
  195. data/spec/handlers/method_condition_handler_spec.rb +2 -2
  196. data/spec/handlers/method_handler_spec.rb +33 -33
  197. data/spec/handlers/mixin_handler_spec.rb +13 -9
  198. data/spec/handlers/module_function_handler_spec.rb +82 -0
  199. data/spec/handlers/module_handler_spec.rb +6 -6
  200. data/spec/handlers/private_constant_handler_spec.rb +3 -3
  201. data/spec/handlers/processor_spec.rb +5 -5
  202. data/spec/handlers/ruby/base_spec.rb +10 -6
  203. data/spec/handlers/ruby/legacy/base_spec.rb +11 -7
  204. data/spec/handlers/spec_helper.rb +2 -3
  205. data/spec/handlers/visibility_handler_spec.rb +6 -6
  206. data/spec/handlers/yield_handler_spec.rb +8 -8
  207. data/spec/i18n/pot_generator_spec.rb +244 -0
  208. data/spec/i18n/text_spec.rb +69 -0
  209. data/spec/options_spec.rb +160 -0
  210. data/spec/parser/base_spec.rb +3 -3
  211. data/spec/parser/c_parser_spec.rb +31 -257
  212. data/spec/parser/examples/array.c.txt +187 -187
  213. data/spec/parser/examples/extrafile.c.txt +1 -1
  214. data/spec/parser/examples/override.c.txt +1 -1
  215. data/spec/parser/ruby/ast_node_spec.rb +1 -1
  216. data/spec/parser/ruby/legacy/statement_list_spec.rb +24 -24
  217. data/spec/parser/ruby/legacy/token_list_spec.rb +7 -7
  218. data/spec/parser/ruby/ruby_parser_spec.rb +56 -34
  219. data/spec/parser/source_parser_spec.rb +125 -65
  220. data/spec/parser/tag_parsing_spec.rb +4 -4
  221. data/spec/rake/yardoc_task_spec.rb +10 -8
  222. data/spec/registry_spec.rb +65 -36
  223. data/spec/registry_store_spec.rb +90 -40
  224. data/spec/serializers/file_system_serializer_spec.rb +12 -12
  225. data/spec/serializers/yardoc_serializer_spec.rb +2 -2
  226. data/spec/server/adapter_spec.rb +3 -3
  227. data/spec/server/commands/base_spec.rb +8 -8
  228. data/spec/server/commands/library_command_spec.rb +3 -3
  229. data/spec/server/commands/static_file_command_spec.rb +7 -7
  230. data/spec/server/doc_server_helper_spec.rb +1 -1
  231. data/spec/server/doc_server_serializer_spec.rb +6 -6
  232. data/spec/server/rack_adapter_spec.rb +3 -3
  233. data/spec/server/router_spec.rb +19 -19
  234. data/spec/server/static_caching_spec.rb +4 -4
  235. data/spec/spec_helper.rb +7 -7
  236. data/spec/tags/default_factory_spec.rb +24 -16
  237. data/spec/tags/directives_spec.rb +422 -0
  238. data/spec/tags/library_spec.rb +15 -4
  239. data/spec/tags/overload_tag_spec.rb +6 -6
  240. data/spec/tags/ref_tag_list_spec.rb +8 -8
  241. data/spec/templates/class_spec.rb +7 -7
  242. data/spec/templates/constant_spec.rb +7 -7
  243. data/spec/templates/engine_spec.rb +28 -36
  244. data/spec/templates/examples/class001.html +108 -108
  245. data/spec/templates/examples/class002.html +17 -17
  246. data/spec/templates/examples/constant001.txt +1 -1
  247. data/spec/templates/examples/method001.html +45 -45
  248. data/spec/templates/examples/method002.html +25 -25
  249. data/spec/templates/examples/method003.html +60 -60
  250. data/spec/templates/examples/method004.html +7 -7
  251. data/spec/templates/examples/method005.html +28 -28
  252. data/spec/templates/examples/module001.html +321 -321
  253. data/spec/templates/examples/module001.txt +1 -1
  254. data/spec/templates/examples/module002.html +130 -130
  255. data/spec/templates/examples/module003.html +74 -74
  256. data/spec/templates/examples/module004.html +388 -0
  257. data/spec/templates/helpers/base_helper_spec.rb +32 -32
  258. data/spec/templates/helpers/html_helper_spec.rb +87 -68
  259. data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +9 -9
  260. data/spec/templates/helpers/markup/rdoc_markup_spec.rb +16 -16
  261. data/spec/templates/helpers/markup_helper_spec.rb +31 -28
  262. data/spec/templates/helpers/method_helper_spec.rb +7 -7
  263. data/spec/templates/helpers/shared_signature_examples.rb +9 -7
  264. data/spec/templates/helpers/text_helper_spec.rb +3 -3
  265. data/spec/templates/method_spec.rb +13 -13
  266. data/spec/templates/module_spec.rb +70 -24
  267. data/spec/templates/onefile_spec.rb +32 -15
  268. data/spec/templates/section_spec.rb +23 -23
  269. data/spec/templates/spec_helper.rb +31 -1
  270. data/spec/templates/tag_spec.rb +5 -5
  271. data/spec/templates/template_spec.rb +54 -46
  272. data/spec/verifier_spec.rb +5 -5
  273. data/templates/default/class/setup.rb +2 -2
  274. data/templates/default/docstring/html/abstract.erb +1 -1
  275. data/templates/default/docstring/html/note.erb +1 -1
  276. data/templates/default/docstring/html/private.erb +1 -1
  277. data/templates/default/docstring/html/todo.erb +1 -1
  278. data/templates/default/docstring/setup.rb +2 -2
  279. data/templates/default/fulldoc/html/css/full_list.css +4 -2
  280. data/templates/default/fulldoc/html/css/style.css +50 -44
  281. data/templates/default/fulldoc/html/frames.erb +21 -6
  282. data/templates/default/fulldoc/html/full_list.erb +5 -3
  283. data/templates/default/fulldoc/html/{full_list_files.erb → full_list_file.erb} +0 -0
  284. data/templates/default/fulldoc/html/js/app.js +29 -26
  285. data/templates/default/fulldoc/html/js/full_list.js +9 -9
  286. data/templates/default/fulldoc/html/js/jquery.js +4 -16
  287. data/templates/default/fulldoc/html/setup.rb +42 -38
  288. data/templates/default/layout/dot/header.erb +1 -1
  289. data/templates/default/layout/html/breadcrumb.erb +6 -6
  290. data/templates/default/layout/html/files.erb +1 -1
  291. data/templates/default/layout/html/footer.erb +1 -1
  292. data/templates/default/layout/html/headers.erb +3 -6
  293. data/templates/default/layout/html/index.erb +1 -1
  294. data/templates/default/layout/html/layout.erb +3 -7
  295. data/templates/default/layout/html/objects.erb +1 -1
  296. data/templates/default/layout/html/script_setup.erb +5 -0
  297. data/templates/default/layout/html/search.erb +4 -1
  298. data/templates/default/layout/html/setup.rb +8 -8
  299. data/templates/default/method_details/html/method_signature.erb +10 -3
  300. data/templates/default/method_details/setup.rb +1 -0
  301. data/templates/default/module/dot/info.erb +1 -1
  302. data/templates/default/module/dot/setup.rb +2 -2
  303. data/templates/default/module/html/attribute_details.erb +1 -1
  304. data/templates/default/module/html/children.erb +1 -1
  305. data/templates/default/module/html/defines.erb +1 -1
  306. data/templates/default/module/html/inherited_methods.erb +5 -4
  307. data/templates/default/module/html/item_summary.erb +15 -5
  308. data/templates/default/module/html/method_details_list.erb +2 -2
  309. data/templates/default/module/setup.rb +25 -12
  310. data/templates/default/module/text/setup.rb +1 -1
  311. data/templates/default/onefile/html/layout.erb +1 -1
  312. data/templates/default/onefile/html/setup.rb +2 -2
  313. data/templates/default/tags/html/example.erb +4 -2
  314. data/templates/default/tags/html/option.erb +1 -1
  315. data/templates/default/tags/html/overload.erb +1 -1
  316. data/templates/default/tags/html/see.erb +1 -1
  317. data/templates/default/tags/html/tag.erb +1 -1
  318. data/templates/default/tags/setup.rb +4 -3
  319. data/templates/guide/fulldoc/html/css/style.css +8 -8
  320. data/templates/guide/fulldoc/html/js/app.js +6 -6
  321. data/templates/guide/fulldoc/html/setup.rb +12 -12
  322. data/templates/guide/layout/html/layout.erb +11 -11
  323. data/templates/guide/layout/html/setup.rb +9 -9
  324. data/templates/guide/method/html/header.erb +2 -2
  325. data/templates/guide/method/html/setup.rb +1 -1
  326. metadata +68 -18
  327. data/bin/yard-graph +0 -4
  328. data/bin/yard-server +0 -4
  329. data/docs/Glossary.md +0 -12
  330. data/lib/yard/handlers/ruby/legacy/macro_handler.rb +0 -39
  331. data/lib/yard/handlers/ruby/macro_handler.rb +0 -40
  332. data/lib/yard/handlers/ruby/macro_handler_methods.rb +0 -131
  333. data/lib/yard/parser/c_parser.rb +0 -497
  334. data/lib/yard/server/templates/default/layout/html/headers.erb +0 -16
  335. data/lib/yard/server/templates/doc_server/frames/html/frames.erb +0 -13
  336. data/lib/yard/server/templates/doc_server/frames/html/setup.rb +0 -3
  337. data/lib/yard/server/templates/doc_server/full_list/html/full_list.erb +0 -34
  338. data/lib/yard/server/templates/doc_server/full_list/html/setup.rb +0 -20
  339. data/spec/handlers/examples/macro_handler_001.rb.txt +0 -83
@@ -1,4 +1,4 @@
1
- /*
1
+ /*
2
2
  * foo
3
3
  */
4
4
  VALUE
@@ -406,7 +406,7 @@ void init_gmpz()
406
406
  // Integer Arithmetic
407
407
  rb_define_method(cGMP_Z, "+", r_gmpz_add, 1);
408
408
  rb_define_method(cGMP_Z, "add!", r_gmpz_add_self, 1);
409
- rb_define_method(cGMP_Z, "-", r_gmpz_sub, 1);
409
+ rb_define_method(cGMP_Z, "-", r_gmpz_sub, 1);
410
410
  rb_define_method(cGMP_Z, "sub!", r_gmpz_sub_self, 1);
411
411
  rb_define_method(cGMP_Z, "*", r_gmpz_mul, 1);
412
412
  rb_define_method(cGMP_Z, "addmul!", r_gmpz_addmul_self, 2);
@@ -16,7 +16,7 @@ describe YARD::Parser::Ruby::AstNode do
16
16
  ast.jump(:params).object_id.should == ast.object_id
17
17
  end
18
18
  end
19
-
19
+
20
20
  describe '#pretty_print' do
21
21
  it "should show a list of nodes" do
22
22
  obj = YARD::Parser::Ruby::RubyParser.parse("# x\nbye", "x").ast
@@ -34,7 +34,7 @@ eof
34
34
  s.tokens.to_s(true).should == "(foo; bar)"
35
35
  s.block.should be_nil
36
36
  end
37
-
37
+
38
38
  it "should allow for non-block statements" do
39
39
  s = stmt "hello_world(1, 2, 3)"
40
40
  s.tokens.to_s.should == "hello_world(1, 2, 3)"
@@ -101,7 +101,7 @@ eof
101
101
  s.tokens.to_s(true).should == "foo do\n ...\n end"
102
102
  s.block.to_s.should == "puts 'hi'"
103
103
  end
104
-
104
+
105
105
  it "should parse blocks with {}" do
106
106
  s = stmt "x { y }"
107
107
  s.tokens.to_s(true).should == "x { ... }"
@@ -111,16 +111,16 @@ eof
111
111
  s.tokens.to_s(true).should == "x() { ... }"
112
112
  s.block.to_s.should == "y"
113
113
  end
114
-
114
+
115
115
  it "should parse blocks with begin/end" do
116
116
  s = stmt "begin xyz end"
117
117
  s.tokens.to_s(true).should == "begin ... end"
118
118
  s.block.to_s.should == "xyz"
119
119
  end
120
-
120
+
121
121
  it "should parse nested blocks" do
122
122
  s = stmt "foo(:x) { baz(:y) { skippy } }"
123
-
123
+
124
124
  s.tokens.to_s(true).should == "foo(:x) { ... }"
125
125
  s.block.to_s.should == "baz(:y) { skippy }"
126
126
  end
@@ -152,7 +152,7 @@ eof
152
152
  s.tokens.to_s(true).should == "[:foo, x {}]"
153
153
  s.block.to_s.should == ""
154
154
  end
155
-
155
+
156
156
  it "should handle multiple methods" do
157
157
  s = stmt <<-eof
158
158
  def %; end
@@ -160,7 +160,7 @@ eof
160
160
  eof
161
161
  s.to_s.should == "def %; end"
162
162
  end
163
-
163
+
164
164
  it "should handle nested methods" do
165
165
  s = stmt <<-eof
166
166
  def *(o) def +@; end
@@ -178,7 +178,7 @@ eof
178
178
  eof
179
179
  s[1].to_s.should == "def method1\n def dynamic; end\n end"
180
180
  end
181
-
181
+
182
182
  it "should get comment line numbers" do
183
183
  s = stmt <<-eof
184
184
  # comment
@@ -220,68 +220,68 @@ eof
220
220
  s.comments.should == ["comment"]
221
221
  s.comments_range.should == (1..1)
222
222
  end
223
-
223
+
224
224
  it "should only look up to two lines back for comments" do
225
225
  s = stmt <<-eof
226
226
  # comments
227
-
227
+
228
228
  # comments
229
-
229
+
230
230
  def method; end
231
231
  eof
232
232
  s.comments.should == ["comments"]
233
-
233
+
234
234
  s = stmt <<-eof
235
235
  # comments
236
-
237
-
236
+
237
+
238
238
  def method; end
239
239
  eof
240
240
  s.comments.should == nil
241
241
 
242
242
  ss = stmts <<-eof
243
243
  # comments
244
-
245
-
244
+
245
+
246
246
  def method; end
247
-
247
+
248
248
  # hello
249
249
  def method2; end
250
250
  eof
251
251
  ss[0].comments.should == nil
252
252
  ss[1].comments.should == ['hello']
253
253
  end
254
-
254
+
255
255
  it "should handle CRLF (Windows) newlines" do
256
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
257
  s[1].comments.should == ['Test Test', '', 'Example:', ' example code']
258
258
  end
259
-
259
+
260
260
  it "should handle elsif blocks" do
261
261
  s = stmts(stmt("if 0\n foo\nelsif 2\n bar\nend\nbaz").block)
262
262
  s.size.should == 2
263
263
  s[1].tokens.to_s.should == "elsif 2"
264
264
  s[1].block.to_s.should == "bar"
265
265
  end
266
-
266
+
267
267
  it "should handle else blocks" do
268
268
  s = stmts(stmt("if 0\n foo\nelse\n bar\nend\nbaz").block)
269
269
  s.size.should == 2
270
270
  s[1].tokens.to_s.should == "else"
271
271
  s[1].block.to_s.should == "bar"
272
272
  end
273
-
273
+
274
274
  it "should allow aliasing keywords" do
275
275
  ['do x', 'x do', 'end begin', 'begin end'].each do |a|
276
276
  s = stmt("alias #{a}\ndef foo; end")
277
277
  s.tokens.to_s.should == "alias #{a}"
278
278
  s.block.should be_nil
279
279
  end
280
-
280
+
281
281
  s = stmt("alias do x if 2 ==\n 2")
282
282
  s.tokens.to_s.should == "alias do x if 2 ==\n 2"
283
283
  end
284
-
284
+
285
285
  it "should not open a block on an aliased keyword block opener" do
286
286
  s = stmts(<<-eof)
287
287
  class A; alias x do end
@@ -290,7 +290,7 @@ eof
290
290
  s[0].block.to_s.should == 'alias x do'
291
291
  s.size.should > 1
292
292
  end
293
-
293
+
294
294
  it "should convert heredoc to string" do
295
295
  src = "<<-XML\n foo\n\nXML"
296
296
  s = stmt(src)
@@ -9,12 +9,12 @@ describe YARD::Parser::Ruby::Legacy::TokenList do
9
9
  lambda { TokenList.new(TokenList.new) }.should_not raise_error(ArgumentError)
10
10
  TokenList.new.push(TokenList.new("x = 2")).size.should == 6
11
11
  end
12
-
12
+
13
13
  it "accept a token (via constructor or push)" do
14
14
  lambda { TokenList.new(Token.new(0, 0)) }.should_not raise_error(ArgumentError)
15
15
  TokenList.new.push(Token.new(0, 0), Token.new(1, 1)).size.should == 2
16
16
  end
17
-
17
+
18
18
  it "should accept a string and parse it as code (via constructor or push)" do
19
19
  lambda { TokenList.new("x = 2") }.should_not raise_error(ArgumentError)
20
20
  x = TokenList.new
@@ -22,11 +22,11 @@ describe YARD::Parser::Ruby::Legacy::TokenList do
22
22
  x.size.should == 6
23
23
  x.to_s.should == "x\n=\n2\n"
24
24
  end
25
-
25
+
26
26
  it "should not accept any other input" do
27
27
  lambda { TokenList.new(:notcode) }.should raise_error(ArgumentError)
28
28
  end
29
-
29
+
30
30
  it "should not interpolate string data" do
31
31
  x = TokenList.new('x = "hello #{world}"')
32
32
  x.size.should == 6
@@ -34,7 +34,7 @@ describe YARD::Parser::Ruby::Legacy::TokenList do
34
34
  x.to_s.should == 'x = "hello #{world}"' + "\n"
35
35
  end
36
36
  end
37
-
37
+
38
38
  describe '#to_s' do
39
39
  before do
40
40
  @t = TokenList.new
@@ -53,7 +53,7 @@ describe YARD::Parser::Ruby::Legacy::TokenList do
53
53
  @t[7].set_text " "
54
54
  @t[8].set_text "end"
55
55
  end
56
-
56
+
57
57
  it "should only show the statement portion of the tokens by default" do
58
58
  @t.to_s.should == "def x"
59
59
  end
@@ -61,7 +61,7 @@ describe YARD::Parser::Ruby::Legacy::TokenList do
61
61
  it "should show ... for the block token if all of the tokens are shown" do
62
62
  @t.to_s(true).should == "def x; ... end"
63
63
  end
64
-
64
+
65
65
  it "should ignore ... if show_block = false" do
66
66
  @t.to_s(true, false).should == "def x; end"
67
67
  end
@@ -1,18 +1,18 @@
1
1
  require File.join(File.dirname(__FILE__), '..', '..', 'spec_helper')
2
2
 
3
3
  describe YARD::Parser::Ruby::RubyParser do
4
- def stmt(stmt)
4
+ def stmt(stmt)
5
5
  YARD::Parser::Ruby::RubyParser.new(stmt, nil).parse.root.first
6
6
  end
7
-
7
+
8
8
  def stmts(stmts)
9
9
  YARD::Parser::Ruby::RubyParser.new(stmts, nil).parse.root
10
10
  end
11
-
11
+
12
12
  def tokenize(stmt)
13
13
  YARD::Parser::Ruby::RubyParser.new(stmt, nil).parse.tokens
14
14
  end
15
-
15
+
16
16
  describe '#parse' do
17
17
  it "should get comment line numbers" do
18
18
  s = stmt <<-eof
@@ -55,24 +55,24 @@ describe YARD::Parser::Ruby::RubyParser do
55
55
  s.comments.should == "comment"
56
56
  s.comments_range.should == (1..1)
57
57
  end
58
-
58
+
59
59
  it "should only look up to two lines back for comments" do
60
- s = stmt <<-eof
60
+ s = stmts <<-eof
61
61
  # comments
62
62
 
63
63
  # comments
64
64
 
65
65
  def method; end
66
66
  eof
67
- s.comments.should == "comments"
67
+ s[1].comments.should == "comments"
68
68
 
69
- s = stmt <<-eof
69
+ s = stmts <<-eof
70
70
  # comments
71
71
 
72
72
 
73
73
  def method; end
74
74
  eof
75
- s.comments.should == nil
75
+ s[1].comments.should == nil
76
76
 
77
77
  ss = stmts <<-eof
78
78
  # comments
@@ -83,52 +83,52 @@ describe YARD::Parser::Ruby::RubyParser do
83
83
  # hello
84
84
  def method2; end
85
85
  eof
86
- ss[0].comments.should == nil
87
- ss[1].comments.should == 'hello'
86
+ ss[1].comments.should == nil
87
+ ss[2].comments.should == 'hello'
88
88
  end
89
-
89
+
90
90
  it "should handle 1.9 lambda syntax with args" do
91
91
  src = "->(a,b,c=1,*args,&block) { hello_world }"
92
92
  stmt(src).source.should == src
93
93
  end
94
-
94
+
95
95
  it "should handle 1.9 lambda syntax" do
96
96
  src = "-> { hello_world }"
97
97
  stmt(src).source.should == src
98
98
  end
99
-
99
+
100
100
  it "should handle standard lambda syntax" do
101
101
  src = "lambda { hello_world }"
102
102
  stmt(src).source.should == src
103
103
  end
104
-
104
+
105
105
  it "should throw a ParserSyntaxError on invalid code" do
106
106
  lambda { stmt("Foo, bar.") }.should raise_error(YARD::Parser::ParserSyntaxError)
107
107
  end
108
-
108
+
109
109
  it "should handle bare hashes as method parameters" do
110
110
  src = "command :a => 1, :b => 2, :c => 3"
111
111
  stmt(src).jump(:command)[1].source.should == ":a => 1, :b => 2, :c => 3"
112
-
112
+
113
113
  src = "command a: 1, b: 2, c: 3"
114
114
  stmt(src).jump(:command)[1].source.should == "a: 1, b: 2, c: 3"
115
115
  end
116
-
116
+
117
117
  it "should handle source for hash syntax" do
118
118
  src = "{ :a => 1, :b => 2, :c => 3 }"
119
119
  stmt(src).jump(:hash).source.should == "{ :a => 1, :b => 2, :c => 3 }"
120
120
  end
121
-
121
+
122
122
  it "should handle an empty hash" do
123
123
  stmt("{}").jump(:hash).source.should == "{}"
124
124
  end
125
-
125
+
126
126
  it "new hash label syntax should show label without colon" do
127
127
  ast = stmt("{ a: 1 }").jump(:label)
128
128
  ast[0].should == "a"
129
129
  ast.source.should == "a:"
130
130
  end
131
-
131
+
132
132
  it "should handle begin/rescue blocks" do
133
133
  ast = stmt("begin; X; rescue => e; Y end").jump(:rescue)
134
134
  ast.source.should == "rescue => e; Y end"
@@ -139,19 +139,19 @@ describe YARD::Parser::Ruby::RubyParser do
139
139
  ast = stmt("begin; X; rescue A, B => e; Y end").jump(:rescue)
140
140
  ast.source.should == "rescue A, B => e; Y end"
141
141
  end
142
-
142
+
143
143
  it "should handle method rescue blocks" do
144
144
  ast = stmt("def x; A; rescue Y; B end")
145
145
  ast.source.should == "def x; A; rescue Y; B end"
146
146
  ast.jump(:rescue).source.should == "rescue Y; B end"
147
147
  end
148
-
148
+
149
149
  it "should handle defs with keywords as method name" do
150
150
  ast = stmt("# docstring\nclass A;\ndef class; end\nend")
151
151
  ast.jump(:class).docstring.should == "docstring"
152
152
  ast.jump(:class).line_range.should == (2..4)
153
153
  end
154
-
154
+
155
155
  it "should end source properly on array reference" do
156
156
  ast = stmt("AS[0, 1 ] ")
157
157
  ast.source.should == 'AS[0, 1 ]'
@@ -159,17 +159,17 @@ describe YARD::Parser::Ruby::RubyParser do
159
159
  ast = stmt("def x(a = S[1]) end").jump(:default_arg)
160
160
  ast.source.should == 'a = S[1]'
161
161
  end
162
-
162
+
163
163
  it "should end source properly on if/unless mod" do
164
164
  %w(if unless while).each do |mod|
165
165
  stmt("A=1 #{mod} true").source.should == "A=1 #{mod} true"
166
166
  end
167
167
  end
168
-
168
+
169
169
  it "should show proper source for assignment" do
170
170
  stmt("A=1").jump(:assign).source.should == "A=1"
171
171
  end
172
-
172
+
173
173
  it "should show proper source for a top_const_ref" do
174
174
  s = stmt("::\nFoo::Bar")
175
175
  s.jump(:top_const_ref).source.should == "::\nFoo"
@@ -178,7 +178,7 @@ describe YARD::Parser::Ruby::RubyParser do
178
178
  s.source.should == "::\nFoo::Bar"
179
179
  s.line_range.to_a.should == [1, 2]
180
180
  end
181
-
181
+
182
182
  it "should show proper source for inline heredoc" do
183
183
  src = "def foo\n foo(<<-XML, 1, 2)\n bar\n\n XML\nend"
184
184
  s = stmt(src)
@@ -186,7 +186,7 @@ describe YARD::Parser::Ruby::RubyParser do
186
186
  s.source.should == src
187
187
  t.map {|x| x[1] }.join.should == src
188
188
  end
189
-
189
+
190
190
  it "should show proper source for regular heredoc" do
191
191
  src = "def foo\n x = <<-XML\n Hello \#{name}!\n Bye!\n XML\nend"
192
192
  s = stmt(src)
@@ -202,7 +202,7 @@ describe YARD::Parser::Ruby::RubyParser do
202
202
  s.source.should == src
203
203
  t.map {|x| x[1] }.join.should == src
204
204
  end
205
-
205
+
206
206
  it "should show proper source for string" do
207
207
  ["'", '"'].each do |q|
208
208
  src = "#{q}hello\n\nworld#{q}"
@@ -210,16 +210,16 @@ describe YARD::Parser::Ruby::RubyParser do
210
210
  s.jump(:string_content).source.should == "hello\n\nworld"
211
211
  s.source.should == src
212
212
  end
213
-
213
+
214
214
  src = '("this is a string")'
215
215
  stmt(src).jump(:string_literal).source.should == '"this is a string"'
216
216
  end
217
-
217
+
218
218
  it "should show proper source for %w() array" do
219
219
  src = "%w(\na b c\n d e f\n)"
220
220
  stmt(src).jump(:qwords_literal).source.should == src
221
221
  end
222
-
222
+
223
223
  it "should show proper source for %w{} array" do
224
224
  src = "%w{\na b c\n d e f\n}"
225
225
  stmt(src).jump(:array).source.should == src
@@ -261,7 +261,7 @@ describe YARD::Parser::Ruby::RubyParser do
261
261
  eof
262
262
  s.jump(:array).source.should == "['foo', 'bar']"
263
263
  end
264
-
264
+
265
265
  it "should show source for unary minus" do
266
266
  stmt("X = - 1").jump(:unary).source.should == '- 1'
267
267
  end
@@ -269,5 +269,27 @@ describe YARD::Parser::Ruby::RubyParser do
269
269
  it "should show source for unary exclamation" do
270
270
  stmt("X = !1").jump(:unary).source.should == '!1'
271
271
  end
272
+
273
+ it "should find lone comments" do
274
+ Registry.clear
275
+ ast = YARD.parse_string(<<-eof).enumerator
276
+ class Foo
277
+ ##
278
+ # comment here
279
+
280
+
281
+ def foo; end
282
+
283
+ # end comment
284
+ end
285
+ eof
286
+ comment = ast.first.last.first
287
+ comment.type.should == :comment
288
+ comment.docstring_hash_flag.should be_true
289
+ comment.docstring.strip.should == "comment here"
290
+
291
+ ast.first.last.last.type.should == :comment
292
+ ast.first.last.last.docstring.should == "end comment"
293
+ end
272
294
  end
273
295
  end if HAVE_RIPPER