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
@@ -3,12 +3,12 @@ require File.dirname(__FILE__) + "/../../spec_helper"
3
3
  describe YARD::Templates::Helpers::Markup::RDocMarkup do
4
4
  describe 'loading mechanism' do
5
5
  before { @good_libs = [] }
6
-
6
+
7
7
  def require(lib)
8
8
  return true if @good_libs.include?(lib)
9
9
  raise LoadError
10
10
  end
11
-
11
+
12
12
  def load_markup
13
13
  begin
14
14
  require 'rdoc/markup'
@@ -24,12 +24,12 @@ describe YARD::Templates::Helpers::Markup::RDocMarkup do
24
24
  end
25
25
  end
26
26
  end
27
-
27
+
28
28
  it "should load RDoc2.x if rdoc/markup is present" do
29
29
  @good_libs += ['rdoc/markup', 'rdoc/markup/to_html']
30
30
  load_markup.should == :RDoc2
31
31
  end
32
-
32
+
33
33
  it "should fail on RDoc2.x if rdoc/markup/to_html is not present" do
34
34
  @good_libs += ['rdoc/markup']
35
35
  lambda { load_markup }.should raise_error(NameError)
@@ -39,44 +39,44 @@ describe YARD::Templates::Helpers::Markup::RDocMarkup do
39
39
  @good_libs += ['rdoc/markup/simple_markup', 'rdoc/markup/simple_markup/to_html']
40
40
  load_markup.should == :RDoc1
41
41
  end
42
-
42
+
43
43
  it "should error on loading if neither lib is present" do
44
44
  lambda { load_markup }.should raise_error(NameError)
45
45
  end
46
46
  end
47
-
47
+
48
48
  describe '#fix_typewriter' do
49
49
  def fix_typewriter(text)
50
50
  YARD::Templates::Helpers::Markup::RDocMarkup.new('').send(:fix_typewriter, text)
51
51
  end
52
52
 
53
53
  it "should use #fix_typewriter to convert +text+ to <tt>text</tt>" do
54
- fix_typewriter("Some +typewriter text <+.").should ==
54
+ fix_typewriter("Some +typewriter text <+.").should ==
55
55
  "Some <tt>typewriter" +
56
56
  " text &lt;</tt>."
57
- fix_typewriter("Not +typewriter text.").should ==
57
+ fix_typewriter("Not +typewriter text.").should ==
58
58
  "Not +typewriter text."
59
- fix_typewriter("Alternating +type writer+ text +here+.").should ==
59
+ fix_typewriter("Alternating +type writer+ text +here+.").should ==
60
60
  "Alternating <tt>type writer" +
61
61
  "</tt> text <tt>here</tt>."
62
- fix_typewriter("No ++problem.").should ==
62
+ fix_typewriter("No ++problem.").should ==
63
63
  "No ++problem."
64
- fix_typewriter("Math + stuff +is ok+").should ==
64
+ fix_typewriter("Math + stuff +is ok+").should ==
65
65
  "Math + stuff <tt>is ok</tt>"
66
66
  fix_typewriter("Hello +{Foo}+ World").should == "Hello <tt>{Foo}</tt> World"
67
67
  end
68
-
68
+
69
69
  it "should not apply to code blocks" do
70
70
  fix_typewriter("<code>Hello +hello+</code>").should == "<code>Hello +hello+</code>"
71
71
  end
72
-
72
+
73
73
  it "should not apply to HTML tag attributes" do
74
- fix_typewriter("<a href='http://foo.com/A+b+c'>A+b+c</a>").should ==
74
+ fix_typewriter("<a href='http://foo.com/A+b+c'>A+b+c</a>").should ==
75
75
  "<a href='http://foo.com/A+b+c'>A+b+c</a>"
76
- fix_typewriter("<foo class='foo+bar+baz'/>").should ==
76
+ fix_typewriter("<foo class='foo+bar+baz'/>").should ==
77
77
  "<foo class='foo+bar+baz'/>"
78
78
  end
79
-
79
+
80
80
  it "should still apply inside of other tags" do
81
81
  fix_typewriter("<p>+foo+</p>").should == "<p><tt>foo</tt></p>"
82
82
  end
