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
@@ -35,7 +35,7 @@ describe YARD::CodeObjects::ClassObject do
35
35
  @class2.inheritance_tree(true)
36
36
  @class2.mixins.should == []
37
37
  end
38
-
38
+
39
39
  it "should list class mixins in inheritance tree" do
40
40
  mod = ModuleObject.new(:root, :ClassMethods)
41
41
  klass = ClassObject.new(:root, :ReceivingClass)
@@ -47,7 +47,7 @@ describe YARD::CodeObjects::ClassObject do
47
47
  describe "#meths / #inherited_meths" do
48
48
  before(:all) do
49
49
  Registry.clear
50
-
50
+
51
51
  YARD.parse_string <<-eof
52
52
  class SuperYard < String
53
53
  def foo; end
@@ -58,26 +58,26 @@ describe YARD::CodeObjects::ClassObject do
58
58
  private
59
59
  def self.bar; end
60
60
  end
61
-
61
+
62
62
  class MiddleYard < SuperYard
63
63
  def middle; end
64
64
  end
65
-
65
+
66
66
  class YARD < MiddleYard
67
67
  def mymethod; end
68
68
  def bar; end
69
69
  end
70
-
70
+
71
71
  module IncludedYard
72
72
  def foo; end
73
73
  end
74
-
74
+
75
75
  class FinalYard < SuperYard
76
76
  include IncludedYard
77
77
  end
78
78
  eof
79
79
  end
80
-
80
+
81
81
  it "should show inherited methods by default" do
82
82
  meths = P(:YARD).meths
83
83
  meths.should include(P("YARD#mymethod"))
@@ -85,7 +85,7 @@ describe YARD::CodeObjects::ClassObject do
85
85
  meths.should include(P("SuperYard#foo2"))
86
86
  meths.should include(P("SuperYard.bar"))
87
87
  end
88
-
88
+
89
89
  it "should allow :inherited to be set to false" do
90
90
  meths = P(:YARD).meths(:inherited => false)
91
91
  meths.should include(P("YARD#mymethod"))
@@ -93,12 +93,12 @@ describe YARD::CodeObjects::ClassObject do
93
93
  meths.should_not include(P("SuperYard#foo2"))
94
94
  meths.should_not include(P("SuperYard.bar"))
95
95
  end
96
-
97
- it "should not show overridden methods" do
96
+
97
+ it "should not show overridden methods" do
98
98
  meths = P(:YARD).meths
99
99
  meths.should include(P("YARD#bar"))
100
100
  meths.should_not include(P("SuperYard#bar"))
101
-
101
+
102
102
  meths = P(:YARD).inherited_meths
103
103
  meths.should_not include(P("YARD#bar"))
104
104
  meths.should_not include(P("YARD#mymethod"))
@@ -106,13 +106,13 @@ describe YARD::CodeObjects::ClassObject do
106
106
  meths.should include(P("SuperYard#foo2"))
107
107
  meths.should include(P("SuperYard.bar"))
108
108
  end
109
-
109
+
110
110
  it "should not show inherited methods overridden by other subclasses" do
111
111
  meths = P(:YARD).inherited_meths
112
112
  meths.should include(P('MiddleYard#middle'))
113
113
  meths.should_not include(P('SuperYard#middle'))
114
114
  end
115
-
115
+
116
116
  it "should show mixed in methods before superclass method" do
117
117
  meths = P(:FinalYard).meths
118
118
  meths.should include(P('IncludedYard#foo'))
@@ -121,67 +121,67 @@ describe YARD::CodeObjects::ClassObject do
121
121
  end
122
122
 
123
123
  describe "#constants / #inherited_constants" do
124
- before(:all) do
125
- Registry.clear
126
-
124
+ before(:all) do
125
+ Registry.clear
126
+
127
127
  Parser::SourceParser.parse_string <<-eof
128
128
  class YARD
129
129
  CONST1 = 1
130
130
  CONST2 = "hello"
131
131
  CONST4 = 0
132
132
  end
133
-
133
+
134
134
  class SUPERYARD < YARD
135
135
  CONST4 = 5
136
136
  end
137
-
137
+
138
138
  class SubYard < SUPERYARD
139
139
  CONST2 = "hi"
140
140
  CONST3 = "foo"
141
141
  end
142
142
  eof
143
143
  end
144
-
144
+
145
145
  it "should list inherited constants by default" do
146
146
  consts = P(:SubYard).constants
147
147
  consts.should include(P("YARD::CONST1"))
