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
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassVariableHandler" do
4
4
  before(:all) { parse_file :class_variable_handler_001, __FILE__ }
5
-
5
+
6
6
  it "should not parse class variables inside methods" do
7
7
  obj = Registry.at("A::B::@@somevar")
8
8
  obj.source.should == "@@somevar = \"hello\""
@@ -2,19 +2,19 @@ require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ConstantHandler" do
4
4
  before(:all) { parse_file :constant_handler_001, __FILE__ }
5
-
5
+
6
6
  it "should not parse constants inside methods" do
7
7
  Registry.at("A::B::SOMECONSTANT").source.should == "SOMECONSTANT= \"hello\""
8
8
  end
9
-
9
+
10
10
  it "should only parse valid constants" do
11
11
  Registry.at("A::B::notaconstant").should be_nil
12
12
  end
13
-
13
+
14
14
  it "should maintain newlines" do
15
15
  Registry.at("A::B::MYCONSTANT").value.gsub("\r", "").should == "A +\nB +\nC +\nD"
16
16
  end
17
-
17
+
18
18
  it "should turn Const = Struct.new(:sym) into class Const with attr :sym" do
19
19
  obj = Registry.at("MyClass")
20
20
  obj.should be_kind_of(CodeObjects::ClassObject)
@@ -38,13 +38,13 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ConstantHandle
38
38
 
39
39
  Registry.at("NotMyClass2").should be_nil
40
40
  end
41
-
41
+
42
42
  it "should turn Const = Struct.new into empty struct" do
43
43
  obj = Registry.at("MyEmptyStruct")
44
44
  obj.should_not be_nil
45
45
  obj.attributes[:instance].should be_empty
46
46
  end
47
-
47
+
48
48
  it "should maintain docstrings on structs defined via constants" do
49
49
  obj = Registry.at("DocstringStruct")
50
50
  obj.should_not be_nil
@@ -57,7 +57,7 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ConstantHandle
57
57
  a2.docstring.should == "Another attr"
58
58
  a2.tag(:return).types.should == ["Number"]
59
59
  end
60
-
60
+
61
61
  it "should raise undocumentable error in 1.9 parser for Struct.new assignment to non-const" do
62
62
  undoc_error "nonconst = Struct.new"
63
63
  end unless LEGACY_PARSER
@@ -1,10 +1,10 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper'
2
2
  require 'ostruct'
3
3
 
4
- describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler" do
5
- before(:all) { parse_file :macro_handler_001, __FILE__ }
6
-
7
- it "should create a readable attribute when @attribute r is found" do
4
+ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}DSLHandler" do
5
+ before(:all) { parse_file :dsl_handler_001, __FILE__ }
6
+
7
+ it "should create a readable attribute when @!attribute r is found" do
8
8
  obj = Registry.at('Foo#attr1')
9
9
  obj.should_not be_nil
10
10
  obj.should be_reader
@@ -12,14 +12,14 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
12
12
  Registry.at('Foo#attr1=').should be_nil
13
13
  end
14
14
 
15
- it "should create a writable attribute when @attribute w is found" do
15
+ it "should create a writable attribute when @!attribute w is found" do
16
16
  obj = Registry.at('Foo#attr2=')
17
17
  obj.should_not be_nil
18
18
  obj.should be_writer
19
19
  Registry.at('Foo#attr2').should be_nil
20
20
  end
21
-
22
- it "should default to readwrite @attribute" do
21
+
22
+ it "should default to readwrite @!attribute" do
23
23
  obj = Registry.at('Foo#attr3')
24
24
  obj.should_not be_nil
25
25
  obj.should be_reader
@@ -27,59 +27,59 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
27
27
  obj.should_not be_nil
28
28
  obj.should be_writer
29
29
  end
30
-
31
- it "should allow @attribute to define alternate method name" do
30
+
31
+ it "should allow @!attribute to define alternate method name" do
32
32
  Registry.at('Foo#attr4').should be_nil
33
33
  Registry.at('Foo#custom').should_not be_nil
34
34
  end
35
35
 
36
- it "should default to creating an instance method for any DSL method with tags" do
36
+ it "should default to creating an instance method for any DSL method with special tags" do
37
37
  obj = Registry.at('Foo#implicit0')
38
38
  obj.should_not be_nil
39
39
  obj.docstring.should == "IMPLICIT METHOD!"
40
40
  obj.tag(:return).types.should == ['String']