@@ -7,56 +7,59 @@ end
7
7
  class GeneratorMock
8
8
  attr_accessor :options
9
9
  include YARD::Templates::Helpers::MarkupHelper
10
- def initialize(options = {}) self.options = options end
10
+ def initialize(options = Templates::TemplateOptions.new)
11
+ self.options = options
12
+ end
11
13
  end
12
14
 
13
15
  describe YARD::Templates::Helpers::MarkupHelper do
14
16
  before do
15
17
  YARD::Templates::Helpers::MarkupHelper.clear_markup_cache
16
18
  end
17
-
19
+
18
20
  describe '#load_markup_provider' do
19
21
  before do
20
22
  log.stub!(:error)
21
23
  @gen = GeneratorMock.new
24
+ @gen.options.reset_defaults
22
25
  end
23
-
26
+
24
27
  it "should exit on an invalid markup type" do
25
- @gen.options = {:markup => :invalid}
28
+ @gen.options.markup = :invalid
26
29
  @gen.load_markup_provider.should == false
27
30
  end
28
31
 
29
32
  it "should fail on when an invalid markup provider is specified" do
30
- @gen.stub!(:options).and_return({:markup => :markdown, :markup_provider => :invalid})
33
+ @gen.options.update(:markup => :markdown, :markup_provider => :invalid)
31
34
  @gen.load_markup_provider.should == false
32
35
  @gen.markup_class.should == nil
33
36
  end
34
-
37
+
35
38
  it "should load RDocMarkup if rdoc is specified and it is installed" do
36
- @gen.stub!(:options).and_return({:markup => :rdoc})
39
+ @gen.options.markup = :rdoc
37
40
  @gen.load_markup_provider.should == true
38
41
  @gen.markup_class.should == YARD::Templates::Helpers::Markup::RDocMarkup
39
42
  end
40
-
43
+
41
44
  it "should fail if RDoc cannot be loaded" do
42
- @gen.stub!(:options).and_return({:markup => :rdoc})
45
+ @gen.options.markup = :rdoc
43
46
  @gen.should_receive(:eval).with('::YARD::Templates::Helpers::Markup::RDocMarkup').and_raise(NameError)
44
47
  @gen.load_markup_provider.should == false
45
48
  @gen.markup_provider.should == nil
46
49
  end
47
-
50
+
48
51
  it "should search through available markup providers for the markup type if none is set" do
49
52
  @gen.should_receive(:eval).with('::RedcarpetCompat').and_return(mock(:bluecloth))
50
53
  @gen.should_receive(:require).with('redcarpet').and_return(true)
51
54
  @gen.should_not_receive(:require).with('maruku')
52
- @gen.stub!(:options).and_return({:markup => :markdown})
53
- # this only raises an exception because we mock out require to avoid
54
- # loading any libraries but our implementation tries to return the library
55
+ @gen.options.markup = :markdown
56
+ # this only raises an exception because we mock out require to avoid
57
+ # loading any libraries but our implementation tries to return the library
55
58
  # name as a constant
56
59
  @gen.load_markup_provider.should == true
57
60
  @gen.markup_provider.should == :redcarpet
58
61
  end
59
-
62
+
60
63
  it "should continue searching if some of the providers are unavailable" do
61
64
  @gen.should_receive(:require).with('redcarpet').and_raise(LoadError)
62
65
  @gen.should_receive(:require).with('rdiscount').and_raise(LoadError)
@@ -65,18 +68,18 @@ describe YARD::Templates::Helpers::MarkupHelper do
65
68
  @gen.should_receive(:require).with('maruku').and_raise(LoadError)
66
69
  @gen.should_receive(:require).with('rpeg-markdown').and_return(true)
67
70
  @gen.should_receive(:eval).with('::PEGMarkdown').and_return(true)
68
- @gen.stub!(:options).and_return({:markup => :markdown})
69
- # this only raises an exception because we mock out require to avoid
70
- # loading any libraries but our implementation tries to return the library
71
+ @gen.options.markup = :markdown
72
+ # this only raises an exception because we mock out require to avoid
73
+ # loading any libraries but our implementation tries to return the library
71
74
  # name as a constant
72
75
  @gen.load_markup_provider.should rescue nil