148
148
  consts.should include(P("SubYard::CONST3"))
149
-
149
+
150
150
  consts = P(:SubYard).inherited_constants
151
151
  consts.should include(P("YARD::CONST1"))
152
152
  consts.should_not include(P("YARD::CONST2"))
153
153
  consts.should_not include(P("SubYard::CONST2"))
154
154
  consts.should_not include(P("SubYard::CONST3"))
155
155
  end
156
-
156
+
157
157
  it "should not list inherited constants if turned off" do
158
158
  consts = P(:SubYard).constants(:inherited => false)
159
159
  consts.should_not include(P("YARD::CONST1"))
160
160
  consts.should include(P("SubYard::CONST3"))
161
161
  end
162
-
162
+
163
163
  it "should not include an inherited constant if it is overridden by the object" do
164
164
  consts = P(:SubYard).constants
165
165
  consts.should include(P("SubYard::CONST2"))
166
166
  consts.should_not include(P("YARD::CONST2"))
167
167
  end
168
-
168
+
169
169
  it "should not include an inherited constant if it is overridden by another subclass" do
170
170
  consts = P(:SubYard).inherited_constants
171
171
  consts.should include(P("SUPERYARD::CONST4"))
172
172
  consts.should_not include(P("YARD::CONST4"))
173
173
  end
174
-
174
+
175
175
  it "should not set a superclass on BasicObject class" do
176
176
  o = ClassObject.new(:root, :Object)
177
177
  o.superclass.should == P(:BasicObject)
178
178
  end
179
-
179
+
180
180
  it "should set superclass of Object to BasicObject" do
181
181
  o = ClassObject.new(:root, :BasicObject)
182
182
  o.superclass.should be_nil
183
183
  end
184
-
184
+
185
185
  it "should raise ArgumentError if superclass == self" do
186
186
  lambda do
187
187
  o = ClassObject.new(:root, :Object) do |o|
@@ -189,9 +189,9 @@ describe YARD::CodeObjects::ClassObject do
189
189
  end
190
190
  end.should raise_error(ArgumentError)
191
191
  end
192
-
192
+
193
193
  it "should tell the world if it is an exception class" do
194
- o = ClassObject.new(:root, :MyClass)
194
+ o = ClassObject.new(:root, :MyClass)
195
195
  o2 = ClassObject.new(:root, :OtherClass)
196
196
  o2.superclass = :SystemCallError
197
197
  o3 = ClassObject.new(:root, :StandardError)
@@ -200,20 +200,20 @@ describe YARD::CodeObjects::ClassObject do
200
200
 
201
201
  o.superclass = :Object
202
202
  o.is_exception?.should == false
203
-
203
+
204
204
  o.superclass = :Exception
205
205
  o.is_exception?.should == true
206
-
206
+
207
207
  o.superclass = :NoMethodError
208
208
  o.is_exception?.should == true
209
-
209
+
210
210
  o.superclass = o2
211
211
  o.is_exception?.should == true
212
-
212
+
213
213
  o.superclass = o3
214
214
  o.is_exception?.should == true
215
215
  end
216
-
216
+
217
217
  it "should not raise ArgumentError if superclass is proxy in different namespace" do
218
218
  lambda do
219
219
  o = ClassObject.new(:root, :X) do |o|
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe YARD::CodeObjects::CodeObjectList do
4
4
  before { Registry.clear }
5
-
5
+
6
6
  it "pushing a value should only allow CodeObjects::Base, String or Symbol" do
7
7
  list = CodeObjectList.new(nil)
8
8
  lambda { list.push(:hash => 1) }.should raise_error(ArgumentError)
@@ -11,21 +11,21 @@ describe YARD::CodeObjects::CodeObjectList do
11
11
  list << ModuleObject.new(nil, :YARD)
12
12
  list.size.should == 3
13
13
  end
14
-
14
+
15
15
  it "added value should be a proxy if parameter was String or Symbol" do
16
16
  list = CodeObjectList.new(nil)
17
17
  list << "Test"
18
18
  list.first.class.should == Proxy
19
19
  end
20
-
20
+
21
21
  it "should contain a unique list of objects" do
22
22
  obj = ModuleObject.new(nil, :YARD)
23
23
  list = CodeObjectList.new(nil)
24
-
24
+
25
25
  list << P(:YARD)
26
26
  list << obj
27
27
  list.size.should == 1
28
-
28
+
29
29
  list << :Test
30
30
  list << "Test"
