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
data/spec/cli/yri_spec.rb
CHANGED
@@ -4,41 +4,43 @@ class YARD::CLI::YRI
|
|
4
4
|
public :optparse, :find_object, :cache_object
|
5
5
|
end
|
6
6
|
|
7
|
-
describe YARD::CLI::
|
7
|
+
describe YARD::CLI::YRI do
|
8
8
|
before do
|
9
9
|
@yri = YARD::CLI::YRI.new
|
10
10
|
Registry.stub!(:load)
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
describe '#find_object' do
|
14
14
|
it "should use cache if available" do
|
15
15
|
@yri.stub!(:cache_object)
|
16
16
|
File.should_receive(:exist?).with('.yardoc').and_return(false)
|
17
17
|
File.should_receive(:exist?).with('bar.yardoc').and_return(true)
|
18
18
|
Registry.should_receive(:load).with('bar.yardoc')
|
19
|
-
Registry.should_receive(:at).with('Foo').and_return(
|
19
|
+
Registry.should_receive(:at).ordered.with('Foo').and_return(nil)
|
20
|
+
Registry.should_receive(:at).ordered.with('Foo').and_return('OBJ')
|
20
21
|
@yri.instance_variable_set("@cache", {'Foo' => 'bar.yardoc'})
|
21
22
|
@yri.find_object('Foo').should == 'OBJ'
|
22
23
|
end
|
23
|
-
|
24
|
+
|
24
25
|
it "should never use cache ahead of current directory's .yardoc" do
|
25
26
|
@yri.stub!(:cache_object)
|
26
27
|
File.should_receive(:exist?).with('.yardoc').and_return(true)
|
27
28
|
Registry.should_receive(:load).with('.yardoc')
|
28
|
-
Registry.should_receive(:at).with('Foo').and_return(
|
29
|
+
Registry.should_receive(:at).ordered.with('Foo').and_return(nil)
|
30
|
+
Registry.should_receive(:at).ordered.with('Foo').and_return('OBJ')
|
29
31
|
@yri.instance_variable_set("@cache", {'Foo' => 'bar.yardoc'})
|
30
32
|
@yri.find_object('Foo').should == 'OBJ'
|
31
33
|
@yri.instance_variable_get("@search_paths")[0].should == '.yardoc'
|
32
34
|
end
|
33
35
|
end
|
34
|
-
|
36
|
+
|
35
37
|
describe '#cache_object' do
|
36
38
|
it "should skip caching for Registry.yardoc_file" do
|
37
39
|
File.should_not_receive(:open).with(CLI::YRI::CACHE_FILE, 'w')
|
38
40
|
@yri.cache_object('Foo', Registry.yardoc_file)
|
39
41
|
end
|
40
42
|
end
|
41
|
-
|
43
|
+
|
42
44
|
describe '#initialize' do
|
43
45
|
it "should load search paths" do
|
44
46
|
path = %r{/\.yard/yri_search_paths$}
|
@@ -50,7 +52,7 @@ describe YARD::CLI::Yardoc do
|
|
50
52
|
spaths.should include('line1')
|
51
53
|
spaths.should include('line2')
|
52
54
|
end
|
53
|
-
|
55
|
+
|
54
56
|
it "should use DEFAULT_SEARCH_PATHS prior to other paths" do
|
55
57
|
YARD::CLI::YRI::DEFAULT_SEARCH_PATHS.push('foo', 'bar')
|
56
58
|
path = %r{/\.yard/yri_search_paths$}
|
@@ -63,21 +65,21 @@ describe YARD::CLI::Yardoc do
|
|
63
65
|
YARD::CLI::YRI::DEFAULT_SEARCH_PATHS.replace([])
|
64
66
|
end
|
65
67
|
end
|
66
|
-
|
68
|
+
|
67
69
|
describe '#run' do
|
68
70
|
it "should search for objects and print their documentation" do
|
69
71
|
obj = YARD::CodeObjects::ClassObject.new(:root, 'Foo')
|
70
72
|
@yri.should_receive(:print_object).with(obj)
|
71
73
|
@yri.run('Foo')
|
72
74
|
Registry.clear
|
73
|
-
end
|
74
|
-
|
75
|
+
end
|
76
|
+
|
75
77
|
it "should print usage if no object is provided" do
|
76
78
|
@yri.should_receive(:print_usage)
|
77
79
|
@yri.should_receive(:exit).with(1)
|
78
80
|
@yri.run('')
|
79
81
|
end
|
80
|
-
|
82
|
+
|
81
83
|
it "should print no documentation exists for object if object is not found" do
|
82
84
|
STDERR.should_receive(:puts).with("No documentation for `Foo'")
|
83
85
|
@yri.should_receive(:exit).with(1)
|
@@ -7,16 +7,16 @@ describe YARD::CodeObjects::Base do
|
|
7
7
|
# it "should not allow empty object name" do
|
8
8
|
# lambda { Base.new(:root, '') }.should raise_error(ArgumentError)
|
9
9
|
# end
|
10
|
-
|
10
|
+
|
11
11
|
it "should return a unique instance of any registered object" do
|
12
12
|
obj = ClassObject.new(:root, :Me)
|
13
13
|
obj2 = ClassObject.new(:root, :Me)
|
14
14
|
obj.object_id.should == obj2.object_id
|
15
|
-
|
15
|
+
|
16
16
|
obj3 = ModuleObject.new(obj, :Too)
|
17
17
|
obj4 = CodeObjects::Base.new(obj3, :Hello)
|
18
18
|
obj4.parent = obj
|
19
|
-
|
19
|
+
|
20
20
|
obj5 = CodeObjects::Base.new(obj3, :hello)
|
21
21
|
obj4.object_id.should_not == obj5.object_id
|
22
22
|
end
|
@@ -27,62 +27,62 @@ describe YARD::CodeObjects::Base do
|
|
27
27
|
ClassObject.new(:root, "MYMODULE").should be_instance_of(ClassObject)
|
28
28
|
YARD::Registry.at("MYMODULE").should be_instance_of(ClassObject)
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should recall the block if #new is called on an existing object" do
|
32
32
|
o1 = ClassObject.new(:root, :Me) do |o|
|
33
33
|
o.docstring = "DOCSTRING"
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
o2 = ClassObject.new(:root, :Me) do |o|
|
37
37
|
o.docstring = "NOT_DOCSTRING"
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
o1.object_id.should == o2.object_id
|
41
41
|
o1.docstring.should == "NOT_DOCSTRING"
|
42
42
|
o2.docstring.should == "NOT_DOCSTRING"
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
it "should allow complex name and convert that to namespace" do
|
46
46
|
obj = CodeObjects::Base.new(nil, "A::B")
|
47
47
|
obj.namespace.path.should == "A"
|
48
48
|
obj.name.should == :B
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
it "should allow namespace to be nil and not register in the Registry" do
|
52
52
|
obj = CodeObjects::Base.new(nil, :Me)
|
53
53
|
obj.namespace.should == nil
|
54
54
|
Registry.at(:Me).should == nil
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
it "should allow namespace to be a NamespaceObject" do
|
58
58
|
ns = ModuleObject.new(:root, :Name)
|
59
59
|
obj = CodeObjects::Base.new(ns, :Me)
|
60
60
|
obj.namespace.should == ns
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
it "should allow :root to be the shorthand namespace of `Registry.root`" do
|
64
64
|
obj = CodeObjects::Base.new(:root, :Me)
|
65
65
|
obj.namespace.should == Registry.root
|
66
66
|
end
|
67
|
-
|
67
|
+
|
68
68
|
it "should not allow any other types as namespace" do
|
69
69
|
lambda { CodeObjects::Base.new("ROOT!", :Me) }.should raise_error(ArgumentError)
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
it "should register itself in the registry if namespace is supplied" do
|
73
73
|
obj = ModuleObject.new(:root, :Me)
|
74
74
|
Registry.at(:Me).should == obj
|
75
|
-
|
75
|
+
|
76
76
|
obj2 = ModuleObject.new(obj, :Too)
|
77
77
|
Registry.at(:"Me::Too").should == obj2
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
it "should set any attribute using #[]=" do
|
81
81
|
obj = ModuleObject.new(:root, :YARD)
|
82
82
|
obj[:some_attr] = "hello"
|
83
83
|
obj[:some_attr].should == "hello"
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
it "#[]= should use the accessor method if available" do
|
87
87
|
obj = CodeObjects::Base.new(:root, :YARD)
|
88
88
|
obj[:source] = "hello"
|
@@ -90,34 +90,34 @@ describe YARD::CodeObjects::Base do
|
|
90
90
|
obj.source = "unhello"
|
91
91
|
obj[:source].should == "unhello"
|
92
92
|
end
|
93
|
-
|
93
|
+
|
94
94
|
it "should set attributes via attr= through method_missing" do
|
95
95
|
obj = CodeObjects::Base.new(:root, :YARD)
|
96
96
|
obj.something = 2
|
97
97
|
obj.something.should == 2
|
98
98
|
obj[:something].should == 2
|
99
99
|
end
|
100
|
-
|
100
|
+
|
101
101
|
it "should exist in the parent's #children after creation" do
|
102
102
|
obj = ModuleObject.new(:root, :YARD)
|
103
103
|
obj2 = MethodObject.new(obj, :testing)
|
104
104
|
obj.children.should include(obj2)
|
105
105
|
end
|
106
|
-
|
106
|
+
|
107
107
|
it "should properly re-indent source starting from 0 indentation" do
|
108
108
|
obj = CodeObjects::Base.new(nil, :test)
|
109
109
|
obj.source = <<-eof
|
110
110
|
def mymethod
|
111
111
|
if x == 2 &&
|
112
112
|
5 == 5
|
113
|
-
3
|
113
|
+
3
|
114
114
|
else
|
115
115
|
1
|
116
116
|
end
|
117
117
|
end
|
118
118
|
eof
|
119
|
-
obj.source.should == "def mymethod\n if x == 2 &&\n 5 == 5\n 3
|
120
|
-
|
119
|
+
obj.source.should == "def mymethod\n if x == 2 &&\n 5 == 5\n 3\n else\n 1\n end\nend"
|
120
|
+
|
121
121
|
Registry.clear
|
122
122
|
Parser::SourceParser.parse_string <<-eof
|
123
123
|
def key?(key)
|
@@ -138,7 +138,7 @@ describe YARD::CodeObjects::Base do
|
|
138
138
|
eof
|
139
139
|
Registry.at('#key?').source.should == "def key?(key)\n if x == 2\n puts key\n else\n exit\n end\nend"
|
140
140
|
end
|
141
|
-
|
141
|
+
|
142
142
|
it "should not add newlines to source when parsing sub blocks" do
|
143
143
|
Parser::SourceParser.parse_string <<-eof
|
144
144
|
module XYZ
|
@@ -151,15 +151,15 @@ describe YARD::CodeObjects::Base do
|
|
151
151
|
end
|
152
152
|
end
|
153
153
|
eof
|
154
|
-
Registry.at('XYZ::ZYX::ABC#msg').source.should == "def msg\n hello_world\nend"
|
154
|
+
Registry.at('XYZ::ZYX::ABC#msg').source.should == "def msg\n hello_world\nend"
|
155
155
|
end
|
156
|
-
|
156
|
+
|
157
157
|
it "should handle source for 'def x; end'" do
|
158
158
|
Registry.clear
|
159
159
|
Parser::SourceParser.parse_string "def x; 2 end"
|
160
160
|
Registry.at('#x').source.should == "def x; 2 end"
|
161
161
|
end
|
162
|
-
|
162
|
+
|
163
163
|
it "should set file and line information" do
|
164
164
|
Parser::SourceParser.parse_string <<-eof
|
165
165
|
class X; end
|
@@ -167,14 +167,14 @@ describe YARD::CodeObjects::Base do
|
|
167
167
|
Registry.at(:X).file.should == '(stdin)'
|
168
168
|
Registry.at(:X).line.should == 1
|
169
169
|
end
|
170
|
-
|
170
|
+
|
171
171
|
it "should maintain all file associations when objects are defined multiple times in one file" do
|
172
172
|
Parser::SourceParser.parse_string <<-eof
|
173
173
|
class X; end
|
174
174
|
class X; end
|
175
175
|
class X; end
|
176
176
|
eof
|
177
|
-
|
177
|
+
|
178
178
|
Registry.at(:X).file.should == '(stdin)'
|
179
179
|
Registry.at(:X).line.should == 1
|
180
180
|
Registry.at(:X).files.should == [['(stdin)', 1], ['(stdin)', 2], ['(stdin)', 3]]
|
@@ -185,7 +185,7 @@ describe YARD::CodeObjects::Base do
|
|
185
185
|
File.stub!(:read_binary).and_return("class X; end")
|
186
186
|
Parser::SourceParser.new.parse("file#{i+1}.rb")
|
187
187
|
end
|
188
|
-
|
188
|
+
|
189
189
|
Registry.at(:X).file.should == 'file1.rb'
|
190
190
|
Registry.at(:X).line.should == 1
|
191
191
|
Registry.at(:X).files.should == [['file1.rb', 1], ['file2.rb', 1], ['file3.rb', 1]]
|
@@ -198,12 +198,12 @@ describe YARD::CodeObjects::Base do
|
|
198
198
|
# docstring
|
199
199
|
class X; end
|
200
200
|
eof
|
201
|
-
|
201
|
+
|
202
202
|
Registry.at(:X).file.should == '(stdin)'
|
203
203
|
Registry.at(:X).line.should == 4
|
204
204
|
Registry.at(:X).files.should == [['(stdin)', 4], ['(stdin)', 1], ['(stdin)', 2]]
|
205
205
|
end
|
206
|
-
|
206
|
+
|
207
207
|
describe '#format' do
|
208
208
|
it "should send to Templates.render" do
|
209
209
|
object = MethodObject.new(:root, :method)
|
@@ -211,34 +211,34 @@ describe YARD::CodeObjects::Base do
|
|
211
211
|
object.format :x => 1
|
212
212
|
end
|
213
213
|
end
|
214
|
-
|
214
|
+
|
215
215
|
describe '#source_type' do
|
216
216
|
it "should default source_type to :ruby" do
|
217
217
|
object = MethodObject.new(:root, :method)
|
218
218
|
object.source_type.should == :ruby
|
219
219
|
end
|
220
220
|
end
|
221
|
-
|
221
|
+
|
222
222
|
describe '#relative_path' do
|
223
223
|
it "should accept a string" do
|
224
224
|
YARD.parse_string "module A; class B; end; class C; end; end"
|
225
|
-
Registry.at('A::B').relative_path(Registry.at('A::C')).should ==
|
225
|
+
Registry.at('A::B').relative_path(Registry.at('A::C')).should ==
|
226
226
|
Registry.at('A::B').relative_path('A::C')
|
227
227
|
end
|
228
|
-
|
228
|
+
|
229
229
|
it "should return full class name when objects share a common class prefix" do
|
230
230
|
YARD.parse_string "module User; end; module UserManager; end"
|
231
231
|
Registry.at('User').relative_path('UserManager').should == 'UserManager'
|
232
232
|
Registry.at('User').relative_path(Registry.at('UserManager')).should == 'UserManager'
|
233
233
|
end
|
234
|
-
|
234
|
+
|
235
235
|
it "should return the relative path when they share a common namespace" do
|
236
236
|
YARD.parse_string "module A; class B; end; class C; end; end"
|
237
237
|
Registry.at('A::B').relative_path(Registry.at('A::C')).should == 'C'
|
238
238
|
YARD.parse_string "module Foo; module A; end; module B; def foo; end end end"
|
239
239
|
Registry.at('Foo::A').relative_path(Registry.at('Foo::B#foo')).should == 'B#foo'
|
240
240
|
end
|
241
|
-
|
241
|
+
|
242
242
|
it "should return the full path if they don't have a common namespace" do
|
243
243
|
YARD.parse_string "module A; class B; end; end; module D; class C; end; end"
|
244
244
|
Registry.at('A::B').relative_path('D::C').should == 'D::C'
|
@@ -249,7 +249,7 @@ describe YARD::CodeObjects::Base do
|
|
249
249
|
YARD.parse_string("class YARD::Config; MYCONST = 1; end")
|
250
250
|
Registry.at('YARD::Config').relative_path('YARD::Config::MYCONST').should == "MYCONST"
|
251
251
|
end
|
252
|
-
|
252
|
+
|
253
253
|
it "should return a relative path for class methods" do
|
254
254
|
YARD.parse_string "module A; def self.b; end; def self.c; end; end"
|
255
255
|
Registry.at('A.b').relative_path('A.c').should == 'c'
|
@@ -261,26 +261,26 @@ describe YARD::CodeObjects::Base do
|
|
261
261
|
Registry.at('A#b').relative_path('A#c').should == '#c'
|
262
262
|
Registry.at('A').relative_path('A#c').should == '#c'
|
263
263
|
end
|
264
|
-
|
264
|
+
|
265
265
|
it "should return full path if relative path is to parent namespace" do
|
266
266
|
YARD.parse_string "module A; module B; end end"
|
267
267
|
Registry.at('A::B').relative_path('A').should == 'A'
|
268
268
|
end
|
269
|
-
|
269
|
+
|
270
270
|
it "should only return name for relative path to self" do
|
271
271
|
YARD.parse_string("class A::B::C; def foo; end end")
|
272
272
|
Registry.at('A::B::C').relative_path('A::B::C').should == 'C'
|
273
273
|
Registry.at('A::B::C#foo').relative_path('A::B::C#foo').should == '#foo'
|
274
274
|
end
|
275
275
|
end
|
276
|
-
|
276
|
+
|
277
277
|
describe '#docstring=' do
|
278
278
|
it "should convert string into Docstring when #docstring= is set" do
|
279
|
-
o = ClassObject.new(:root, :Me)
|
279
|
+
o = ClassObject.new(:root, :Me)
|
280
280
|
o.docstring = "DOCSTRING"
|
281
281
|
o.docstring.should be_instance_of(Docstring)
|
282
282
|
end
|
283
|
-
|
283
|
+
|
284
284
|
it "should set docstring to docstring of other object if docstring is '(see Path)'" do
|
285
285
|
ClassObject.new(:root, :AnotherObject) {|x| x.docstring = "FOO" }
|
286
286
|
o = ClassObject.new(:root, :Me)
|
@@ -294,7 +294,7 @@ describe YARD::CodeObjects::Base do
|
|
294
294
|
o.docstring = doc
|
295
295
|
o.docstring.should == doc
|
296
296
|
end
|
297
|
-
|
297
|
+
|
298
298
|
it "should allow extra docstring after (see Path)" do
|
299
299
|
ClassObject.new(:root, :AnotherObject) {|x| x.docstring = "FOO" }
|
300
300
|
o = ClassObject.new(:root, :Me)
|
@@ -303,14 +303,14 @@ describe YARD::CodeObjects::Base do
|
|
303
303
|
o.docstring.should have_tag(:api)
|
304
304
|
end
|
305
305
|
end
|
306
|
-
|
306
|
+
|
307
307
|
describe '#docstring' do
|
308
308
|
it "should return empty string if docstring was '(see Path)' and Path is not resolved" do
|
309
309
|
o = ClassObject.new(:root, :Me)
|
310
310
|
o.docstring = '(see AnotherObject)'
|
311
311
|
o.docstring.should == ""
|
312
312
|
end
|
313
|
-
|
313
|
+
|
314
314
|
it "should return docstring when object is resolved" do
|
315
315
|
o = ClassObject.new(:root, :Me)
|
316
316
|
o.docstring = '(see AnotherObject)'
|
@@ -319,7 +319,7 @@ describe YARD::CodeObjects::Base do
|
|
319
319
|
o.docstring.should == "FOO"
|
320
320
|
end
|
321
321
|
end
|
322
|
-
|
322
|
+
|
323
323
|
describe '#add_file' do
|
324
324
|
it "should only add a file/line combination once" do
|
325
325
|
o = ClassObject.new(:root, :Me)
|
@@ -331,4 +331,62 @@ describe YARD::CodeObjects::Base do
|
|
331
331
|
o.files.should == [['filename', 12], ['filename', 40]]
|
332
332
|
end
|
333
333
|
end
|
334
|
+
|
335
|
+
describe '#copy_to' do
|
336
|
+
it "should copy all data to new object" do
|
337
|
+
YARD.parse_string <<-eof
|
338
|
+
private
|
339
|
+
# A docstring
|
340
|
+
# @return [String] a tag
|
341
|
+
def foo(a, b, c)
|
342
|
+
source_code_here
|
343
|
+
end
|
344
|
+
eof
|
345
|
+
foo_c = MethodObject.new(:root, :foo, :class)
|
346
|
+
Registry.at('#foo').copy_to(foo_c)
|
347
|
+
foo_c.scope.should == :class
|
348
|
+
foo_c.visibility.should == :private
|
349
|
+
foo_c.type.should == :method
|
350
|
+
foo_c.class.should == MethodObject
|
351
|
+
foo_c.path.should == '::foo'
|
352
|
+
foo_c.docstring.should == "A docstring"
|
353
|
+
foo_c.tag(:return).types.should == ['String']
|
354
|
+
foo_c.file.should == '(stdin)'
|
355
|
+
foo_c.line.should == 4
|
356
|
+
foo_c.source.should =~ /source_code_here/
|
357
|
+
foo_c.signature.should == 'def foo(a, b, c)'
|
358
|
+
foo_c.parameters.should == [['a', nil], ['b', nil], ['c', nil]]
|
359
|
+
end
|
360
|
+
|
361
|
+
it "should return copied object" do
|
362
|
+
YARD.parse_string 'def foo; end'
|
363
|
+
foo_c = MethodObject.new(:root, :foo, :class)
|
364
|
+
Registry.at('#foo').copy_to(foo_c).should == foo_c
|
365
|
+
end
|
366
|
+
|
367
|
+
it "should copy docstring and rewrite tags for new object" do
|
368
|
+
YARD.parse_string <<-eof
|
369
|
+
# @return [String] a tag
|
370
|
+
def foo; end
|
371
|
+
eof
|
372
|
+
foo_c = MethodObject.new(:root, :foo, :class)
|
373
|
+
foo_i = Registry.at('#foo')
|
374
|
+
foo_i.copy_to(foo_c)
|
375
|
+
foo_i.tags.should_not == foo_c.tags
|
376
|
+
foo_c.tags.first.object.should == foo_c
|
377
|
+
end
|
378
|
+
|
379
|
+
it "should only copy #copyable_attributes" do
|
380
|
+
foo = MethodObject.new(:root, :foo)
|
381
|
+
foo.should_receive(:copyable_attributes).and_return %w(a b c)
|
382
|
+
foo.should_receive(:instance_variable_get).with('@a').and_return(1)
|
383
|
+
foo.should_receive(:instance_variable_get).with('@b').and_return(2)
|
384
|
+
foo.should_receive(:instance_variable_get).with('@c').and_return(3)
|
385
|
+
bar = MethodObject.new(:root, :bar)
|
386
|
+
bar.should_receive(:instance_variable_set).with('@a', 1)
|
387
|
+
bar.should_receive(:instance_variable_set).with('@b', 2)
|
388
|
+
bar.should_receive(:instance_variable_set).with('@c', 3)
|
389
|
+
foo.copy_to(bar)
|
390
|
+
end
|
391
|
+
end
|
334
392
|
end
|