73
76
  @gen.markup_provider.should == :"rpeg-markdown"
74
77
  end
75
-
78
+
76
79
  it "should override the search if `:markup_provider` is set in options" do
77
80
  @gen.should_receive(:require).with('rdiscount').and_return(true)
78
81
  @gen.should_receive(:eval).with('::RDiscount').and_return(true)
79
- @gen.stub!(:options).and_return({:markup => :markdown, :markup_provider => :rdiscount})
82
+ @gen.options.update(:markup => :markdown, :markup_provider => :rdiscount)
80
83
  @gen.load_markup_provider.should rescue nil
81
84
  @gen.markup_provider.should == :rdiscount
82
85
  end
@@ -85,42 +88,42 @@ describe YARD::Templates::Helpers::MarkupHelper do
85
88
  YARD::Templates::Helpers::MarkupHelper::MARKUP_PROVIDERS[:markdown].each do |p|
86
89
  @gen.should_receive(:require).with(p[:lib].to_s).and_raise(LoadError)
87
90
  end
88
- @gen.stub!(:options).and_return({:markup => :markdown})
91
+ @gen.options.markup = :markdown
89
92
  @gen.load_markup_provider.should == false
90
93
  @gen.markup_provider.should == nil
91
94
  end
92
95
 
93
96
  it "should fail if overridden provider is not found" do
94
97
  @gen.should_receive(:require).with('rdiscount').and_raise(LoadError)
95
- @gen.stub!(:options).and_return({:markup => :markdown, :markup_provider => :rdiscount})
98
+ @gen.options.update(:markup => :markdown, :markup_provider => :rdiscount)
96
99
  @gen.load_markup_provider.should == false
97
100
  @gen.markup_provider.should == nil
98
101
  end
99
-
102
+
100
103
  it "should fail if the markup type is not found" do
101
104
  log.should_receive(:error).with(/Invalid markup/)
102
- @gen.stub!(:options).and_return(:markup => :xxx)
105
+ @gen.options.markup = :xxx
103
106
  @gen.load_markup_provider.should == false
104
107
  @gen.markup_provider.should == nil
105
108
  end
106
109
  end
107
-
110
+
108
111
  describe '#markup_for_file' do
109
112
  include YARD::Templates::Helpers::MarkupHelper
110
113
 
111
114
  it "should look for a shebang line" do
112
115
  markup_for_file("#!text\ntext here", 'file.rdoc').should == :text
113
116
  end
114
-
117
+
115
118
  it "should return the default markup type if no shebang is found or no valid ext is found" do
116
- stub!(:options).and_return({:markup => :default_type})
119
+ stub!(:options).and_return(Options.new.update(:markup => :default_type))
117
120
  markup_for_file('', 'filename').should == :default_type
118
121
  end
119
-
122
+
120
123
  it "should look for a file extension if no shebang is found" do
121
124
  markup_for_file('', 'filename.MD').should == :markdown
122
125
  end
123
-
126
+
124
127
  Templates::Helpers::MarkupHelper::MARKUP_EXTENSIONS.each do |type, exts|
125
128
  exts.each do |ext|
126
129
  it "should recognize .#{ext} as #{type} markup type" do
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/../spec_helper"
3
3
  describe YARD::Templates::Helpers::MethodHelper do
4
4
  include YARD::Templates::Helpers::BaseHelper
5
5
  include YARD::Templates::Helpers::MethodHelper
6
-
6
+
7
7
  describe '#format_args' do
8
8
  it "should not show &blockarg if no @param tag and has @yield" do
9
9
  YARD.parse_string <<-'eof'
@@ -20,7 +20,7 @@ describe YARD::Templates::Helpers::MethodHelper do
20
20
  eof
21
21
  format_args(Registry.at('#foo')).should == ''
22
22
  end
23
-
23
+
24
24
  it "should show &blockarg if @param block is documented (even with @yield)" do
25
25
  YARD.parse_string <<-'eof'
26
26
  # @yield [a,b]
@@ -31,17 +31,17 @@ describe YARD::Templates::Helpers::MethodHelper do
31
31
  format_args(Registry.at('#foo')).should == '(&block)'
32
32
  end