41
41
  end
42
-
43
- it "should set the method name when using @method" do
44
- obj = Registry.at('Foo.xyz')
42
+
43
+ it "should recognize implicit docstring when it has scope tag" do
44
+ obj = Registry.at("Foo.implicit1")
45
45
  obj.should_not be_nil
46
- obj.signature.should == 'def xyz(a, b, c)'
47
- obj.source.should == 'foo_bar'
48
- obj.docstring.should == 'The foo method'
49
- end
50
-
51
- it "should create hidden overlaod tag when @method has signature" do
52
- obj = Registry.at('Foo.xyz')
53
- obj.docstring.tag(:overload).signature.should == 'xyz(a, b, c)'
54
- obj.docstring.tag(:overload).object.should == obj
46
+ obj.scope.should == :class
55
47
  end
56
-
57
- it "should set the method name when using @overload" do
58
- obj = Registry.at('Foo#qux2')
48
+
49
+ it "should recognize implicit docstring when it has visibility tag" do
50
+ obj = Registry.at("Foo#implicit2")
59
51
  obj.should_not be_nil
60
- obj.signature.should == 'def qux2(a, b, c)'
61
- obj.source.should == 'something'
62
- obj.docstring.tag(:overload).name.should == :qux2
63
- obj.docstring.tag(:overload).object.should == obj
52
+ obj.visibility.should == :protected
53
+ end
54
+
55
+ it "should not recognize implicit docstring with any other normal tag" do
56
+ obj = Registry.at('Foo#implicit_invalid3')
57
+ obj.should be_nil
64
58
  end
65
59
 
66
- it "should set the method object when using @overload" do
67
- obj = Registry.at('Foo#qux')
60
+ it "should set the method name when using @!method" do
61
+ obj = Registry.at('Foo.xyz')
68
62
  obj.should_not be_nil
69
- obj.signature.should == 'def qux(a, b, c)'
70
- obj.source.should == 'something :qux'
71
- obj.docstring.tag(:overload).name.should == :qux
72
- obj.docstring.tag(:overload).object.should == obj
63
+ obj.signature.should == 'def xyz(a, b, c)'
64
+ obj.source.should == 'foo_bar'
65
+ obj.docstring.should == 'The foo method'
73
66
  end
74
-
75
- it "should allow setting of @scope" do
67
+
68
+ it "should allow setting of @!scope" do
76
69
  Registry.at('Foo.xyz').scope.should == :class
77
70
  end
78
-
79
- it "should allow setting of @visibility" do
71
+
72
+ it "should create module function if @!scope is module" do
73
+ mod_c = Registry.at('Foo.modfunc1')
74
+ mod_i = Registry.at('Foo#modfunc1')
75
+ mod_c.scope.should == :class
76
+ mod_i.visibility.should == :private
77
+ end
78
+
79
+ it "should allow setting of @!visibility" do
80
80
  Registry.at('Foo.xyz').visibility.should == :protected
81
81
  end
82
-
82
+
83
83
  it "should ignore DSL methods without tags" do
84
84
  Registry.at('Foo#implicit_invalid').should be_nil
85
85
  end
@@ -88,19 +88,23 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
88
88
  Registry.at('Foo#implicit_valid').should_not be_nil
89
89
  Registry.at('Foo#implicit_invalid2').should be_nil
90
90
  end
91
-
91
+
92
92
  it "should allow creation of macros" do
93
93
  macro = CodeObjects::MacroObject.find('property')
94
94
  macro.should_not be_nil
95
95
  macro.should_not be_attached
96
96
  macro.method_object.should be_nil
97
97
  end
98
-
98
+
99
99
  it "should handle macros with no parameters to expand" do
100
100
  Registry.at('Foo#none').should_not be_nil
101
101
  Registry.at('Baz#none').signature.should == 'def none(foo, bar)'
102
102
  end
103
-
103
+
104
+ it "should expand $N on method definitions" do
105
+ Registry.at('Foo#regular_meth').docstring.should == 'a b c'
106
+ end
107
+
104
108
  it "should apply new macro docstrings on new objects" do
105
109
  obj = Registry.at('Foo#name')
106
110
  obj.should_not be_nil
@@ -112,7 +116,7 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
112
116
  obj.tag(:return).types.should == ['String']
113
117
  obj.tag(:return).text.should == 'the property name'
114
118
  end
115
-
119
+
116
120
  it "should allow reuse of named macros" do
