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,31 +1,31 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe YARD::CodeObjects::MethodObject do
4
- before do
5
- Registry.clear
4
+ before do
5
+ Registry.clear
6
6
  @yard = ModuleObject.new(:root, :YARD)
7
7
  end
8
-
8
+
9
9
  it "should have a path of testing for an instance method in the root" do
10
10
  meth = MethodObject.new(:root, :testing)
11
11
  meth.path.should == "#testing"
12
12
  end
13
-
13
+
14
14
  it "should have a path of YARD#testing for an instance method in YARD" do
15
15
  meth = MethodObject.new(@yard, :testing)
16
16
  meth.path.should == "YARD#testing"
17
17
  end
18
-
18
+
19
19
  it "should have a path of YARD.testing for a class method in YARD" do
20
20
  meth = MethodObject.new(@yard, :testing, :class)
21
21
  meth.path.should == "YARD.testing"
22
22
  end
23
-
23
+
24
24
  it "should have a path of ::testing (note the ::) for a class method added to root namespace" do
25
25
  meth = MethodObject.new(:root, :testing, :class)
26
26
  meth.path.should == "::testing"
27
27
  end
28
-
28
+
29
29
  it "should exist in the registry after successful creation" do
30
30
  obj = MethodObject.new(@yard, :something, :class)
31
31
  Registry.at("YARD.something").should_not be_nil
@@ -34,7 +34,7 @@ describe YARD::CodeObjects::MethodObject do
34
34
  obj = MethodObject.new(@yard, :somethingelse)
35
35
  Registry.at("YARD#somethingelse").should_not be_nil
36
36
  end
37
-
37
+
38
38
  it "should allow #scope to be changed after creation" do
39
39
  obj = MethodObject.new(@yard, :something, :class)
40
40
  Registry.at("YARD.something").should_not be_nil
@@ -42,20 +42,43 @@ describe YARD::CodeObjects::MethodObject do
42
42
  Registry.at("YARD.something").should be_nil
43
43
  Registry.at("YARD#something").should_not be_nil
44
44
  end
45
-
45
+
46
+ it "should create object in :class scope if scope is :module" do
47
+ obj = MethodObject.new(@yard, :module_func, :module)
48
+ obj.scope.should == :class
49
+ obj.visibility.should == :public
50
+ Registry.at('YARD.module_func').should_not be_nil
51
+ end
52
+
53
+ it "should create second private instance method if scope is :module" do
54
+ MethodObject.new(@yard, :module_func, :module)
55
+ obj = Registry.at('YARD#module_func')
56
+ obj.should_not be_nil
57
+ obj.visibility.should == :private
58
+ obj.scope.should == :instance
59
+ end
60
+
61
+ it "should yield block to second method if scope is :module" do
62
+ MethodObject.new(@yard, :module_func, :module) do |o|
63
+ o.docstring = 'foo'
64
+ end
65
+ Registry.at('YARD.module_func').docstring.should == 'foo'
66
+ Registry.at('YARD#module_func').docstring.should == 'foo'
67
+ end
68
+
46
69
  describe '#name' do
47
70
  it "should show a prefix for an instance method when prefix=true" do
48
71
  obj = MethodObject.new(nil, :something)
49
72
  obj.name(true).should == "#something"
50
73
  end
51
-
74
+
52
75
  it "should never show a prefix for a class method" do
53
76
  obj = MethodObject.new(nil, :something, :class)
54
77
  obj.name.should == :"something"
55
78
  obj.name(true).should == "something"
56
79
  end
57
80
  end
58
-
81
+
59
82
  describe '#is_attribute?' do
60
83
  it "should only return true if attribute is set in namespace for read/write" do
61
84
  obj = MethodObject.new(@yard, :foo)
@@ -64,24 +87,24 @@ describe YARD::CodeObjects::MethodObject do
64
87
  MethodObject.new(@yard, :foo=).is_attribute?.should be_false