33
33
  end
34
-
34
+
35
35
  describe '#format_block' do
36
36
  before { YARD::Registry.clear }
37
-
37
+
38
38
  it "should show block for method with yield" do
39
39
  YARD.parse_string <<-'eof'
40
40
  def foo; yield(a, b, c) end
41
41
  eof
42
42
  format_block(Registry.at('#foo')).should == "{|a, b, c| ... }"
43
43
  end
44
-
44
+
45
45
  it "should show block for method with @yieldparam tags" do
46
46
  YARD.parse_string <<-'eof'
47
47
  # @yieldparam _self me!
@@ -55,14 +55,14 @@ describe YARD::Templates::Helpers::MethodHelper do
55
55
  # @yield blah
56
56
  # @yieldparam a
57
57
  def foo; end
58
-
58
+
59
59
  # @yield blah
60
60
  def foo2; end
61
61
  eof
62
62
  format_block(Registry.at('#foo')).should == "{|a| ... }"
63
63
  format_block(Registry.at('#foo2')).should == "{ ... }"
64
64
  end
65
-
65
+
66
66
  it "should show block for method with @yield and types" do
67
67
  YARD.parse_string <<-'eof'
68
68
  # @yield [a, b, c] blah
@@ -1,7 +1,9 @@
1
1
  shared_examples_for "signature" do
2
2
  before do
3
- YARD::Registry.clear
4
- stub!(:options).and_return(:default_return => "Object")
3
+ YARD::Registry.clear
4
+ @options = Templates::TemplateOptions.new
5
+ @options.reset_defaults
6
+ stub!(:options).and_return(@options)
5
7
  end
6
8
 
7
9
  it "should show signature for regular instance method" do
@@ -10,13 +12,13 @@ shared_examples_for "signature" do
10
12
  end
11
13
 
12
14
  it "should allow default return type to be changed" do
13
- stub!(:options).and_return(:default_return => "Hello")
15
+ @options.default_return = "Hello"
14
16
  YARD.parse_string "def foo; end"
15
17
  signature(Registry.at('#foo')).should == @results[:default_return]
16
18
  end
17
19
 
18
20
  it "should allow default return type to be omitted" do
19
- stub!(:options).and_return(:default_return => "")
21
+ @options.default_return = ""
20
22
  YARD.parse_string "def foo; end"
21
23
  signature(Registry.at('#foo')).should == @results[:no_default_return]
22
24
  end
@@ -58,7 +60,7 @@ shared_examples_for "signature" do
58
60
  eof
59
61
  signature(Registry.at('#foo')).should == @results[:type_nil]
60
62
  end
61
-
63
+
62
64
  it "should show 'Type?' if return types are [Type, nil, nil] (extra nil)" do
63
65
  YARD.parse_string <<-'eof'
64
66
  # @return [Type, nil]
@@ -94,7 +96,7 @@ shared_examples_for "signature" do
94
96
  end
95
97
 
96
98
  it "should not show return for @return [void] if :hide_void_return is true" do
97
- stub!(:options).and_return(:hide_void_return => true)
99
+ @options.hide_void_return = true
98
100
  YARD.parse_string <<-'eof'
99
101
  # @return [void]
100
102
  def foo; end
@@ -108,7 +110,7 @@ shared_examples_for "signature" do
108
110
  eof
109
111
  signature(Registry.at('#foo')).should == @results[:block]
110
112
  end
111
-
113
+
112
114
  it "should use regular return tag if the @overload is empty" do
113
115
  YARD.parse_string <<-'eof'
114
116
  # @overload foobar
@@ -4,7 +4,7 @@ require File.dirname(__FILE__) + "/shared_signature_examples"
4
4
  describe YARD::Templates::Helpers::TextHelper do
5
5
  include YARD::Templates::Helpers::TextHelper
6
6
  include YARD::Templates::Helpers::MethodHelper
7
-
7
+
8
8
  describe '#signature' do
9
9
  before do
10
10
  @results = {
@@ -24,9 +24,9 @@ describe YARD::Templates::Helpers::TextHelper do
24
24
  :empty_overload => 'root.foobar -> String'
25
25
  }
26
26
  end