117
121
  obj = Registry.at('Foo#age')
118
122
  obj.should_not be_nil
@@ -124,10 +128,17 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
124
128
  obj.tag(:return).types.should == ['Fixnum']
125
129
  obj.tag(:return).text.should == 'the property age'
126
130
  end
127
-
128
- it "should use implicitly named macros" do
131
+
132
+ it "should know about method information on DSL with macro expansion" do
133
+ Registry.at('Foo#right_name').should_not be_nil
134
+ Registry.at('Foo#right_name').source.should ==
135
+ 'implicit_with_different_method_name :wrong, :right'
136
+ Registry.at('Foo#wrong_name').should be_nil
137
+ end
138
+
139
+ it "should use attached macros" do
129
140
  macro = CodeObjects::MacroObject.find('parser')
130
- macro.macro_data.should == "@method $1(opts = {})\n@return NOTHING!"
141
+ macro.macro_data.should == "@!method $1(opts = {})\n@return NOTHING!"
131
142
  macro.should_not be_nil
132
143
  macro.should be_attached
133
144
  macro.method_object.should == P('Foo.parser')
@@ -137,28 +148,36 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
137
148
  obj.signature.should == "def c_parser(opts = {})"
138
149
  obj.docstring.tag(:return).text.should == "NOTHING!"
139
150
  end
140
-
141
- it "should only use implicit macros on methods defined in inherited hierarchy" do
151
+
152
+ it "should append docstring on DSL method to attached macro" do
153
+ obj = Registry.at('Foo#d_parser')
154
+ obj.should_not be_nil
155
+ obj.docstring.should == "Another docstring"
156
+ obj.signature.should == "def d_parser(opts = {})"
157
+ obj.docstring.tag(:return).text.should == "NOTHING!"
158
+ end
159
+
160
+ it "should only use attached macros on methods defined in inherited hierarchy" do
142
161
  Registry.at('Bar#x_parser').should be_nil
143
162
  Registry.at('Baz#y_parser').should_not be_nil
144
163
  end
145
-
164
+
146
165
  it "should handle top-level DSL methods" do
147
166
  obj = Registry.at('#my_other_method')
148
167
  obj.should_not be_nil
149
168
  obj.docstring.should == "Docstring for method"
150
169
  end
151
-
170
+
152
171
  it "should handle Constant.foo syntax" do
153
172
  obj = Registry.at('#beep')
154
173
  obj.should_not be_nil
155
174
  obj.signature.should == 'def beep(a, b, c)'
156
175
  end
157
-
176
+
158
177
  it "should not detect implicit macros with invalid method names" do
159
178
  undoc_error <<-eof
160
179
  ##
161
- # IMPLICIT METHOD THAT SHOULD
180
+ # IMPLICIT METHOD THAT SHOULD
162
181
  # NOT BE DETECTED
163
182
  dsl_method '/foo/bar'
164
183
  eof
@@ -1,7 +1,7 @@
1
1
  module A
2
2
  def a; end
3
3
  alias_method :b, :a
4
-
4
+
5
5
  # Handle keyword syntax too
6
6
  alias :c :a
7
7
  alias d? a
@@ -12,7 +12,7 @@ module A
12
12
  alias * a
13
13
  alias for a
14
14
  alias ConstantName a
15
-
15
+
16
16
  # Handle quoted symbols
17
17
  alias :'foo' :'a'
18
18
  end
@@ -24,7 +24,7 @@ end
24
24
  class B < C
25
25
  alias_method(:q, :x)
26
26
  alias_method :r?, :x
27
- alias_method :s, :to_s
27
+ alias_method :s, :to_s
28
28
  alias_method :t, :inspect if 500 == 3 * CONSTANT
29
29
  alias_method :<<, :a
30
30
  alias_method :for, :a
@@ -35,10 +35,10 @@ end
35
35
  class D
36
36
  # Foo bar
37
37
  def a; "FOO" end
38
-
38
+
39
39
  # @return [String]
40
40
  alias b a
41
-
41
+
42
42
  # @return [Numeric]
43
43
  def a; 0 end
44
44
  end
@@ -6,15 +6,15 @@ class A
6
6
  else
7
7
  def c; end
8
8
  end
9
-
9
+
10
10
  def d; end if 50 * 2 == 101
11
-
11
+
12
12
  unless false
13
13
  def e; end
14
14
  else
15
15
  def enot; end
16
16
  end