65
88
  end
66
89
  end
67
-
90
+
68
91
  describe '#attr_info' do
69
92
  it "should return attribute info if namespace is available" do
70
93
  obj = MethodObject.new(@yard, :foo)
71
94
  @yard.attributes[:instance][:foo] = {:read => obj, :write => nil}
72
95
  obj.attr_info.should == @yard.attributes[:instance][:foo]
73
96
  end
74
-
97
+
75
98
  it "should return nil if namespace is proxy" do
76
99
  obj = MethodObject.new(P(:ProxyClass), :foo)
77
100
  MethodObject.new(@yard, :foo).attr_info.should == nil
78
101
  end
79
-
102
+
80
103
  it "should return nil if meth is not an attribute" do
81
104
  MethodObject.new(@yard, :notanattribute).attr_info.should == nil
82
105
  end
83
106
  end
84
-
107
+
85
108
  describe '#writer?' do
86
109
  it "should return true if method is a writer attribute" do
87
110
  obj = MethodObject.new(@yard, :foo=)
@@ -99,26 +122,26 @@ describe YARD::CodeObjects::MethodObject do
99
122
  MethodObject.new(@yard, :NOTfoo).reader?.should == false
100
123
  end
101
124
  end
102
-
125
+
103
126
  describe '#constructor?' do
104
127
  before { @class = ClassObject.new(:root, :MyClass) }
105
128
 
106
129
  it "should mark the #initialize method as constructor" do
107
130
  MethodObject.new(@class, :initialize)
108
131
  end
109
-
132
+
110
133
  it "should not mark Klass.initialize as constructor" do
111
134
  MethodObject.new(@class, :initialize, :class).constructor?.should be_false
112
135
  end
113
-
136
+
114
137
  it "should not mark module method #initialize as constructor" do
115
138
  MethodObject.new(@yard, :initialize).constructor?.should be_false
116
139
  end
117
140
  end
118
-
141
+
119
142
  describe '#overridden_method' do
120
143
  before { Registry.clear }
121
-
144
+
122
145
  it "should return overridden method from mixin first" do
123
146
  YARD.parse_string(<<-eof)
124
147
  module C; def foo; end end
@@ -127,7 +150,7 @@ describe YARD::CodeObjects::MethodObject do
127
150
  eof
128
151
  Registry.at('B#foo').overridden_method.should == Registry.at('C#foo')
129
152
  end
130
-
153
+
131
154
  it "should return overridden method from superclass" do
132
155
  YARD.parse_string(<<-eof)
133
156
  class A; def foo; end end
@@ -135,7 +158,7 @@ describe YARD::CodeObjects::MethodObject do
135
158
  eof
136
159
  Registry.at('B#foo').overridden_method.should == Registry.at('A#foo')
137
160
  end
138
-
161
+
139
162
  it "should return nil if none is found" do
140
163
  YARD.parse_string(<<-eof)
141
164
  class A; end
@@ -143,7 +166,7 @@ describe YARD::CodeObjects::MethodObject do
143
166
  eof
144
167
  Registry.at('B#foo').overridden_method.should be_nil
145
168
  end
146
-
169
+
147
170
  it "should return nil if namespace is a proxy" do
148
171
  YARD.parse_string "def ARGV.foo; end"
149
172
  Registry.at('ARGV.foo').overridden_method.should be_nil
@@ -2,11 +2,11 @@ require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe YARD::CodeObjects::ModuleObject do
4
4
  describe "#meths" do
5
- before do
6
- Registry.clear
7
-
5
+ before do
6
+ Registry.clear
7
+
8
8
  # setup the object space:
9
- #
9
+ #
10
10
  # YARD:module
11
11
  # YARD#foo:method
12
12
  # YARD#foo2:method
@@ -14,7 +14,7 @@ describe YARD::CodeObjects::ModuleObject do
14
14
  # YARD.bar:method
15
15
  # SomeMod#mixmethod