27
-
27
+
28
28
  def signature(obj) super(obj).strip end
29
-
29
+
30
30
  it_should_behave_like "signature"
31
31
  end
32
32
 
@@ -5,17 +5,17 @@ require File.dirname(__FILE__) + '/spec_helper'
5
5
 
6
6
  describe YARD::Templates::Engine.template(:default, :method) do
7
7
  before { Registry.clear }
8
-
8
+
9
9
  shared_examples_for "all formats" do
10
10
  it "should render html format correctly" do
11
- html_equals(Registry.at('#m').format(:format => :html, :no_highlight => true), @template)
11
+ html_equals(Registry.at('#m').format(html_options), @template)
12
12
  end
13
-
13
+
14
14
  it "should render text format correctly" do
15
- text_equals(Registry.at('#m').format, @template)
15
+ text_equals(Registry.at('#m').format(text_options), @template)
16
16
  end
17
17
  end
18
-
18
+
19
19
  describe 'regular (deprecated) method' do
20
20
  before do
21
21
  @template = :method001
@@ -32,10 +32,10 @@ describe YARD::Templates::Engine.template(:default, :method) do
32
32
  alias x m
33
33
  eof
34
34
  end
35
-
35
+
36
36
  it_should_behave_like "all formats"
37
37
  end
38
-
38
+
39
39
  describe 'method with 1 overload' do
40
40
  before do
41
41
  @template = :method002
@@ -48,10 +48,10 @@ describe YARD::Templates::Engine.template(:default, :method) do
48
48
  def m(x) end
49
49
  eof
50
50
  end
51
-
51
+
52
52
  it_should_behave_like "all formats"
53
53
  end
54
-
54
+
55
55
  describe 'method with 2 overloads' do
56
56
  before do
57
57
  @template = :method003
@@ -69,10 +69,10 @@ describe YARD::Templates::Engine.template(:default, :method) do
69
69
  def m(*args) end
70
70
  eof
71
71
  end
72
-
72
+
73
73
  it_should_behave_like "all formats"
74
74
  end
75
-
75
+
76
76
  describe 'method void return' do
77
77
  before do
78
78
  @template = :method004
@@ -84,7 +84,7 @@ describe YARD::Templates::Engine.template(:default, :method) do
84
84
 
85
85
  it_should_behave_like "all formats"
86
86
  end
87
-
87
+
88
88
  describe 'method void return in an overload' do
89
89
  before do
90
90
  @template = :method005
@@ -96,7 +96,7 @@ describe YARD::Templates::Engine.template(:default, :method) do
96
96
  def m(*args) end
97
97
  eof
98
98
  end
99
-
99
+
100
100
  it_should_behave_like "all formats"
101
101
  end
102
102
  end
@@ -1,7 +1,7 @@
1
1
  require File.dirname(__FILE__) + '/spec_helper'
2
2
 
3
3
  describe YARD::Templates::Engine.template(:default, :module) do
4
- before do
4
+ before do
5
5
  Registry.clear
6
6
  YARD.parse_string <<-'eof'
7
7
  module B
@@ -22,16 +22,16 @@ describe YARD::Templates::Engine.template(:default, :module) do
22
22
  include BaseMod
23
23
  attr_accessor :attr1
24
24
  attr_reader :attr2
25
-
25
+
26
26
  # @overload attr3
27
27
  # @return [String] a string
28
28
  # @overload attr3=(value)
29
29
  # @param [String] value sets the string
30
30
  # @return [void]
31
31
  attr_accessor :attr3
32
-
32
+
33
33
  attr_writer :attr4
34
-
34
+
35
35
  def self.a; end
36
36
  def a; end
37
37
  alias b a
@@ -40,16 +40,16 @@ describe YARD::Templates::Engine.template(:default, :module) do
40
40
  # hello2
41
41
  # @param [String] a hi
42
42
  def test_overload(*args) end
43
-
43
+
44
44
  # @overload test_multi_overload(a)
45
45
  # @overload test_multi_overload(a, b)
46
46
  def test_multi_overload(*args) end
47
-
47
+
48
48
  # @return [void]
49
49
  def void_meth; end
50
-
50
+
51
51
  include B
52
-
52
+
53
53
  class Y; end