17
-
17
+
18
18
  def g; end unless 5 * 2 == 101
19
19
 
20
20
  def h
@@ -22,37 +22,37 @@ class A
22
22
  def hnot; end
23
23
  end
24
24
  end
25
-
25
+
26
26
  if defined? A
27
27
  def j; end
28
28
  else
29
29
  def jnot; end
30
30
  end
31
-
31
+
32
32
  if defined? RUBY_VERSION
33
33
  def k; end
34
34
  else
35
35
  def knot; end
36
36
  end
37
-
37
+
38
38
  if 0
39
39
  def nnot; end
40
40
  else
41
41
  def n; end
42
42
  end
43
-
43
+
44
44
  if 256
45
45
  def o; end
46
46
  else
47
47
  def onot; end
48
48
  end
49
-
49
+
50
50
  if true
51
51
  def p; end
52
52
  else
53
53
  def pnot; end
54
54
  end
55
-
55
+
56
56
  if false
57
57
  def qnot; end
58
58
  else
@@ -2,7 +2,7 @@
2
2
  class A
3
3
  module B; end
4
4
  private
5
- class B::C < String;
5
+ class B::C < String;
6
6
  def method1; end
7
7
  def method2; end
8
8
  end
@@ -0,0 +1,110 @@
1
+ class Foo
2
+ attr_accessor :ignoreme
3
+
4
+ # IMPLICIT METHOD!
5
+ # @return [String]
6
+ just_a_method_for :implicit0
7
+
8
+ # IMPLICIT METHOD2!
9
+ # @!scope class
10
+ just_a_method_for :implicit1
11
+
12
+ # IMPLICIT METHOD3!
13
+ # @!visibility protected
14
+ just_a_method_for :implicit2
15
+
16
+ # Not recognized
17
+ just_a_method_for :implicit_invalid
18
+
19
+ #
20
+ ## IS NOT RECOGNIZED!
21
+ just_a_method_for :implicit_invalid2
22
+
23
+ # @deprecated don't use this
24
+ just_a_method_for :implicit_invalid3
25
+
26
+ ##
27
+ # IS RECOGNIZED!
28
+ just_a_method_for 'implicit_valid'
29
+
30
+ # @!attribute [r]
31
+ # @return [Numeric] a number
32
+ a_readable_attribute :attr1
33
+
34
+ # @!attribute [w]
35
+ a_writable_attribute :attr2, 'bar'
36
+
37
+ # @!attribute
38
+ default_attribute :attr3
39
+
40
+ # @!attribute custom
41
+ default_attribute :attr4
42
+
43
+ # @!method xyz(a, b, c)
44
+ # The foo method
45
+ # @param [String] a
46
+ # @!visibility protected
47
+ # @!scope class
48
+ foo_bar
49
+
50
+ # @!macro property
51
+ # @!method $1(${3-})
52
+ # A $0 that is awesome.
53
+ # @param $3 first parameter
54
+ # @return [$2] the property $1
55
+ property :name, String, :a, :b, :c
56
+
57
+ # @!macro property
58
+ property :age, Fixnum, :value
59
+
60
+ # This is just for x
61
+ # @!macro [attach] parser
62
+ # @!method $1(opts = {})
63
+ # @return NOTHING!
64
+ parser :x
65
+
66
+ parser :c_parser
67
+
68
+ # Another docstring
69
+ parser :d_parser
70
+
71
+ # @!macro [attach] none
72
+ # @!method none(foo, bar)
73
+ none
74
+
75
+ # @!macro something
76
+ # @!method $1(a, b, c)
77
+ something :qux
78
+
79
+ # @!method qux2(a, b, c)
80
+ something
81
+
82
+ # @!macro
83
+ # $1 $2 $3
84
+ def regular_meth(a, b, c) end
85
+
86
+ # @!macro [new] different
87
+ # @!method $2_name(a = 1)
88
+
89
+ # @!macro different
90
+ implicit_with_different_method_name :wrong, :right
91
+
92
+ # @!scope module
93
+ a_module_function :modfunc1
94
+ end
95
+
96
+ class Bar
97
+ parser :x_parser
98
+ end
99
+
100
+ class Baz < Foo
101
+ parser :y_parser
102
+ none { }
103
+ end
104
+
105
+ # @!method my_other_method
106
+ # Docstring for method
107
+ method_that_makes_a_method
108
+
109
+ # @!macro something
110
+ foobarbaz :beep