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.
- data/.yardopts +10 -2
- data/ChangeLog +1263 -38
- data/LEGAL +5 -5
- data/LICENSE +1 -1
- data/README.md +91 -82
- data/Rakefile +6 -6
- data/benchmarks/builtins_vs_eval.rb +1 -1
- data/benchmarks/erb_vs_erubis.rb +4 -4
- data/benchmarks/generation.rb +5 -5
- data/benchmarks/parsing.rb +2 -2
- data/benchmarks/registry_store_types.rb +48 -0
- data/bin/yard +9 -1
- data/bin/yardoc +9 -1
- data/bin/yri +10 -2
- data/docs/CodeObjects.md +10 -10
- data/docs/GettingStarted.md +85 -83
- data/docs/Handlers.md +21 -21
- data/docs/Overview.md +7 -7
- data/docs/Parser.md +30 -30
- data/docs/Tags.md +250 -554
- data/docs/TagsArch.md +123 -0
- data/docs/Templates.md +58 -80
- data/docs/WhatsNew.md +378 -133
- data/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
- data/docs/templates/default/fulldoc/html/setup.rb +6 -0
- data/docs/templates/default/layout/html/setup.rb +8 -0
- data/docs/templates/default/layout/html/tag_list.erb +11 -0
- data/docs/templates/default/yard_tags/html/list.erb +18 -0
- data/docs/templates/default/yard_tags/html/setup.rb +27 -0
- data/docs/templates/plugin.rb +65 -0
- data/lib/yard.rb +1 -10
- data/lib/yard/autoload.rb +75 -27
- data/lib/yard/cli/command.rb +5 -2
- data/lib/yard/cli/command_parser.rb +3 -2
- data/lib/yard/cli/diff.rb +1 -1
- data/lib/yard/cli/i18n.rb +69 -0
- data/lib/yard/cli/list.rb +1 -1
- data/lib/yard/cli/server.rb +30 -7
- data/lib/yard/cli/stats.rb +5 -6
- data/lib/yard/cli/yardoc.rb +95 -45
- data/lib/yard/cli/yri.rb +24 -3
- data/lib/yard/code_objects/base.rb +35 -4
- data/lib/yard/code_objects/extra_file_object.rb +1 -1
- data/lib/yard/code_objects/macro_object.rb +56 -99
- data/lib/yard/code_objects/method_object.rb +44 -6
- data/lib/yard/config.rb +18 -8
- data/lib/yard/core_ext/symbol_hash.rb +1 -1
- data/lib/yard/docstring.rb +45 -85
- data/lib/yard/docstring_parser.rb +269 -0
- data/lib/yard/handlers/base.rb +129 -118
- data/lib/yard/handlers/c/alias_handler.rb +15 -0
- data/lib/yard/handlers/c/attribute_handler.rb +13 -0
- data/lib/yard/handlers/c/base.rb +110 -0
- data/lib/yard/handlers/c/class_handler.rb +26 -0
- data/lib/yard/handlers/c/constant_handler.rb +12 -0
- data/lib/yard/handlers/c/handler_methods.rb +165 -0
- data/lib/yard/handlers/c/init_handler.rb +16 -0
- data/lib/yard/handlers/c/method_handler.rb +35 -0
- data/lib/yard/handlers/c/mixin_handler.rb +13 -0
- data/lib/yard/handlers/c/module_handler.rb +16 -0
- data/lib/yard/handlers/c/override_comment_handler.rb +22 -0
- data/lib/yard/handlers/c/path_handler.rb +10 -0
- data/lib/yard/handlers/c/struct_handler.rb +12 -0
- data/lib/yard/handlers/c/symbol_handler.rb +7 -0
- data/lib/yard/handlers/processor.rb +41 -30
- data/lib/yard/handlers/ruby/alias_handler.rb +0 -2
- data/lib/yard/handlers/ruby/attribute_handler.rb +16 -17
- data/lib/yard/handlers/ruby/base.rb +10 -6
- data/lib/yard/handlers/ruby/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +71 -0
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +0 -3
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +16 -17
- data/lib/yard/handlers/ruby/legacy/base.rb +28 -6
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +0 -2
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +1 -1
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
- data/lib/yard/handlers/ruby/method_handler.rb +10 -15
- data/lib/yard/handlers/ruby/mixin_handler.rb +1 -1
- data/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +3 -2
- data/lib/yard/i18n/pot_generator.rb +281 -0
- data/lib/yard/i18n/text.rb +72 -0
- data/lib/yard/logging.rb +3 -7
- data/lib/yard/options.rb +216 -0
- data/lib/yard/parser/c/c_parser.rb +225 -0
- data/lib/yard/parser/c/comment_parser.rb +131 -0
- data/lib/yard/parser/c/statement.rb +63 -0
- data/lib/yard/parser/ruby/ast_node.rb +91 -1
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +1 -0
- data/lib/yard/parser/ruby/legacy/statement.rb +7 -2
- data/lib/yard/parser/ruby/legacy/statement_list.rb +13 -22
- data/lib/yard/parser/ruby/ruby_parser.rb +87 -26
- data/lib/yard/parser/source_parser.rb +89 -88
- data/lib/yard/rake/yardoc_task.rb +1 -1
- data/lib/yard/registry.rb +21 -10
- data/lib/yard/registry_store.rb +48 -0
- data/lib/yard/serializers/file_system_serializer.rb +18 -20
- data/lib/yard/serializers/yardoc_serializer.rb +1 -0
- data/lib/yard/server/adapter.rb +2 -2
- data/lib/yard/server/commands/base.rb +1 -1
- data/lib/yard/server/commands/display_object_command.rb +13 -6
- data/lib/yard/server/commands/frames_command.rb +4 -21
- data/lib/yard/server/commands/library_command.rb +57 -11
- data/lib/yard/server/commands/list_command.rb +10 -34
- data/lib/yard/server/commands/search_command.rb +8 -2
- data/lib/yard/server/doc_server_helper.rb +34 -0
- data/lib/yard/server/rack_adapter.rb +5 -1
- data/lib/yard/server/router.rb +4 -10
- data/lib/yard/server/static_caching.rb +2 -2
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +2 -2
- data/lib/yard/server/templates/default/fulldoc/html/js/live.js +0 -15
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +3 -3
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +1 -1
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +1 -1
- data/lib/yard/tags/default_factory.rb +31 -4
- data/lib/yard/tags/directives.rb +593 -0
- data/lib/yard/tags/library.rb +437 -35
- data/lib/yard/templates/engine.rb +17 -12
- data/lib/yard/templates/helpers/base_helper.rb +8 -2
- data/lib/yard/templates/helpers/html_helper.rb +57 -14
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +1 -1
- data/lib/yard/templates/helpers/markup_helper.rb +9 -9
- data/lib/yard/templates/helpers/text_helper.rb +2 -2
- data/lib/yard/templates/template.rb +42 -13
- data/lib/yard/templates/template_options.rb +81 -0
- data/spec/cli/command_parser_spec.rb +4 -4
- data/spec/cli/command_spec.rb +3 -3
- data/spec/cli/config_spec.rb +13 -13
- data/spec/cli/diff_spec.rb +13 -10
- data/spec/cli/gems_spec.rb +12 -12
- data/spec/cli/help_spec.rb +2 -2
- data/spec/cli/i18n_spec.rb +111 -0
- data/spec/cli/server_spec.rb +66 -18
- data/spec/cli/stats_spec.rb +15 -15
- data/spec/cli/yardoc_spec.rb +124 -97
- data/spec/cli/yri_spec.rb +14 -12
- data/spec/code_objects/base_spec.rb +104 -46
- data/spec/code_objects/class_object_spec.rb +33 -33
- data/spec/code_objects/code_object_list_spec.rb +5 -5
- data/spec/code_objects/constants_spec.rb +4 -3
- data/spec/code_objects/extra_file_object_spec.rb +19 -19
- data/spec/code_objects/macro_object_spec.rb +31 -37
- data/spec/code_objects/method_object_spec.rb +46 -23
- data/spec/code_objects/module_object_spec.rb +16 -16
- data/spec/code_objects/namespace_object_spec.rb +6 -6
- data/spec/code_objects/proxy_spec.rb +19 -19
- data/spec/config_spec.rb +33 -24
- data/spec/core_ext/array_spec.rb +1 -1
- data/spec/core_ext/file_spec.rb +8 -8
- data/spec/core_ext/hash_spec.rb +1 -1
- data/spec/core_ext/insertion_spec.rb +3 -3
- data/spec/core_ext/module_spec.rb +1 -1
- data/spec/core_ext/string_spec.rb +6 -6
- data/spec/core_ext/symbol_hash_spec.rb +11 -11
- data/spec/docstring_parser_spec.rb +207 -0
- data/spec/docstring_spec.rb +33 -146
- data/spec/handlers/alias_handler_spec.rb +14 -14
- data/spec/handlers/attribute_handler_spec.rb +20 -20
- data/spec/handlers/base_spec.rb +16 -16
- data/spec/handlers/c/alias_handler_spec.rb +33 -0
- data/spec/handlers/c/attribute_handler_spec.rb +40 -0
- data/spec/handlers/c/class_handler_spec.rb +64 -0
- data/spec/handlers/c/constant_handler_spec.rb +68 -0
- data/spec/handlers/c/init_handler_spec.rb +36 -0
- data/spec/handlers/c/method_handler_spec.rb +228 -0
- data/spec/handlers/c/mixin_handler_spec.rb +27 -0
- data/spec/handlers/c/module_handler_spec.rb +38 -0
- data/spec/handlers/c/override_comment_handler_spec.rb +43 -0
- data/spec/handlers/c/path_handler_spec.rb +35 -0
- data/spec/handlers/c/spec_helper.rb +11 -0
- data/spec/handlers/c/struct_handler_spec.rb +15 -0
- data/spec/handlers/class_condition_handler_spec.rb +10 -10
- data/spec/handlers/class_handler_spec.rb +38 -38
- data/spec/handlers/class_variable_handler_spec.rb +1 -1
- data/spec/handlers/constant_handler_spec.rb +7 -7
- data/spec/handlers/{macro_handler_spec.rb → dsl_handler_spec.rb} +72 -53
- data/spec/handlers/examples/alias_handler_001.rb.txt +5 -5
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/class_handler_001.rb.txt +1 -1
- data/spec/handlers/examples/dsl_handler_001.rb.txt +110 -0
- data/spec/handlers/examples/exception_handler_001.rb.txt +14 -14
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +2 -2
- data/spec/handlers/examples/method_handler_001.rb.txt +16 -16
- data/spec/handlers/examples/mixin_handler_001.rb.txt +8 -4
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +1 -1
- data/spec/handlers/examples/visibility_handler_001.rb.txt +3 -3
- data/spec/handlers/examples/yield_handler_001.rb.txt +13 -14
- data/spec/handlers/exception_handler_spec.rb +9 -9
- data/spec/handlers/extend_handler_spec.rb +2 -2
- data/spec/handlers/legacy_base_spec.rb +34 -34
- data/spec/handlers/method_condition_handler_spec.rb +2 -2
- data/spec/handlers/method_handler_spec.rb +33 -33
- data/spec/handlers/mixin_handler_spec.rb +13 -9
- data/spec/handlers/module_function_handler_spec.rb +82 -0
- data/spec/handlers/module_handler_spec.rb +6 -6
- data/spec/handlers/private_constant_handler_spec.rb +3 -3
- data/spec/handlers/processor_spec.rb +5 -5
- data/spec/handlers/ruby/base_spec.rb +10 -6
- data/spec/handlers/ruby/legacy/base_spec.rb +11 -7
- data/spec/handlers/spec_helper.rb +2 -3
- data/spec/handlers/visibility_handler_spec.rb +6 -6
- data/spec/handlers/yield_handler_spec.rb +8 -8
- data/spec/i18n/pot_generator_spec.rb +244 -0
- data/spec/i18n/text_spec.rb +69 -0
- data/spec/options_spec.rb +160 -0
- data/spec/parser/base_spec.rb +3 -3
- data/spec/parser/c_parser_spec.rb +31 -257
- data/spec/parser/examples/array.c.txt +187 -187
- data/spec/parser/examples/extrafile.c.txt +1 -1
- data/spec/parser/examples/override.c.txt +1 -1
- data/spec/parser/ruby/ast_node_spec.rb +1 -1
- data/spec/parser/ruby/legacy/statement_list_spec.rb +24 -24
- data/spec/parser/ruby/legacy/token_list_spec.rb +7 -7
- data/spec/parser/ruby/ruby_parser_spec.rb +56 -34
- data/spec/parser/source_parser_spec.rb +125 -65
- data/spec/parser/tag_parsing_spec.rb +4 -4
- data/spec/rake/yardoc_task_spec.rb +10 -8
- data/spec/registry_spec.rb +65 -36
- data/spec/registry_store_spec.rb +90 -40
- data/spec/serializers/file_system_serializer_spec.rb +12 -12
- data/spec/serializers/yardoc_serializer_spec.rb +2 -2
- data/spec/server/adapter_spec.rb +3 -3
- data/spec/server/commands/base_spec.rb +8 -8
- data/spec/server/commands/library_command_spec.rb +3 -3
- data/spec/server/commands/static_file_command_spec.rb +7 -7
- data/spec/server/doc_server_helper_spec.rb +1 -1
- data/spec/server/doc_server_serializer_spec.rb +6 -6
- data/spec/server/rack_adapter_spec.rb +3 -3
- data/spec/server/router_spec.rb +19 -19
- data/spec/server/static_caching_spec.rb +4 -4
- data/spec/spec_helper.rb +7 -7
- data/spec/tags/default_factory_spec.rb +24 -16
- data/spec/tags/directives_spec.rb +422 -0
- data/spec/tags/library_spec.rb +15 -4
- data/spec/tags/overload_tag_spec.rb +6 -6
- data/spec/tags/ref_tag_list_spec.rb +8 -8
- data/spec/templates/class_spec.rb +7 -7
- data/spec/templates/constant_spec.rb +7 -7
- data/spec/templates/engine_spec.rb +28 -36
- data/spec/templates/examples/class001.html +108 -108
- data/spec/templates/examples/class002.html +17 -17
- data/spec/templates/examples/constant001.txt +1 -1
- data/spec/templates/examples/method001.html +45 -45
- data/spec/templates/examples/method002.html +25 -25
- data/spec/templates/examples/method003.html +60 -60
- data/spec/templates/examples/method004.html +7 -7
- data/spec/templates/examples/method005.html +28 -28
- data/spec/templates/examples/module001.html +321 -321
- data/spec/templates/examples/module001.txt +1 -1
- data/spec/templates/examples/module002.html +130 -130
- data/spec/templates/examples/module003.html +74 -74
- data/spec/templates/examples/module004.html +388 -0
- data/spec/templates/helpers/base_helper_spec.rb +32 -32
- data/spec/templates/helpers/html_helper_spec.rb +87 -68
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +9 -9
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +16 -16
- data/spec/templates/helpers/markup_helper_spec.rb +31 -28
- data/spec/templates/helpers/method_helper_spec.rb +7 -7
- data/spec/templates/helpers/shared_signature_examples.rb +9 -7
- data/spec/templates/helpers/text_helper_spec.rb +3 -3
- data/spec/templates/method_spec.rb +13 -13
- data/spec/templates/module_spec.rb +70 -24
- data/spec/templates/onefile_spec.rb +32 -15
- data/spec/templates/section_spec.rb +23 -23
- data/spec/templates/spec_helper.rb +31 -1
- data/spec/templates/tag_spec.rb +5 -5
- data/spec/templates/template_spec.rb +54 -46
- data/spec/verifier_spec.rb +5 -5
- data/templates/default/class/setup.rb +2 -2
- data/templates/default/docstring/html/abstract.erb +1 -1
- data/templates/default/docstring/html/note.erb +1 -1
- data/templates/default/docstring/html/private.erb +1 -1
- data/templates/default/docstring/html/todo.erb +1 -1
- data/templates/default/docstring/setup.rb +2 -2
- data/templates/default/fulldoc/html/css/full_list.css +4 -2
- data/templates/default/fulldoc/html/css/style.css +50 -44
- data/templates/default/fulldoc/html/frames.erb +21 -6
- data/templates/default/fulldoc/html/full_list.erb +5 -3
- data/templates/default/fulldoc/html/{full_list_files.erb → full_list_file.erb} +0 -0
- data/templates/default/fulldoc/html/js/app.js +29 -26
- data/templates/default/fulldoc/html/js/full_list.js +9 -9
- data/templates/default/fulldoc/html/js/jquery.js +4 -16
- data/templates/default/fulldoc/html/setup.rb +42 -38
- data/templates/default/layout/dot/header.erb +1 -1
- data/templates/default/layout/html/breadcrumb.erb +6 -6
- data/templates/default/layout/html/files.erb +1 -1
- data/templates/default/layout/html/footer.erb +1 -1
- data/templates/default/layout/html/headers.erb +3 -6
- data/templates/default/layout/html/index.erb +1 -1
- data/templates/default/layout/html/layout.erb +3 -7
- data/templates/default/layout/html/objects.erb +1 -1
- data/templates/default/layout/html/script_setup.erb +5 -0
- data/templates/default/layout/html/search.erb +4 -1
- data/templates/default/layout/html/setup.rb +8 -8
- data/templates/default/method_details/html/method_signature.erb +10 -3
- data/templates/default/method_details/setup.rb +1 -0
- data/templates/default/module/dot/info.erb +1 -1
- data/templates/default/module/dot/setup.rb +2 -2
- data/templates/default/module/html/attribute_details.erb +1 -1
- data/templates/default/module/html/children.erb +1 -1
- data/templates/default/module/html/defines.erb +1 -1
- data/templates/default/module/html/inherited_methods.erb +5 -4
- data/templates/default/module/html/item_summary.erb +15 -5
- data/templates/default/module/html/method_details_list.erb +2 -2
- data/templates/default/module/setup.rb +25 -12
- data/templates/default/module/text/setup.rb +1 -1
- data/templates/default/onefile/html/layout.erb +1 -1
- data/templates/default/onefile/html/setup.rb +2 -2
- data/templates/default/tags/html/example.erb +4 -2
- data/templates/default/tags/html/option.erb +1 -1
- data/templates/default/tags/html/overload.erb +1 -1
- data/templates/default/tags/html/see.erb +1 -1
- data/templates/default/tags/html/tag.erb +1 -1
- data/templates/default/tags/setup.rb +4 -3
- data/templates/guide/fulldoc/html/css/style.css +8 -8
- data/templates/guide/fulldoc/html/js/app.js +6 -6
- data/templates/guide/fulldoc/html/setup.rb +12 -12
- data/templates/guide/layout/html/layout.erb +11 -11
- data/templates/guide/layout/html/setup.rb +9 -9
- data/templates/guide/method/html/header.erb +2 -2
- data/templates/guide/method/html/setup.rb +1 -1
- metadata +68 -18
- data/bin/yard-graph +0 -4
- data/bin/yard-server +0 -4
- data/docs/Glossary.md +0 -12
- data/lib/yard/handlers/ruby/legacy/macro_handler.rb +0 -39
- data/lib/yard/handlers/ruby/macro_handler.rb +0 -40
- data/lib/yard/handlers/ruby/macro_handler_methods.rb +0 -131
- data/lib/yard/parser/c_parser.rb +0 -497
- data/lib/yard/server/templates/default/layout/html/headers.erb +0 -16
- data/lib/yard/server/templates/doc_server/frames/html/frames.erb +0 -13
- data/lib/yard/server/templates/doc_server/frames/html/setup.rb +0 -3
- data/lib/yard/server/templates/doc_server/full_list/html/full_list.erb +0 -34
- data/lib/yard/server/templates/doc_server/full_list/html/setup.rb +0 -20
- data/spec/handlers/examples/macro_handler_001.rb.txt +0 -83
@@ -6,7 +6,7 @@ class StringSerializer < YARD::Serializers::Base
|
|
6
6
|
@files = files
|
7
7
|
@string = string
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
def serialize(object, data)
|
11
11
|
files << object
|
12
12
|
string << data
|
@@ -14,34 +14,51 @@ class StringSerializer < YARD::Serializers::Base
|
|
14
14
|
end
|
15
15
|
|
16
16
|
describe YARD::Templates::Engine.template(:default, :onefile) do
|
17
|
-
before
|
17
|
+
before do
|
18
|
+
Registry.clear
|
19
|
+
if defined?(::Encoding)
|
20
|
+
@eenc, Encoding.default_external = Encoding.default_external, 'ascii-8bit'
|
21
|
+
@ienc, Encoding.default_internal = Encoding.default_internal, 'ascii-8bit'
|
22
|
+
end
|
23
|
+
end
|
18
24
|
|
19
|
-
|
20
|
-
|
21
|
-
|
25
|
+
after do
|
26
|
+
if defined?(::Encoding)
|
27
|
+
Encoding.default_internal = @ienc
|
28
|
+
Encoding.default_external = @eenc
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def render
|
33
|
+
@files = []
|
34
|
+
@output = ''
|
22
35
|
YARD.parse_string <<-eof
|
23
36
|
class A
|
24
37
|
# Foo method
|
25
38
|
# @return [String]
|
26
39
|
def foo; end
|
27
|
-
|
40
|
+
|
28
41
|
# Bar method
|
29
42
|
# @return [Numeric]
|
30
43
|
def bar; end
|
31
44
|
end
|
32
45
|
eof
|
33
|
-
readme = CodeObjects::ExtraFileObject.new('README',
|
46
|
+
readme = CodeObjects::ExtraFileObject.new('README',
|
34
47
|
"# This is a code comment\n\n# Top of file\n\n\nclass C; end")
|
35
|
-
Templates::Engine.generate Registry.all(:class),
|
36
|
-
:serializer => StringSerializer.new(files,
|
48
|
+
Templates::Engine.generate Registry.all(:class),
|
49
|
+
:serializer => StringSerializer.new(@files, @output),
|
37
50
|
:onefile => true, :format => :html, :readme => readme, :files => [readme,
|
38
51
|
CodeObjects::ExtraFileObject.new('LICENSE', 'This is a license!')
|
39
52
|
]
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should render html" do
|
56
|
+
render
|
57
|
+
@files.should == ['index.html']
|
58
|
+
@output.should include("This is a code comment")
|
59
|
+
@output.should include("This is a license!")
|
60
|
+
@output.should include("Class: A")
|
61
|
+
@output.should include("Foo method")
|
62
|
+
@output.should include("Bar method")
|
46
63
|
end
|
47
64
|
end
|
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
|
3
3
|
describe YARD::Templates::Section do
|
4
4
|
include YARD::Templates
|
5
|
-
|
5
|
+
|
6
6
|
describe '#initialize' do
|
7
7
|
it "should convert first argument to splat if it is array" do
|
8
8
|
s = Section.new(:name, [:foo, :bar])
|
@@ -10,7 +10,7 @@ describe YARD::Templates::Section do
|
|
10
10
|
s[0].name.should == :foo
|
11
11
|
s[1].name.should == :bar
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it "should allow initialization with Section objects" do
|
15
15
|
s = Section.new(:name, [:foo, Section.new(:bar)])
|
16
16
|
s.name.should == :name
|
@@ -23,67 +23,67 @@ describe YARD::Templates::Section do
|
|
23
23
|
s.should == Section.new(:name, Section.new(:foo, Section.new(:bar)))
|
24
24
|
end
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
describe '#[]' do
|
28
28
|
it "should use Array#[] if argument is integer" do
|
29
29
|
Section.new(:name, [:foo, :bar])[0].name.should == :foo
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
it "should return new Section object if more than one argument" do
|
33
33
|
Section.new(:name, :foo, :bar, :baz)[1, 2].should ==
|
34
34
|
Section.new(:name, :bar, :baz)
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
it "should return new Section object if arg is Range" do
|
38
38
|
Section.new(:name, :foo, :bar, :baz)[1..2].should ==
|
39
39
|
Section.new(:name, :bar, :baz)
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
it "should look for section by name if arg is object" do
|
43
43
|
Section.new(:name, :foo, :bar, [:baz])[:bar][:baz].should ==
|
44
44
|
Section.new(:baz)
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
describe '#eql?' do
|
49
49
|
it "should check for equality of two equal sections" do
|
50
50
|
Section.new(:foo, [:a, :b]).should be_eql(Section.new(:foo, :a, :b))
|
51
51
|
Section.new(:foo, [:a, :b]).should == Section.new(:foo, :a, :b)
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
it "should not be equal if section names are different" do
|
55
55
|
Section.new(:foo, [:a, :b]).should_not be_eql(Section.new(:bar, :a, :b))
|
56
56
|
Section.new(:foo, [:a, :b]).should_not == Section.new(:bar, :a, :b)
|
57
57
|
end
|
58
58
|
end
|
59
|
-
|
59
|
+
|
60
60
|
describe '#==' do
|
61
61
|
it "should allow comparison to Symbol" do
|
62
62
|
Section.new(:foo, 2, 3).should == :foo
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
it "should allow comparison to String" do
|
66
66
|
Section.new("foo", 2, 3).should == "foo"
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
it "should allow comparison to Template" do
|
70
70
|
t = YARD::Templates::Engine.template!(:xyzzy, '/full/path/xyzzy')
|
71
71
|
Section.new(t, 2, 3).should == t
|
72
72
|
end
|
73
|
-
|
73
|
+
|
74
74
|
it "should allow comparison to Section" do
|
75
75
|
Section.new(1, [2, 3]).should == Section.new(1, 2, 3)
|
76
76
|
end
|
77
|
-
|
77
|
+
|
78
78
|
it "should allow comparison to Object" do
|
79
79
|
Section.new(1, [2, 3]).should == 1
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
it "should allow comparison to Array" do
|
83
83
|
Section.new(1, 2, [3]).should == [1, [2, [3]]]
|
84
84
|
end
|
85
85
|
end
|
86
|
-
|
86
|
+
|
87
87
|
describe '#to_a' do
|
88
88
|
it "should convert Section to regular Array list" do
|
89
89
|
arr = Section.new(1, 2, [3, [4]]).to_a
|
@@ -91,37 +91,37 @@ describe YARD::Templates::Section do
|
|
91
91
|
arr.should == [1, [2, [3, [4]]]]
|
92
92
|
end
|
93
93
|
end
|
94
|
-
|
94
|
+
|
95
95
|
describe '#place' do
|
96
96
|
it "should place objects as Sections" do
|
97
97
|
Section.new(1, 2, 3).place(4).before(3).should == [1, [2, 4, 3]]
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
it "should place objects anywhere inside Section with before/after_any" do
|
101
101
|
Section.new(1, 2, [3, [4]]).place(5).after_any(4).should == [1, [2, [3, [4, 5]]]]
|
102
102
|
Section.new(1, 2, [3, [4]]).place(5).before_any(4).should == [1, [2, [3, [5, 4]]]]
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
it "should allow multiple sections to be placed" do
|
106
106
|
Section.new(1, 2, 3).place(4, 5).after(3).to_a.should == [1, [2, 3, 4, 5]]
|
107
107
|
Section.new(1, 2, 3).place(4, [5]).after(3).to_a.should == [1, [2, 3, 4, [5]]]
|
108
108
|
end
|
109
109
|
end
|
110
|
-
|
110
|
+
|
111
111
|
describe '#push' do
|
112
112
|
it "should push objects as Sections" do
|
113
113
|
s = Section.new(:foo)
|
114
114
|
s.push :bar
|
115
115
|
s[0].should == Section.new(:bar)
|
116
116
|
end
|
117
|
-
|
117
|
+
|
118
118
|
it "should alias to #<<" do
|
119
119
|
s = Section.new(1)
|
120
120
|
s << :index
|
121
121
|
s[:index].should be_a(Section)
|
122
122
|
end
|
123
123
|
end
|
124
|
-
|
124
|
+
|
125
125
|
describe '#unshift' do
|
126
126
|
it "should unshift objects as Sections" do
|
127
127
|
s = Section.new(:foo)
|
@@ -129,14 +129,14 @@ describe YARD::Templates::Section do
|
|
129
129
|
s[0].should == Section.new(:bar)
|
130
130
|
end
|
131
131
|
end
|
132
|
-
|
132
|
+
|
133
133
|
describe '#any' do
|
134
134
|
it "should find item inside sections" do
|
135
135
|
s = Section.new(:foo, Section.new(:bar, Section.new(:bar)))
|
136
136
|
s.any(:bar).push(:baz)
|
137
137
|
s.to_a.should == [:foo, [:bar, [:bar, :baz]]]
|
138
138
|
end
|
139
|
-
|
139
|
+
|
140
140
|
it "should find item in any deeply nested set of sections" do
|
141
141
|
s = Section.new(:foo, Section.new(:bar, Section.new(:baz)))
|
142
142
|
s.any(:baz).push(:qux)
|
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../spec_helper'
|
|
2
2
|
|
3
3
|
include YARD::Templates
|
4
4
|
|
5
|
-
def only_copy?(result, example, type)
|
5
|
+
def only_copy?(result, example, type)
|
6
6
|
if $COPY == :all || $COPY == example
|
7
7
|
puts(result) unless $COPYT && $COPYT != type
|
8
8
|
end
|
@@ -40,3 +40,33 @@ module YARD::Templates::Engine
|
|
40
40
|
public :find_template_paths
|
41
41
|
end
|
42
42
|
end
|
43
|
+
|
44
|
+
class TestHtmlTemplateOptions < Templates::TemplateOptions
|
45
|
+
default_attr :markup, :none
|
46
|
+
default_attr :default_return, ""
|
47
|
+
default_attr :format, :html
|
48
|
+
default_attr :highlight, false
|
49
|
+
end
|
50
|
+
|
51
|
+
class TestTextTemplateOptions < Templates::TemplateOptions
|
52
|
+
default_attr :markup, :none
|
53
|
+
default_attr :default_return, ""
|
54
|
+
default_attr :format, :text
|
55
|
+
default_attr :highlight, false
|
56
|
+
end
|
57
|
+
|
58
|
+
def html_options(opts = {})
|
59
|
+
template_options(opts, TestHtmlTemplateOptions)
|
60
|
+
end
|
61
|
+
|
62
|
+
def text_options(opts = {})
|
63
|
+
template_options(opts, TestTextTemplateOptions)
|
64
|
+
end
|
65
|
+
|
66
|
+
def template_options(opts, klass)
|
67
|
+
options = klass.new
|
68
|
+
options.reset_defaults
|
69
|
+
options.update(opts)
|
70
|
+
options
|
71
|
+
end
|
72
|
+
|
data/spec/templates/tag_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
|
3
3
|
describe YARD::Templates::Engine.template(:default, :tags) do
|
4
4
|
before { Registry.clear }
|
5
|
-
|
5
|
+
|
6
6
|
describe 'all known tags' do
|
7
7
|
before do
|
8
8
|
YARD.parse_string <<-'eof'
|
@@ -33,18 +33,18 @@ describe YARD::Templates::Engine.template(:default, :tags) do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should render text format correctly" do
|
36
|
-
text_equals(Registry.at('#m').format, :tag001)
|
36
|
+
text_equals(Registry.at('#m').format(text_options), :tag001)
|
37
37
|
end
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
describe 'param tags on non-methods' do
|
41
41
|
it 'should not display @param tags on non-method objects' do
|
42
42
|
YARD.parse_string <<-'eof'
|
43
43
|
# @param [#to_s] name the name
|
44
44
|
module Foo; end
|
45
45
|
eof
|
46
|
-
|
47
|
-
proc = lambda { Registry.at('Foo').format(
|
46
|
+
|
47
|
+
proc = lambda { Registry.at('Foo').format(html_options) }
|
48
48
|
proc.should_not raise_error(NoMethodError)
|
49
49
|
end
|
50
50
|
end
|
@@ -8,13 +8,13 @@ describe YARD::Templates::Template do
|
|
8
8
|
before :each do
|
9
9
|
YARD::Templates::ErbCache.clear!
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
describe '.include_parent' do
|
13
13
|
it "should not include parent directory if parent directory is a template root path" do
|
14
14
|
mod = template('q')
|
15
15
|
mod.should_not include(template(''))
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
it "should include overridden parent directory" do
|
19
19
|
Engine.stub!(:template_paths).and_return(['/foo', '/bar'])
|
20
20
|
File.should_receive(:directory?).with('/foo/a/b').and_return(true)
|
@@ -24,40 +24,40 @@ describe YARD::Templates::Template do
|
|
24
24
|
ancestors = Engine.template('a/b').ancestors.map {|c| c.class_name }
|
25
25
|
ancestors[0, 3].should == %w( Template__foo_a_b Template__bar_a Template__foo_a )
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
it "should include parent directory template if exists" do
|
29
29
|
mod1 = template('x')
|
30
30
|
mod2 = template('x/y')
|
31
31
|
mod2.should include(mod1)
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
describe '.full_paths' do
|
36
36
|
it "should list full_path" do
|
37
37
|
mod = template(:a)
|
38
38
|
mod.full_paths.should == ['/full/path/a']
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
it "should list paths of included modules" do
|
42
42
|
mod = template(:a)
|
43
43
|
mod.send(:include, template(:b))
|
44
44
|
mod.full_paths.should == ['/full/path/a', '/full/path/b']
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
it "should list paths from modules of included modules" do
|
48
48
|
mod = template(:c)
|
49
49
|
mod.send(:include, template(:d))
|
50
50
|
mod.send(:include, template(:a))
|
51
51
|
mod.full_paths.should == ['c', 'a', 'b', 'd'].map {|o| '/full/path/' + o }
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
it "should only list full paths of modules that respond to full_paths" do
|
55
55
|
mod = template(:d)
|
56
56
|
mod.send(:include, Enumerable)
|
57
57
|
mod.full_paths.should == ['/full/path/d']
|
58
58
|
end
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
describe '.load_setup_rb' do
|
62
62
|
it "should load setup.rb file for module" do
|
63
63
|
File.should_receive(:file?).with('/full/path/e/setup.rb').and_return(true)
|
@@ -65,7 +65,7 @@ describe YARD::Templates::Template do
|
|
65
65
|
template(:e).new.should respond_to(:success)
|
66
66
|
end
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
describe '.T' do
|
70
70
|
it "should load template from absolute path" do
|
71
71
|
mod = template(:a)
|
@@ -73,77 +73,85 @@ describe YARD::Templates::Template do
|
|
73
73
|
mod.T('other')
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
describe '.find_file' do
|
78
78
|
it "should find file in module's full_path" do
|
79
79
|
File.should_receive(:file?).with('/full/path/a/basename').and_return(false)
|
80
80
|
File.should_receive(:file?).with('/full/path/b/basename').and_return(true)
|
81
81
|
template(:a).find_file('basename').should == '/full/path/b/basename'
|
82
82
|
end
|
83
|
-
|
83
|
+
|
84
84
|
it "should return nil if no file is found" do
|
85
85
|
File.should_receive(:file?).with('/full/path/a/basename').and_return(false)
|
86
86
|
File.should_receive(:file?).with('/full/path/b/basename').and_return(false)
|
87
87
|
template(:a).find_file('basename').should be_nil
|
88
88
|
end
|
89
89
|
end
|
90
|
-
|
90
|
+
|
91
91
|
describe '.find_nth_file' do
|
92
92
|
it "should find 2nd existing file in template paths" do
|
93
93
|
File.should_receive(:file?).with('/full/path/a/basename').and_return(true)
|
94
94
|
File.should_receive(:file?).with('/full/path/b/basename').and_return(true)
|
95
95
|
template(:a).find_nth_file('basename', 2).should == '/full/path/b/basename'
|
96
96
|
end
|
97
|
-
|
97
|
+
|
98
98
|
it "should return nil if no file is found" do
|
99
99
|
File.should_receive(:file?).with('/full/path/a/basename').and_return(true)
|
100
100
|
File.should_receive(:file?).with('/full/path/b/basename').and_return(true)
|
101
101
|
template(:a).find_nth_file('basename', 3).should be_nil
|
102
102
|
end
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
describe '.extra_includes' do
|
106
106
|
it "should be included when a module is initialized" do
|
107
107
|
module MyModule; end
|
108
108
|
Template.extra_includes << MyModule
|
109
109
|
template(:e).new.should be_kind_of(MyModule)
|
110
110
|
end
|
111
|
+
|
112
|
+
it "should support lambdas in list" do
|
113
|
+
module MyModule2; end
|
114
|
+
Template.extra_includes << lambda {|opts| MyModule2 if opts.format == :html }
|
115
|
+
template(:f).new(:format => :html).should be_kind_of(MyModule2)
|
116
|
+
metaclass = (class << template(:g).new(:format => :text); self end)
|
117
|
+
metaclass.ancestors.should_not include(MyModule2)
|
118
|
+
end
|
111
119
|
end
|
112
|
-
|
120
|
+
|
113
121
|
describe '.is_a?' do
|
114
122
|
it "should be kind of Template" do
|
115
123
|
template(:e).is_a?(Template).should == true
|
116
124
|
end
|
117
125
|
end
|
118
|
-
|
126
|
+
|
119
127
|
describe '#T' do
|
120
128
|
it "should delegate to class method" do
|
121
129
|
template(:e).should_receive(:T).with('test')
|
122
130
|
template(:e).new.T('test')
|
123
131
|
end
|
124
132
|
end
|
125
|
-
|
133
|
+
|
126
134
|
describe '#init' do
|
127
135
|
it "should be called during initialization" do
|
128
136
|
module YARD::Templates::Engine::Template__full_path_e
|
129
|
-
def init; sections 1, 2, 3 end
|
137
|
+
def init; sections 1, 2, 3 end
|
130
138
|
end
|
131
139
|
template(:e).new.sections.should == Section.new(nil, 1, 2, 3)
|
132
140
|
end
|
133
141
|
end
|
134
|
-
|
142
|
+
|
135
143
|
describe '#file' do
|
136
144
|
it "should read the file if it exists" do
|
137
145
|
File.should_receive(:file?).with('/full/path/e/abc').and_return(true)
|
138
146
|
IO.should_receive(:read).with('/full/path/e/abc').and_return('hello world')
|
139
147
|
template(:e).new.file('abc').should == 'hello world'
|
140
148
|
end
|
141
|
-
|
149
|
+
|
142
150
|
it "should raise ArgumentError if the file does not exist" do
|
143
151
|
File.should_receive(:file?).with('/full/path/e/abc').and_return(false)
|
144
152
|
lambda { template(:e).new.file('abc') }.should raise_error(ArgumentError)
|
145
153
|
end
|
146
|
-
|
154
|
+
|
147
155
|
it "should replace {{{__super__}}} with inherited template contents if allow_inherited=true" do
|
148
156
|
File.should_receive(:file?).with('/full/path/a/abc').twice.and_return(true)
|
149
157
|
File.should_receive(:file?).with('/full/path/b/abc').and_return(true)
|
@@ -158,7 +166,7 @@ describe YARD::Templates::Template do
|
|
158
166
|
template(:a).new.file('abc').should == "foo {{{__super__}}}"
|
159
167
|
end
|
160
168
|
end
|
161
|
-
|
169
|
+
|
162
170
|
describe '#superb' do
|
163
171
|
it "should return the inherited erb template contents" do
|
164
172
|
File.should_receive(:file?).with('/full/path/a/test.erb').and_return(true)
|
@@ -168,7 +176,7 @@ describe YARD::Templates::Template do
|
|
168
176
|
template.section = :test
|
169
177
|
template.superb.should == "bar"
|
170
178
|
end
|
171
|
-
|
179
|
+
|
172
180
|
it "should work inside an erb template" do
|
173
181
|
File.should_receive(:file?).with('/full/path/a/test.erb').twice.and_return(true)
|
174
182
|
File.should_receive(:file?).with('/full/path/b/test.erb').and_return(true)
|
@@ -179,7 +187,7 @@ describe YARD::Templates::Template do
|
|
179
187
|
template.erb(:test).should == "foobar!"
|
180
188
|
end
|
181
189
|
end
|
182
|
-
|
190
|
+
|
183
191
|
describe '#sections' do
|
184
192
|
it "should allow sections to be set if arguments are provided" do
|
185
193
|
mod = template(:e).new
|
@@ -187,7 +195,7 @@ describe YARD::Templates::Template do
|
|
187
195
|
mod.sections.should == Section.new(nil, 1, 2, [3])
|
188
196
|
end
|
189
197
|
end
|
190
|
-
|
198
|
+
|
191
199
|
describe '#run' do
|
192
200
|
it "should render all sections" do
|
193
201
|
mod = template(:e).new
|
@@ -197,7 +205,7 @@ describe YARD::Templates::Template do
|
|
197
205
|
mod.sections :a, :b, :c
|
198
206
|
mod.run.should == 'abc'
|
199
207
|
end
|
200
|
-
|
208
|
+
|
201
209
|
it "should render all sections with options" do
|
202
210
|
mod = template(:e).new
|
203
211
|
mod.should_receive(:render_section).with(Section.new(:a)).and_return('a')
|
@@ -205,14 +213,14 @@ describe YARD::Templates::Template do
|
|
205
213
|
mod.sections :a
|
206
214
|
mod.run(:a => 1).should == 'a'
|
207
215
|
end
|
208
|
-
|
216
|
+
|
209
217
|
it "should run section list if provided" do
|
210
218
|
mod = template(:e).new
|
211
219
|
mod.should_receive(:render_section).with(Section.new(:q))
|
212
220
|
mod.should_receive(:render_section).with(Section.new(:x))
|
213
221
|
mod.run({}, [:q, :x])
|
214
222
|
end
|
215
|
-
|
223
|
+
|
216
224
|
it "should accept a nil section as empty string" do
|
217
225
|
mod = template(:e).new
|
218
226
|
mod.should_receive(:render_section).with(Section.new(:a))
|
@@ -220,7 +228,7 @@ describe YARD::Templates::Template do
|
|
220
228
|
mod.run.should == ""
|
221
229
|
end
|
222
230
|
end
|
223
|
-
|
231
|
+
|
224
232
|
describe '#add_options' do
|
225
233
|
it "should set instance variables in addition to options" do
|
226
234
|
mod = template(:f).new
|
@@ -229,7 +237,7 @@ describe YARD::Templates::Template do
|
|
229
237
|
mod.instance_variable_get("@a").should == 1
|
230
238
|
mod.instance_variable_get("@b").should == 2
|
231
239
|
end
|
232
|
-
|
240
|
+
|
233
241
|
it "should set instance variables and options only for the block" do
|
234
242
|
mod = template(:f).new
|
235
243
|
mod.send(:add_options, {:a => 100, :b => 200}) do
|
@@ -238,7 +246,7 @@ describe YARD::Templates::Template do
|
|
238
246
|
mod.options.should_not == {:a => 100, :b => 200}
|
239
247
|
end
|
240
248
|
end
|
241
|
-
|
249
|
+
|
242
250
|
describe '#render_section' do
|
243
251
|
it "should call method if method exists by section name as Symbol" do
|
244
252
|
mod = template(:f).new
|
@@ -248,7 +256,7 @@ describe YARD::Templates::Template do
|
|
248
256
|
mod.should_receive(:send).with('a').and_return('a')
|
249
257
|
mod.run({}, [:a, 'a']).should == 'aa'
|
250
258
|
end
|
251
|
-
|
259
|
+
|
252
260
|
it "should call erb if no method exists by section name" do
|
253
261
|
mod = template(:f).new
|
254
262
|
mod.should_receive(:respond_to?).with(:a).and_return(false)
|
@@ -257,7 +265,7 @@ describe YARD::Templates::Template do
|
|
257
265
|
mod.should_receive(:erb).with('a').and_return('a')
|
258
266
|
mod.run({}, [:a, 'a']).should == 'aa'
|
259
267
|
end
|
260
|
-
|
268
|
+
|
261
269
|
it "should run a template if section is one" do
|
262
270
|
mod2 = template(:g)
|
263
271
|
mod2.should_receive(:run)
|
@@ -265,7 +273,7 @@ describe YARD::Templates::Template do
|
|
265
273
|
mod.sections mod2
|
266
274
|
mod.run
|
267
275
|
end
|
268
|
-
|
276
|
+
|
269
277
|
it "should run a template instance if section is one" do
|
270
278
|
mod2 = template(:g).new
|
271
279
|
mod2.should_receive(:run)
|
@@ -273,8 +281,8 @@ describe YARD::Templates::Template do
|
|
273
281
|
mod.sections mod2
|
274
282
|
mod.run
|
275
283
|
end
|
276
|
-
end
|
277
|
-
|
284
|
+
end
|
285
|
+
|
278
286
|
describe '#yield' do
|
279
287
|
it "should yield a subsection" do
|
280
288
|
mod = template(:e).new
|
@@ -287,7 +295,7 @@ describe YARD::Templates::Template do
|
|
287
295
|
|
288
296
|
mod.run.should == "(b)"
|
289
297
|
end
|
290
|
-
|
298
|
+
|
291
299
|
it "should yield a subsection within a yielded subsection" do
|
292
300
|
mod = template(:e).new
|
293
301
|
mod.sections :a, [:b, [:c]]
|
@@ -299,7 +307,7 @@ describe YARD::Templates::Template do
|
|
299
307
|
|
300
308
|
mod.run.should == "(c)"
|
301
309
|
end
|
302
|
-
|
310
|
+
|
303
311
|
it "should support arbitrary nesting" do
|
304
312
|
mod = template(:e).new
|
305
313
|
mod.sections :a, [:b, [:c, [:d, [:e]]]]
|
@@ -313,7 +321,7 @@ describe YARD::Templates::Template do
|
|
313
321
|
|
314
322
|
mod.run.should == "(e)"
|
315
323
|
end
|
316
|
-
|
324
|
+
|
317
325
|
it "should yield first two elements if yield is called twice" do
|
318
326
|
mod = template(:e).new
|
319
327
|
mod.sections :a, [:b, :c, :d]
|
@@ -325,7 +333,7 @@ describe YARD::Templates::Template do
|
|
325
333
|
|
326
334
|
mod.run.should == "(bc)"
|
327
335
|
end
|
328
|
-
|
336
|
+
|
329
337
|
it "should ignore any subsections inside subsection yields" do
|
330
338
|
mod = template(:e).new
|
331
339
|
mod.sections :a, [:b, [:c], :d]
|
@@ -337,19 +345,19 @@ describe YARD::Templates::Template do
|
|
337
345
|
|
338
346
|
mod.run.should == "(bd)"
|
339
347
|
end
|
340
|
-
|
348
|
+
|
341
349
|
it "should allow extra options passed via yield" do
|
342
350
|
mod = template(:e).new
|
343
351
|
mod.sections :a, [:b]
|
344
352
|
class << mod
|
345
353
|
def a; "(" + yield(:x => "a") + ")" end
|
346
|
-
def b; options
|
354
|
+
def b; options.x + @x end
|
347
355
|
end
|
348
356
|
|
349
357
|
mod.run.should == "(aa)"
|
350
358
|
end
|
351
359
|
end
|
352
|
-
|
360
|
+
|
353
361
|
describe '#yieldall' do
|
354
362
|
it "should yield all subsections" do
|
355
363
|
mod = template(:e).new
|
@@ -364,7 +372,7 @@ describe YARD::Templates::Template do
|
|
364
372
|
|
365
373
|
mod.run.should == "(bdec)"
|
366
374
|
end
|
367
|
-
|
375
|
+
|
368
376
|
it "should yield options to all subsections" do
|
369
377
|
mod = template(:e).new
|
370
378
|
mod.sections :a, [:b, :c]
|
@@ -375,7 +383,7 @@ describe YARD::Templates::Template do
|
|
375
383
|
end
|
376
384
|
mod.run.should == "(22)"
|
377
385
|
end
|
378
|
-
|
386
|
+
|
379
387
|
it "should yield all subsections more than once" do
|
380
388
|
mod = template(:e).new
|
381
389
|
mod.sections :a, [:b]
|
@@ -386,7 +394,7 @@ describe YARD::Templates::Template do
|
|
386
394
|
|
387
395
|
mod.run.should == "(bb)"
|
388
396
|
end
|
389
|
-
|
397
|
+
|
390
398
|
it "should not yield if no yieldall is called" do
|
391
399
|
mod = template(:e).new
|
392
400
|
mod.sections :a, [:b]
|