16
16
  # SomeMod#xyz:method
17
- #
17
+ #
18
18
  @yard = ModuleObject.new(:root, :YARD)
19
19
  MethodObject.new(@yard, :foo)
20
20
  MethodObject.new(@yard, :xyz)
@@ -32,11 +32,11 @@ describe YARD::CodeObjects::ModuleObject do
32
32
  MethodObject.new(@another, :fizz)
33
33
  MethodObject.new(@another, :bar)
34
34
  MethodObject.new(@another, :fazz, :class)
35
-
35
+
36
36
  @yard.instance_mixins << @other
37
37
  @yard.class_mixins << @another
38
38
  end
39
-
39
+
40
40
  it "should list all methods (including mixin methods) via #meths" do
41
41
  meths = @yard.meths
42
42
  meths.should include(P("YARD#foo"))
@@ -45,7 +45,7 @@ describe YARD::CodeObjects::ModuleObject do
45
45
  meths.should include(P("SomeMod#mixmethod"))
46
46
  meths.should include(P("AnotherMod#fizz"))
47
47
  end
48
-
48
+
49
49
  it "should allow :visibility to be set" do
50
50
  meths = @yard.meths(:visibility => :public)
51
51
  meths.should_not include(P("YARD.bar"))
@@ -54,7 +54,7 @@ describe YARD::CodeObjects::ModuleObject do
54
54
  meths.should include(P("YARD.bar"))
55
55
  meths.should_not include(P("YARD#foo2"))
56
56
  end
57
-
57
+
58
58
  it "should only display class methods for :scope => :class" do
59
59
  meths = @yard.meths(:scope => :class)
60
60
  meths.should_not include(P("YARD#foo"))
@@ -65,7 +65,7 @@ describe YARD::CodeObjects::ModuleObject do
65
65
  meths.should include(P("YARD.bar"))
66
66
  meths.should include(P("AnotherMod#fizz"))
67
67
  end
68
-
68
+
69
69
  it "should only display instance methods for :scope => :class" do
70
70
  meths = @yard.meths(:scope => :instance)
71
71
  meths.should include(P("YARD#foo"))
@@ -74,7 +74,7 @@ describe YARD::CodeObjects::ModuleObject do
74
74
  meths.should_not include(P("YARD.bar"))
75
75
  meths.should_not include(P("AnotherMod#fizz"))
76
76
  end
77
-
77
+
78
78
  it "should allow :included to be set" do
79
79
  meths = @yard.meths(:included => false)
80
80
  meths.should_not include(P("SomeMod#mixmethod"))
@@ -83,14 +83,14 @@ describe YARD::CodeObjects::ModuleObject do
83
83
  meths.should include(P("YARD#foo2"))
84
84
  meths.should include(P("YARD.bar"))
85
85
  end
86
-
86
+
87
87
  it "should choose the method defined in the class over an included module" do
88
88
  meths = @yard.meths
89
89
  meths.should_not include(P("SomeMod#xyz"))
90
90
  meths.should include(P("YARD#xyz"))
91
91
  meths.should_not include(P("AnotherMod#bar"))
92
92
  meths.should include(P("YARD.bar"))
93
-
93
+
94
94
  meths = @other.meths
95
95
  meths.should include(P("SomeMod#xyz"))
96
96
 
@@ -113,7 +113,7 @@ describe YARD::CodeObjects::ModuleObject do
113
113
  @mod2.instance_mixins << @mod3
114
114
  @mod3.instance_mixins << @mod4
115
115
  @mod1.instance_mixins << @mod4
116
-
116
+
117
117
  @proxy = P(:SomeProxyClass)
118
118
  @mod5.instance_mixins << @proxy
119
119
  end
@@ -125,12 +125,12 @@ describe YARD::CodeObjects::ModuleObject do
125
125
  it "should show proper inheritance three when modules are included" do
126
126
  @mod1.inheritance_tree(true).should == [@mod1, @mod2, @mod3, @mod4]