31
31
  list.size.should == 2
@@ -32,7 +32,7 @@ describe YARD::CodeObjects, "METHODMATCH" do
32
32
  "A::B::C :: method"[CodeObjects::METHODMATCH].should == "A::B::C :: method"
33
33
  "SomeClass . method"[CodeObjects::METHODMATCH].should == "SomeClass . method"
34
34
  end
35
-
35
+
36
36
  it "should match self.method" do
37
37
  "self :: method!"[CodeObjects::METHODMATCH].should == "self :: method!"
38
38
  "self.is_a?"[CodeObjects::METHODMATCH].should == "self.is_a?"
@@ -51,10 +51,11 @@ describe YARD::CodeObjects, "BUILTIN_CLASSES" do
51
51
  it "should include all base classes" do
52
52
  YARD::CodeObjects::BUILTIN_CLASSES.each do |name|
53
53
  next if name == "MatchingData" && !defined?(::MatchingData)
54
+ next if name == "Continuation"
54
55
  eval(name).should be_instance_of(Class)
55
56
  end
56
57
  end
57
-
58
+
58
59
  it "should include all exceptions" do
59
60
  YARD::CodeObjects::BUILTIN_EXCEPTIONS.each do |name|
60
61
  YARD::CodeObjects::BUILTIN_CLASSES.should include(name)
@@ -64,7 +65,7 @@ end
64
65
 
65
66
  describe YARD::CodeObjects, "BUILTIN_ALL" do
66
67
  it "should include classes modules and exceptions" do
67
- a = YARD::CodeObjects::BUILTIN_ALL
68
+ a = YARD::CodeObjects::BUILTIN_ALL
68
69
  b = YARD::CodeObjects::BUILTIN_CLASSES
69
70
  c = YARD::CodeObjects::BUILTIN_MODULES
70
71
  a.should == b+c
@@ -6,65 +6,65 @@ describe YARD::CodeObjects::ExtraFileObject do
6
6
  File.should_receive(:read).with('file.txt').and_return('')
7
7
  ExtraFileObject.new('file.txt')
8
8
  end
9
-
9
+
10
10
  it "should raise Errno::ENOENT if contents=nil and file does not exist" do
11
11
  lambda { ExtraFileObject.new('file.txt') }.should raise_error(Errno::ENOENT)
12
12
  end
13
-
13
+
14
14
  it "should not attempt to read from disk if contents are provided" do
15
15
  ExtraFileObject.new('file.txt', 'CONTENTS')
16
16
  end
17
-
17
+
18
18
  it "should set filename to filename" do
19
19
  file = ExtraFileObject.new('a/b/c/file.txt', 'CONTENTS')
20
20
  file.filename.should == "a/b/c/file.txt"
21
21
  end
22
-
22
+
23
23
  it "should parse out attributes at top of the file" do
24
24
  file = ExtraFileObject.new('file.txt', "# @title X\n# @some_attribute Y\nFOO BAR")
25
25
  file.attributes[:title].should == "X"
26
26
  file.attributes[:some_attribute].should == "Y"
27
27
  file.contents.should == "FOO BAR"
28
28
  end
29
-
29
+
30
30
  it "should allow whitespace prior to '#' marker when parsing attributes" do
31
31
  file = ExtraFileObject.new('file.txt', " \t # @title X\nFOO BAR")
32
32
  file.attributes[:title].should == "X"
33
33
  file.contents.should == "FOO BAR"
34
34
  end
35
-
35
+
36
36
  it "should parse out old-style #!markup shebang format" do
37
37
  file = ExtraFileObject.new('file.txt', "#!foobar\nHello")
38
38
  file.attributes[:markup].should == "foobar"
39
39
  end
40
-
40
+
41
41
  it "should not parse old-style #!markup if any whitespace is found" do
42
42
  file = ExtraFileObject.new('file.txt', " #!foobar\nHello")
43
43
  file.attributes[:markup].should be_nil
44
44
  file.contents.should == " #!foobar\nHello"
45
45
  end
46
-
46
+
47
47
  it "should not parse out attributes if there are newlines prior to attributes" do
48
48
  file = ExtraFileObject.new('file.txt', "\n# @title\nFOO BAR")
49
49
  file.attributes.should be_empty
50
50
  file.contents.should == "\n# @title\nFOO BAR"
51
51
  end
52
-
52
+
53
53
  it "should set contents to data after attributes" do
54
54
  file = ExtraFileObject.new('file.txt', "# @title\nFOO BAR")
