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
@@ -0,0 +1,27 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::MixinHandler do
|
4
|
+
it "should add includes to modules or classes" do
|
5
|
+
parse_init <<-eof
|
6
|
+
mFoo = rb_define_module("Foo");
|
7
|
+
cBar = rb_define_class("Bar", rb_cObject);
|
8
|
+
mBaz = rb_define_module("Baz");
|
9
|
+
rb_include_module(cBar, mFoo);
|
10
|
+
rb_include_module(mBaz, mFoo);
|
11
|
+
eof
|
12
|
+
foo = Registry.at('Foo')
|
13
|
+
bar = Registry.at('Bar')
|
14
|
+
baz = Registry.at('Baz')
|
15
|
+
bar.mixins(:instance).should == [foo]
|
16
|
+
baz.mixins(:instance).should == [foo]
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should add include as proxy if symbol lookup fails" do
|
20
|
+
parse_init <<-eof
|
21
|
+
mFoo = rb_define_module("Foo");
|
22
|
+
rb_include_module(mFoo, mXYZ);
|
23
|
+
eof
|
24
|
+
foo = Registry.at('Foo')
|
25
|
+
foo.mixins(:instance).should == [P('XYZ')]
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::ClassHandler do
|
4
|
+
it "should register modules" do
|
5
|
+
parse_init 'mFoo = rb_define_module("Foo");'
|
6
|
+
Registry.at('Foo').type.should == :module
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should register classes under namespaces" do
|
10
|
+
parse_init 'mFoo = rb_define_module_under(mBar, "Foo");'
|
11
|
+
Registry.at('Bar::Foo').type.should == :module
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should remember symbol defined with class" do
|
15
|
+
parse_init(<<-eof)
|
16
|
+
cXYZ = rb_define_module("Foo");
|
17
|
+
rb_define_method(cXYZ, "bar", bar, 0);
|
18
|
+
eof
|
19
|
+
Registry.at('Foo').type.should == :module
|
20
|
+
Registry.at('Foo#bar').should_not be_nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should not associate declaration comments as module docstring" do
|
24
|
+
parse_init(<<-eof)
|
25
|
+
/* Docstring! */
|
26
|
+
mFoo = rb_define_module("Foo");
|
27
|
+
eof
|
28
|
+
Registry.at('Foo').docstring.should be_blank
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should associate a file with the declaration" do
|
32
|
+
parse_init(<<-eof)
|
33
|
+
mFoo = rb_define_module("Foo");
|
34
|
+
eof
|
35
|
+
Registry.at('Foo').file.should == '(stdin)'
|
36
|
+
Registry.at('Foo').line.should == 2
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::OverrideCommentHandler do
|
4
|
+
[:class, :module].each do |type|
|
5
|
+
it "should handle Document-#{type}" do
|
6
|
+
parse(<<-eof)
|
7
|
+
/* Document-#{type}: A
|
8
|
+
* Foo bar baz
|
9
|
+
*/
|
10
|
+
void
|
11
|
+
eof
|
12
|
+
Registry.at('A').type.should == type
|
13
|
+
Registry.at('A').docstring.should == 'Foo bar baz'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should handle multiple class/module combinations" do
|
18
|
+
parse(<<-eof)
|
19
|
+
/* Document-class: A
|
20
|
+
* Document-class: B
|
21
|
+
* Document-module: C
|
22
|
+
* Foo bar baz
|
23
|
+
*/
|
24
|
+
eof
|
25
|
+
Registry.at('A').docstring.should == 'Foo bar baz'
|
26
|
+
Registry.at('B').docstring.should == 'Foo bar baz'
|
27
|
+
Registry.at('C').docstring.should == 'Foo bar baz'
|
28
|
+
Registry.at('C').type == :module
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should handle Document-class with inheritance" do
|
32
|
+
parse(<<-eof)
|
33
|
+
/* Document-class: A < B
|
34
|
+
* Foo bar baz
|
35
|
+
*/
|
36
|
+
void
|
37
|
+
eof
|
38
|
+
obj = Registry.at('A')
|
39
|
+
obj.type.should == :class
|
40
|
+
obj.docstring.should == 'Foo bar baz'
|
41
|
+
obj.superclass.should == P('B')
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::PathHandler do
|
4
|
+
it 'should track variable names defined under namespaces' do
|
5
|
+
parse_init <<-eof
|
6
|
+
mFoo = rb_define_module("Foo");
|
7
|
+
cBar = rb_define_class_under(mFoo, "Bar", rb_cObject);
|
8
|
+
rb_define_method(cBar, "foo", foo, 1);
|
9
|
+
eof
|
10
|
+
Registry.at('Foo::Bar').should_not be_nil
|
11
|
+
Registry.at('Foo::Bar#foo').should_not be_nil
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'should track variable names defined under namespaces' do
|
15
|
+
parse_init <<-eof
|
16
|
+
mFoo = rb_define_module("Foo");
|
17
|
+
cBar = rb_define_class_under(mFoo, "Bar", rb_cObject);
|
18
|
+
mBaz = rb_define_module_under(cBar, "Baz");
|
19
|
+
rb_define_method(mBaz, "foo", foo, 1);
|
20
|
+
eof
|
21
|
+
Registry.at('Foo::Bar::Baz').should_not be_nil
|
22
|
+
Registry.at('Foo::Bar::Baz#foo').should_not be_nil
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should handle rb_path2class() calls" do
|
26
|
+
parse_init <<-eof
|
27
|
+
somePath = rb_path2class("Foo::Bar::Baz")
|
28
|
+
mFoo = rb_define_module("Foo");
|
29
|
+
cBar = rb_define_class_under(mFoo, "Bar", rb_cObject);
|
30
|
+
mBaz = rb_define_module_under(cBar, "Baz");
|
31
|
+
rb_define_method(somePath, "foo", foo, 1);
|
32
|
+
eof
|
33
|
+
Registry.at('Foo::Bar::Baz#foo').should_not be_nil
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::StructHandler do
|
4
|
+
after { Registry.clear }
|
5
|
+
|
6
|
+
it "should handle Struct class definitions" do
|
7
|
+
parse_init <<-eof
|
8
|
+
rb_cRange = rb_struct_define_without_accessor(
|
9
|
+
"Range", rb_cFoo, range_alloc,
|
10
|
+
"begin", "end", "excl", NULL);
|
11
|
+
eof
|
12
|
+
Registry.at('Range').type.should == :class
|
13
|
+
Registry.at('Range').superclass.should == P(:Foo)
|
14
|
+
end
|
15
|
+
end
|
@@ -2,40 +2,40 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
|
3
3
|
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassConditionHandler" do
|
4
4
|
before(:all) { parse_file :class_condition_handler_001, __FILE__ }
|
5
|
-
|
5
|
+
|
6
6
|
def verify_method(*names)
|
7
7
|
names.each {|name| Registry.at("A##{name}").should_not be_nil }
|
8
8
|
names.each {|name| Registry.at("A##{name}not").should be_nil }
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def no_undoc_error(code)
|
12
12
|
lambda { StubbedSourceParser.parse_string(code) }.should_not raise_error
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
it "should parse all unless blocks for complex conditions" do
|
16
16
|
verify_method :g
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
it "should not parse conditionals inside methods" do
|
20
20
|
verify_method :h
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
it "should only parse then block if condition is literal value `true`" do
|
24
24
|
verify_method :p
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
it "should only parse then block if condition is literal integer != 0" do
|
28
28
|
verify_method :o
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should invert block to parse for literal condition if it's an unless block" do
|
32
32
|
verify_method :e
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
it "should handle conditions such as 'defined? VALUE'" do
|
36
36
|
verify_method :j, :k
|
37
37
|
end
|
38
|
-
|
38
|
+
|
39
39
|
it "should parse all if/elsif blocks for complex conditions" do
|
40
40
|
verify_method :a, :b, :c, :d
|
41
41
|
end
|
@@ -47,7 +47,7 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassCondition
|
|
47
47
|
it "should only parse else block if condition is literal integer == 0" do
|
48
48
|
verify_method :n
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
it "should not fail on complex conditions" do
|
52
52
|
log.should_not_receive(:warn)
|
53
53
|
log.should_not_receive(:error)
|
@@ -2,36 +2,36 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
3
3
|
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassHandler" do
|
4
4
|
before(:all) { parse_file :class_handler_001, __FILE__ }
|
5
|
-
|
5
|
+
|
6
6
|
it "should parse a class block with docstring" do
|
7
7
|
P("A").docstring.should == "Docstring"
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
it "should handle complex class names" do
|
11
11
|
P("A::B::C").should_not == nil
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it "should handle the subclassing syntax" do
|
15
15
|
P("A::B::C").superclass.should == P(:String)
|
16
16
|
P("A::X").superclass.should == Registry.at("A::B::C")
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
it "should interpret class << self as a class level block" do
|
20
20
|
P("A.classmethod1").should_not == nil
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
it "should interpret class << ClassName as a class level block in ClassName's namespace" do
|
24
24
|
P("A::B::C.Hello").should be_instance_of(CodeObjects::MethodObject)
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
it "should make visibility public when parsing a block" do
|
28
28
|
P("A::B::C#method1").visibility.should == :public
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should set superclass type to :class if it is a Proxy" do
|
32
32
|
P("A::B::C").superclass.type.should == :class
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
it "should look for a superclass before creating the class if it shares the same name" do
|
36
36
|
P('B::A').superclass.should == P('A')
|
37
37
|
end
|
@@ -39,33 +39,33 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassHandler"
|
|
39
39
|
it "should handle class definitions in the form ::ClassName" do
|
40
40
|
Registry.at("MyRootClass").should_not be_nil
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
it "should handle superclass as a constant-style method (camping style < R /path/)" do
|
44
44
|
P('Test1').superclass.should == P(:R)
|
45
45
|
P('Test2').superclass.should == P(:R)
|
46
46
|
P('Test6').superclass.should == P(:NotDelegateClass)
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
it "should handle superclass with OStruct.new or Struct.new syntax (superclass should be OStruct/Struct)" do
|
50
50
|
P('Test3').superclass.should == P(:Struct)
|
51
51
|
P('Test4').superclass.should == P(:OStruct)
|
52
52
|
end
|
53
|
-
|
53
|
+
|
54
54
|
it "should handle DelegateClass(CLASSNAME) superclass syntax" do
|
55
55
|
P('Test5').superclass.should == P(:Array)
|
56
56
|
end
|
57
|
-
|
57
|
+
|
58
58
|
it "should handle a superclass of the same name in the form ::ClassName" do
|
59
59
|
P('Q::Logger').superclass.should == P(:Logger)
|
60
60
|
P('Q::Foo').superclass.should_not == P('Q::Logger')
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
["CallMethod('test')", "VSD^#}}", 'not.aclass', 'self'].each do |klass|
|
64
64
|
it "should raise an UndocumentableError for invalid class '#{klass}'" do
|
65
65
|
with_parser(:ruby18) { undoc_error "class #{klass}; end" }
|
66
66
|
end
|
67
67
|
end
|
68
|
-
|
68
|
+
|
69
69
|
['@@INVALID', 'hi', '$MYCLASS', 'AnotherClass.new'].each do |klass|
|
70
70
|
it "should raise an UndocumentableError for invalid superclass '#{klass}' but it should create the class." do
|
71
71
|
YARD::CodeObjects::ClassObject.should_receive(:new).with(Registry.root, 'A')
|
@@ -73,7 +73,7 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassHandler"
|
|
73
73
|
Registry.at('A').superclass.should == P(:Object)
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
76
|
+
|
77
77
|
['not.aclass', 'self', 'AnotherClass.new'].each do |klass|
|
78
78
|
it "should raise an UndocumentableError if the constant class reference 'class << SomeConstant' does not point to a valid class name" do
|
79
79
|
with_parser(:ruby18) do
|
@@ -89,11 +89,11 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassHandler"
|
|
89
89
|
it "should document 'class << SomeConstant' by using SomeConstant's value as a reference to the real class name" do
|
90
90
|
Registry.at('String.classmethod').should_not be_nil
|
91
91
|
end
|
92
|
-
|
92
|
+
|
93
93
|
it "should allow class << SomeRubyClass to create the class if it does not exist" do
|
94
94
|
Registry.at('Symbol.toString').should_not be_nil
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
it "should document 'class Exception' without running into superclass issues" do
|
98
98
|
Parser::SourceParser.parse_string <<-eof
|
99
99
|
class Exception
|
@@ -101,16 +101,16 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassHandler"
|
|
101
101
|
eof
|
102
102
|
Registry.at(:Exception).should_not be_nil
|
103
103
|
end
|
104
|
-
|
104
|
+
|
105
105
|
it "should document 'class RT < XX::RT' with proper superclass even if XX::RT is a proxy" do
|
106
106
|
Registry.at(:RT).should_not be_nil
|
107
107
|
Registry.at(:RT).superclass.should == P('XX::RT')
|
108
108
|
end
|
109
|
-
|
109
|
+
|
110
110
|
it "should not overwrite docstring with an empty one" do
|
111
111
|
Registry.at(:Zebra).docstring.should == "Docstring 2"
|
112
112
|
end
|
113
|
-
|
113
|
+
|
114
114
|
it "should turn 'class Const < Struct.new(:sym)' into class Const with attr :sym" do
|
115
115
|
obj = Registry.at("Point")
|
116
116
|
obj.should be_kind_of(CodeObjects::ClassObject)
|
@@ -134,12 +134,12 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassHandler"
|
|
134
134
|
|
135
135
|
Registry.at("XPoint").should be_nil
|
136
136
|
end
|
137
|
-
|
137
|
+
|
138
138
|
it "should create a Struct::Name class when class Const < Struct.new('Name', :sym) is found" do
|
139
139
|
obj = Registry.at("Struct::XPoint")
|
140
140
|
obj.should_not be_nil
|
141
141
|
end
|
142
|
-
|
142
|
+
|
143
143
|
it "should attach attribtues to the generated Struct::Name class when Struct.new('Name') is used" do
|
144
144
|
obj = Registry.at("Struct::XPoint")
|
145
145
|
attrs = obj.attributes[:instance]
|
@@ -149,32 +149,32 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassHandler"
|
|
149
149
|
attrs[key][:write].should_not be_nil
|
150
150
|
end
|
151
151
|
end
|
152
|
-
|
152
|
+
|
153
153
|
it "should use @attr to set attribute descriptions on Struct subclasses" do
|
154
154
|
obj = Registry.at("DoccedStruct#input")
|
155
155
|
obj.docstring.should == "the input stream"
|
156
156
|
end
|
157
|
-
|
157
|
+
|
158
158
|
it "should use @attr to set attribute types on Struct subclasses" do
|
159
159
|
obj = Registry.at("DoccedStruct#someproc")
|
160
160
|
obj.should_not be_nil
|
161
161
|
obj.tag(:return).should_not be_nil
|
162
162
|
obj.tag(:return).types.should == ["Proc", "#call"]
|
163
163
|
end
|
164
|
-
|
164
|
+
|
165
165
|
it "should default types unspecified by @attr to Object on Struct subclasses" do
|
166
166
|
obj = Registry.at("DoccedStruct#mode")
|
167
167
|
obj.should_not be_nil
|
168
168
|
obj.tag(:return).should_not be_nil
|
169
169
|
obj.tag(:return).types.should == ["Object"]
|
170
170
|
end
|
171
|
-
|
171
|
+
|
172
172
|
it "should create parameters for writers of Struct subclass's attributes" do
|
173
173
|
obj = Registry.at("DoccedStruct#input=")
|
174
174
|
obj.tags(:param).size.should == 1
|
175
175
|
obj.tag(:param).types.should == ["IO"]
|
176
176
|
end
|
177
|
-
|
177
|
+
|
178
178
|
["SemiDoccedStruct", "NotAStruct"].each do |struct|
|
179
179
|
describe("Attributes on a " + (struct == "NotAStruct" ? "class" : "struct")) do
|
180
180
|
it "defines both readers and writers when @attr is used on Structs" do
|
@@ -183,63 +183,63 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassHandler"
|
|
183
183
|
attrs[:first][:read].should_not be_nil
|
184
184
|
attrs[:first][:write].should_not be_nil
|
185
185
|
end
|
186
|
-
|
186
|
+
|
187
187
|
it "defines only a reader when only @attr_reader is used on Structs" do
|
188
188
|
obj = Registry.at(struct)
|
189
189
|
attrs = obj.attributes[:instance]
|
190
190
|
attrs[:second][:read].should_not be_nil
|
191
191
|
attrs[:second][:write].should be_nil
|
192
192
|
end
|
193
|
-
|
193
|
+
|
194
194
|
it "defines only a writer when only @attr_writer is used on Structs" do
|
195
195
|
obj = Registry.at(struct)
|
196
196
|
attrs = obj.attributes[:instance]
|
197
197
|
attrs[:third][:read].should be_nil
|
198
198
|
attrs[:third][:write].should_not be_nil
|
199
199
|
end
|
200
|
-
|
200
|
+
|
201
201
|
it "defines a reader with correct return types when @attr_reader is used on Structs" do
|
202
202
|
obj = Registry.at("#{struct}#second")
|
203
203
|
obj.tag(:return).types.should == ["Fixnum"]
|
204
204
|
end
|
205
|
-
|
205
|
+
|
206
206
|
it "defines a writer with correct parameter types when @attr_writer is used on Structs" do
|
207
207
|
obj = Registry.at("#{struct}#third=")
|
208
208
|
obj.tag(:param).types.should == ["Array"]
|
209
209
|
end
|
210
|
-
|
210
|
+
|
211
211
|
it "defines a reader and a writer when both @attr_reader and @attr_writer are used" do
|
212
212
|
obj = Registry.at(struct)
|
213
213
|
attrs = obj.attributes[:instance]
|
214
214
|
attrs[:fourth][:read].should_not be_nil
|
215
215
|
attrs[:fourth][:write].should_not be_nil
|
216
216
|
end
|
217
|
-
|
217
|
+
|
218
218
|
it "uses @attr_reader for the getter when both @attr_reader and @attr_writer are given" do
|
219
219
|
obj = Registry.at("#{struct}#fourth")
|
220
220
|
obj.tag(:return).types.should == ["#read"]
|
221
221
|
end
|
222
|
-
|
222
|
+
|
223
223
|
it "uses @attr_writer for the setter when both @attr_reader and @attr_writer are given" do
|
224
224
|
obj = Registry.at("#{struct}#fourth=")
|
225
225
|
obj.tag(:param).types.should == ["IO"]
|
226
226
|
end
|
227
|
-
|
227
|
+
|
228
228
|
it "extracts text from @attr_reader" do
|
229
229
|
Registry.at("#{struct}#fourth").docstring.should == "returns a proc that reads"
|
230
230
|
end
|
231
|
-
|
231
|
+
|
232
232
|
it "extracts text from @attr_writer" do
|
233
233
|
Registry.at("#{struct}#fourth=").docstring.should == "sets the proc that writes stuff"
|
234
234
|
end
|
235
235
|
end
|
236
236
|
end
|
237
|
-
|
237
|
+
|
238
238
|
it "should inherit from a regular struct" do
|
239
239
|
Registry.at('RegularStruct').superclass.should == P(:Struct)
|
240
240
|
Registry.at('RegularStruct2').superclass.should == P(:Struct)
|
241
241
|
end
|
242
|
-
|
242
|
+
|
243
243
|
it "should handle inheritance from 'self'" do
|
244
244
|
Registry.at('Outer1::Inner1').superclass.should == Registry.at('Outer1')
|
245
245
|
end
|