127
127
  end
128
-
128
+
129
129
  it "should not list inheritance tree of proxy objects in inheritance tree" do
130
130
  @proxy.should_not_receive(:inheritance_tree)
131
131
  @mod5.instance_mixins.should == [@proxy]
132
132
  end
133
-
133
+
134
134
  it "should list class mixins in inheritance tree" do
135
135
  mod = ModuleObject.new(:root, :ClassMethods)
136
136
  recvmod = ModuleObject.new(:root, :ReceivingModule)
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe YARD::CodeObjects::NamespaceObject do
4
4
  before { Registry.clear }
5
-
5
+
6
6
  describe '#child' do
7
7
  it "should return the object matching the name passed in if argument is a Symbol" do
8
8
  obj = NamespaceObject.new(nil, :YARD)
@@ -19,7 +19,7 @@ describe YARD::CodeObjects::NamespaceObject do
19
19
  obj.child(:somevalue => 2).should == other
20
20
  end
21
21
  end
22
-
22
+
23
23
  describe '#meths' do
24
24
  it "should return #meths even if parent is a Proxy" do
25
25
  obj = NamespaceObject.new(P(:String), :YARD)
@@ -84,7 +84,7 @@ describe YARD::CodeObjects::NamespaceObject do
84
84
  meths.should_not include(bmeth)
85
85
  end
86
86
  end
87
-
87
+
88
88
  describe '#class_attributes' do
89
89
  it "should list class attributes" do
90
90
  a = NamespaceObject.new(nil, :Mod)
@@ -95,7 +95,7 @@ describe YARD::CodeObjects::NamespaceObject do
95
95
  a.class_attributes.keys.should_not include(:b)
96
96
  end
97
97
  end
98
-
98
+
99
99
  describe '#instance_attributes' do
100
100
  it "should list instance attributes" do
101
101
  a = NamespaceObject.new(nil, :Mod)
@@ -106,7 +106,7 @@ describe YARD::CodeObjects::NamespaceObject do
106
106
  a.instance_attributes.keys.should include(:b)
107
107
  end
108
108
  end
109
-
109
+
110
110
  describe '#constants/#included_constants' do
111
111
  before do
112
112
  Registry.clear
@@ -156,7 +156,7 @@ describe YARD::CodeObjects::NamespaceObject do
156
156
  consts.should_not include(P('A::CONST2'))
157
157
  end
158
158
  end
159
-
159
+
160
160
  describe '#included_meths' do
161
161
  it "should return all included methods with :all = true" do
162
162
  YARD.parse_string <<-eof
@@ -2,20 +2,20 @@ require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe YARD::CodeObjects::Proxy do
4
4
  before { Registry.clear }
5
-
5
+
6
6
  it "should return the object if it's in the Registry" do
7
7
  pathobj = ModuleObject.new(:root, :YARD)
8
8
  proxyobj = P(:root, :YARD)
9
9
  proxyobj.type.should == :module
10
10
  Proxy.should_not === proxyobj
11
11
  end
12
-
12
+
13
13
  it "should handle complex string namespaces" do
14
14
  ModuleObject.new(:root, :A)
15
15
  pathobj = ModuleObject.new(P(nil, :A), :B)
16
16
  P(:root, "A::B").should be_instance_of(ModuleObject)
17
17
  end
18
-
18
+
19
19
  it "should not return true to Proxy === obj if obj is a Proxy class holding a resolved object" do
20
20
  Proxy.should === P(:root, 'a')
21
21
  Proxy.should_not === P(:root)
@@ -24,14 +24,14 @@ describe YARD::CodeObjects::Proxy do
24
24
  x = Proxy.new(:root, 'a')
25
25
  Proxy.should_not === x
26
26
  end
27
-
27
+
28
28
  it "should return the object if it's an included Module" do
29
29
  yardobj = ModuleObject.new(:root, :YARD)