55
55
  file.contents.should == "FOO BAR"
56
56
  end
57
-
57
+
58
58
  it "should preserve newlines" do
59
59
  file = ExtraFileObject.new('file.txt', "FOO\r\nBAR\nBAZ")
60
60
  file.contents.should == "FOO\r\nBAR\nBAZ"
61
61
  end
62
-
62
+
63
63
  it "should not include newlines in attribute data" do
64
64
  file = ExtraFileObject.new('file.txt', "# @title FooBar\r\nHello world")
65
65
  file.attributes[:title].should == "FooBar"
66
66
  end
67
-
67
+
68
68
  it "should force encoding to @encoding attribute if present" do
69
69
  log.should_not_receive(:warn)
70
70
  data = "# @encoding sjis\nFOO"
@@ -80,12 +80,12 @@ describe YARD::CodeObjects::ExtraFileObject do
80
80
  file = ExtraFileObject.new('file.txt', data)
81
81
  file.contents.encoding.should == encoding
82
82
  end if RUBY19
83
-
83
+
84
84
  it "should ignore encoding in 1.8.x (or encoding-unaware platforms)" do
85
85
  log.should_not_receive(:warn)
86
86
  file = ExtraFileObject.new('file.txt', "# @encoding INVALID\nFOO")
87
87
  end if RUBY18
88
-
88
+
89
89
  it "should attempt to re-parse data as 8bit ascii if parsing fails" do
90
90
  log.should_not_receive(:warn)
91
91
  str = "\xB0"
@@ -94,26 +94,26 @@ describe YARD::CodeObjects::ExtraFileObject do
94
94
  file.contents.should == "\xB0"
95
95
  end
96
96
  end
97
-
97
+
98
98
  describe '#name' do
99
99
  it "should be set to basename (not extension) of filename" do
100
100
  file = ExtraFileObject.new('file.txt', '')
101
101
  file.name.should == 'file'
102
102
  end
103
103
  end
104
-
104
+
105
105
  describe '#title' do
106
106
  it "should return @title attribute if present" do
107
107
  file = ExtraFileObject.new('file.txt', '# @title FOO')
108
108
  file.title.should == 'FOO'
109
109
  end
110
-
110
+
111
111
  it "should return #name if no @title attribute exists" do
112
112
  file = ExtraFileObject.new('file.txt', '')
113
113
  file.title.should == 'file'
114
114
  end
115
115
  end
116
-
116
+
117
117
  describe '#==' do
118
118
  it "should define equality on filename alone" do
119
119
  file1 = ExtraFileObject.new('file.txt', 'A')
@@ -127,6 +127,6 @@ describe YARD::CodeObjects::ExtraFileObject do
127
127
  a |= [file2]
128
128
  a.size.should == 1
129
129
  end
130
-
130
+
131
131
  end
132
132
  end
@@ -1,10 +1,10 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe YARD::CodeObjects::MacroObject do
4
- before do
5
- Registry.clear
4
+ before do
5
+ Registry.clear
6
6
  end
7
-
7
+
8
8
  describe '.create' do
9
9
  def create(*args) MacroObject.create(*args) end
10
10
 
@@ -13,60 +13,55 @@ describe YARD::CodeObjects::MacroObject do
13
13
  obj = Registry.at('.macro.foo')
14
14
  obj.should_not be_nil
15
15
  end
16
-
16
+
17
17
  it "should use identity map" do
18
18
  obj1 = create('foo', '')
19
19
  obj2 = create('foo', '')
20
20
  obj1.object_id.should == obj2.object_id
21
21
  end
22
-
22
+
23
23
  it "should allow specifying of macro data" do
24
24
  obj = create('foo', 'MACRODATA')
25
25
  obj.macro_data.should == 'MACRODATA'
26
26
  end
27
-
27
+
28
28
  it "should attach if a method object is provided" do
29
29
  obj = create('foo', 'MACRODATA', P('Foo.property'))
30
30
  obj.method_object.should == P('Foo.property')
31
31
  obj.should be_attached
32
32
  end
33
33
  end
34
-
34
+
35
35
  describe '.find' do
36
36
  before { MacroObject.create('foo', 'DATA') }
37
-
37
+
38
38
  it "should search for an object by name" do
39
39
  MacroObject.find('foo').macro_data.should == 'DATA'
40
40
  end
41
-
41
+
42
42
  it "should accept Symbol" do
43
43
  MacroObject.find(:foo).macro_data.should == 'DATA'