54
54
  class Q; end
55
55
  class X; end
@@ -59,16 +59,15 @@ describe YARD::Templates::Engine.template(:default, :module) do
59
59
  CONSTANT = 'value'
60
60
  @@cvar = 'value' # @deprecated
61
61
  end
62
-
62
+
63
63
  module TMP; include A end
64
64
  class TMP2; extend A end
65
65
  eof
66
66
  end
67
67
 
68
68
  it "should render html format correctly" do
69
- html_equals(Registry.at('A').format(
70
- :format => :html, :no_highlight => true, :hide_void_return => true,
71
- :verifier => Verifier.new('object.type != :method || object.visibility == :public')),
69
+ html_equals(Registry.at('A').format(html_options(:hide_void_return => true,
70
+ :verifier => Verifier.new('object.type != :method || object.visibility == :public'))),
72
71
  :module001)
73
72
  end
74
73
 
@@ -79,13 +78,13 @@ describe YARD::Templates::Engine.template(:default, :module) do
79
78
  end
80
79
  eof
81
80
 
82
- text_equals(Registry.at('A').format, :module001)
81
+ text_equals(Registry.at('A').format(text_options), :module001)
83
82
  end
84
-
83
+
85
84
  it "should render dot format correctly" do
86
85
  Registry.at('A').format(:format => :dot, :dependencies => true, :full => true).should == example_contents(:module001, 'dot')
87
86
  end
88
-
87
+
89
88
  it "should render groups correctly in html" do
90
89
  Registry.clear
91
90
  YARD.parse_string <<-'eof'
@@ -94,19 +93,19 @@ describe YARD::Templates::Engine.template(:default, :module) do
94
93
  attr_accessor :foo_attr
95
94
  def foo; end
96
95
  def self.bar; end
97
-
96
+
98
97
  # @group Bar
99
98
  def baz; end
100
-
99
+
101
100
  # @endgroup
102
-
101
+
103
102
  def self.baz; end
104
103
  end
105
104
  eof
106
-
107
- html_equals(Registry.at('A').format(:format => :html, :no_highlight => true), :module002)
105
+
106
+ html_equals(Registry.at('A').format(html_options), :module002)
108
107
  end
109
-
108
+
110
109
  it "should ignore overwritten/private attributes/constants from inherited list" do
111
110
  Registry.clear
112
111
  YARD.parse_string <<-'eof'
@@ -124,8 +123,55 @@ describe YARD::Templates::Engine.template(:default, :module) do
124
123
  FOO = 2
125
124
  end
126
125
  eof
127
-
128
- html_equals(Registry.at('A').format(:format => :html, :no_highlight => true,
129
- :verifier => Verifier.new('!@private')), :module003)
126
+
127
+ html_equals(Registry.at('A').format(html_options(
128
+ :verifier => Verifier.new('!@private'))), :module003)
129
+ end
130
+
131
+ it "should embed mixins with :embed_mixins = ['Foo', 'Bar', 'Baz::A*']" do
132
+ Registry.clear
133
+ YARD.parse_string <<-'eof'
134
+ class A
135
+ # This method is in A
136
+ def foo; end
137
+
138
+ include Foo
139
+ extend Bar
140
+ include BarFooBar
141
+ include Baz::XYZ
142
+ include Baz::ABC
143
+ end
144
+
145
+ module BarFooBar
146
+ def bar_foo_bar; end
147
+ end
148
+
149
+ module Foo
150
+ # Docs for xyz
151
+ def xyz; end
152
+ # Docs for bar_attr
153
+ attr_accessor :bar_attr
154
+ end
155
+
156
+ module Bar
157
+ # @group Booya
158
+
159
+ # Docs for baz in Booya group
160
+ def baz; end
161
+ end
162
+
163
+ module Baz
164
+ module XYZ
165
+ # listed as inherited
166
+ def baz_xyz; end
167
+ end
168
+
169
+ module ABC
170
+ def baz_abc; end
171
+ end
172
+ end
173
+ eof
174
+
175
+ html_equals(Registry.at('A').format(html_options(:embed_mixins => ['Foo', 'Bar', 'Baz::A*'])), :module004)
130
176
  end
131
177
  end