30
30
  pathobj = ClassObject.new(:root, :TestClass)
31
31
  pathobj.instance_mixins << yardobj
32
32
  P(P(nil, :TestClass), :YARD).should be_instance_of(ModuleObject)
33
33
  end
34
-
34
+
35
35
  it "should respond_to respond_to?" do
36
36
  obj = ClassObject.new(:root, :Object)
37
37
  yardobj = ModuleObject.new(:root, :YARD)
@@ -43,33 +43,33 @@ describe YARD::CodeObjects::Proxy do
43
43
  P(:NOTYARD).respond_to?(:initialize).should == false
44
44
  P(:NOTYARD).respond_to?(:initialize, true).should == true
45
45
  end
46
-
46
+
47
47
  it "should make itself obvious that it's a proxy" do
48
48
  pathobj = P(:root, :YARD)
49
49
  pathobj.class.should == Proxy
50
50
  (Proxy === pathobj).should == true
51
- end
51
+ end
52
52
 
53
53
  it "should pretend it's the object's type if it can resolve" do
54
54
  pathobj = ModuleObject.new(:root, :YARD)
55
55
  proxyobj = P(:root, :YARD)
56
56
  proxyobj.should be_instance_of(ModuleObject)
57
57
  end
58
-
58
+
59
59
  it "should handle instance method names" do
60
60
  obj = P(nil, '#test')
61
61
  obj.name.should == :test
62
62
  obj.path.should == "#test"
63
63
  obj.namespace.should == Registry.root
64
64
  end
65
-
65
+
66
66
  it "should handle instance method names under a namespace" do
67
67
  pathobj = ModuleObject.new(:root, :YARD)
68
68
  obj = P(pathobj, "A::B#test")
69
69
  obj.name.should == :test
70
70
  obj.path.should == "A::B#test"
71
71
  end
72
-
72
+
73
73
  it "should allow type to be changed" do
74
74
  obj = P("InvalidClass")
75
75
  obj.type.should == :proxy
@@ -77,17 +77,17 @@ describe YARD::CodeObjects::Proxy do
77
77
  obj.type = :class
78
78
  obj.type.should == :class
79
79
  end
80
-
80
+
81
81
  it "should retain a type change between Proxy objects" do
82
82
  P("InvalidClass").type = :class
83
83
  P("InvalidClass").type.should == :class
84
84
  end
85
-
85
+
86
86
  it "should never equal Registry.root" do
87
87
  P("MYPROXY").should_not == Registry.root
88
88
  P("X::A").should_not == Registry.root
89
89
  end
90
-
90
+
91
91
  it "should reset namespace and name when object is resolved" do
92
92
  obj1 = ModuleObject.new(:root, :YARD)
93
93
  obj2 = ModuleObject.new(:root, :NOTYARD)
@@ -96,24 +96,24 @@ describe YARD::CodeObjects::Proxy do
96
96
  resolved.namespace.should == Registry.root
97
97
  resolved.name.should == :YARD
98
98
  end
99
-
99
+
100
100
  it "should ensure that the correct object was resolved" do
101
101
  foo = ModuleObject.new(:root, :Foo)
102
102
  foobar = ModuleObject.new(foo, :Bar)
103
103
  foobaz = ClassObject.new(foo, :Baz)
104
-
104
+
105
105
  # Remember, we're looking for Qux::Bar, not just 'Bar'
106
106
  proxy = Proxy.new(foobar, 'Foo::Qux::Bar')
107
107
  proxy.type.should == :proxy
108
-
108
+
109
109
  qux = ModuleObject.new(foo, :Qux)
110
110
  quxbar = ModuleObject.new(qux, :Bar)
111
-
111
+
112
112
  # Now it should resolve
113
113
  proxy.type.should == :module
114
114
  end
115
-
116
-
115
+
116
+
117
117
  it "should handle constant names in namespaces" do
118
118
  YARD.parse_string <<-eof
119
119
  module A; end; B = A