44
44
  end
45
45
  end
46
-
46
+
47
47
  describe '.find_or_create' do
48
- it "should look up name if @macro is present and find object" do
48
+ it "should look up name if @!macro is present and find object" do
49
49
  macro1 = MacroObject.create('foo', 'FOO')
50
- macro2 = MacroObject.find_or_create("@macro foo\na b c")
50
+ macro2 = MacroObject.find_or_create('foo', "a b c")
51
51
  macro1.should == macro2
52
52
  end
53
-
53
+
54
54
  it "should create new macro if macro by that name does not exist" do
55
- MacroObject.find_or_create("@macro foo\n @method $1\nEXTRA")
56
- MacroObject.find('foo').macro_data.should == "@method $1"
57
- end
58
-
59
- it "should use full docstring if no text block is present in @macro" do
60
- MacroObject.find_or_create("@macro foo\n@method $1\nEXTRA")
61
- MacroObject.find('foo').macro_data.should == "EXTRA\n@method $1"
55
+ MacroObject.find_or_create('foo', "@!method $1")
56
+ MacroObject.find('foo').macro_data.should == "@!method $1"
62
57
  end
63
58
  end
64
-
59
+
65
60
  describe '.apply' do
66
61
  before do
67
62
  @args = %w(foo a b c)
68
63
  end
69
-
64
+
70
65
  def apply(comments)
71
66
  MacroObject.apply(comments, @args)
72
67
  end
@@ -76,31 +71,30 @@ describe YARD::CodeObjects::MacroObject do
76
71
  end
77
72
 
78
73
  it "should handle macro text inside block" do
79
- apply("@macro name\n foo$1$2$3\nfoobaz").should == "fooabc\nfoobaz"
74
+ apply("@!macro\n foo$1$2$3\nfoobaz").should == "fooabc\nfoobaz"
80
75
  end
81
-
76
+
82
77
  it "should append docstring to existing macro" do
83
78
  macro = MacroObject.create('name', '$3$2$1')
84
- result = MacroObject.apply("@macro name\nfoobar", @args)
79
+ result = MacroObject.apply("@!macro name\nfoobar", @args)
85
80
  result.should == "cba\nfoobar"
86
81
  end
87
-
82
+
88
83
  it "should use only non macro data if docstring is an existing macro" do
89
- data = "@macro name\n $3$2$1\nEXTRA"
90
- MacroObject.find_or_create(data)
91
- result = MacroObject.apply(data, @args)
84
+ data = "@!macro name\n $3$2$1\nEXTRA"
85
+ result = MacroObject.apply(data, @args, 'SOURCE')
92
86
  result.should == "cba\nEXTRA"
93
- MacroObject.apply("@macro name\nFOO", @args).should == "cba\nFOO"
87
+ MacroObject.apply("@!macro name\nFOO", @args).should == "cba\nFOO"
94
88
  end
95
-
89
+
96
90
  it "should create macros if they don't exist" do
97
- result = MacroObject.apply("@macro name\n foo!$1", @args)
91
+ result = MacroObject.apply("@!macro name\n foo!$1", @args, 'SOURCE')
98
92
  result.should == "foo!a"
99
93
  MacroObject.find('name').macro_data.should == 'foo!$1'
100
94
  end
101
-
95
+
102
96
  it "should keep other tags" do
103
- apply("@macro name\n foo$1$2$3\n@param name foo\nfoo").should ==
97
+ apply("@!macro\n foo$1$2$3\n@param name foo\nfoo").should ==
104
98
  "fooabc\nfoo\n@param name\n foo"
105
99
  end
106
100
  end
@@ -139,15 +133,15 @@ describe YARD::CodeObjects::MacroObject do
139
133
  it "should handle negative indexes ($-N)" do
140
134
  expand("$-1 ${-2-} ${-2--2}").should == "c b, c b"
141
135
  end
142
-
136
+
143
137
  it "should accept Docstring objects" do
144
138
  expand(Docstring.new("$1\n@param name foo")).should == "a\n@param name foo"
145
139
  end
146
140
  end
147
-
141
+
148
142
  describe '#expand' do
149
143
  it "should expand macro given its data" do
150
- macro = MacroObject.create_docstring("@macro foo\n $1 $2 THREE!")
144
+ macro = MacroObject.create_docstring('foo', '$1 $2 THREE!')
151
145
  macro.expand(['NAME', 'ONE', 'TWO']).should == "ONE TWO THREE!"
152
146
  end
153
147
  end