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/handlers/base_spec.rb
CHANGED
@@ -8,19 +8,19 @@ describe YARD::Handlers::Base do
|
|
8
8
|
before do
|
9
9
|
Handlers::Base.stub!(:inherited)
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
it "should keep track of subclasses" do
|
13
13
|
Handlers::Base.should_receive(:inherited).once
|
14
14
|
class TestHandler < Handlers::Base; end
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
it "should raise NotImplementedError if process is called on a class with no #process" do
|
18
18
|
class TestNotImplementedHandler < Handlers::Base
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
lambda { TestNotImplementedHandler.new(0, 0).process }.should raise_error(NotImplementedError)
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
it "should allow multiple handles arguments" do
|
25
25
|
Handlers::Base.should_receive(:inherited).once
|
26
26
|
class TestHandler1 < Handlers::Base
|
@@ -39,7 +39,7 @@ describe YARD::Handlers::Base do
|
|
39
39
|
TestHandler2.handlers.should == [:a, :b, :c]
|
40
40
|
end
|
41
41
|
end
|
42
|
-
|
42
|
+
|
43
43
|
describe 'transitive tags' do
|
44
44
|
it "should add transitive tags to children" do
|
45
45
|
Registry.clear
|
@@ -58,7 +58,7 @@ describe YARD::Handlers::Base do
|
|
58
58
|
Registry.at('A#bar').tag(:author).should be_nil
|
59
59
|
end
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
describe 'sharing global state' do
|
63
63
|
it "should allow globals to share global state among handlers" do
|
64
64
|
class GlobalStateHandler1 < Handlers::Ruby::Base
|
@@ -80,13 +80,13 @@ describe YARD::Handlers::Base do
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end if HAVE_RIPPER
|
83
|
-
|
83
|
+
|
84
84
|
describe '#push_state' do
|
85
85
|
def process(klass)
|
86
86
|
state = OpenStruct.new(:namespace => "ROOT", :scope => :instance, :owner => "ROOT")
|
87
87
|
klass.new(state, nil).process
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
90
|
it "should push and return all old state info after block" do
|
91
91
|
class PushStateHandler1 < Handlers::Base
|
92
92
|
def process
|
@@ -102,7 +102,7 @@ describe YARD::Handlers::Base do
|
|
102
102
|
end
|
103
103
|
process PushStateHandler1
|
104
104
|
end
|
105
|
-
|
105
|
+
|
106
106
|
it "should allow owner to be pushed individually" do
|
107
107
|
class PushStateHandler2 < Handlers::Base
|
108
108
|
def process
|
@@ -116,7 +116,7 @@ describe YARD::Handlers::Base do
|
|
116
116
|
end
|
117
117
|
process PushStateHandler2
|
118
118
|
end
|
119
|
-
|
119
|
+
|
120
120
|
it "should allow scope to be pushed individually" do
|
121
121
|
class PushStateHandler3 < Handlers::Base
|
122
122
|
def process
|
@@ -131,14 +131,14 @@ describe YARD::Handlers::Base do
|
|
131
131
|
process PushStateHandler3
|
132
132
|
end
|
133
133
|
end
|
134
|
-
|
134
|
+
|
135
135
|
describe '.in_file' do
|
136
136
|
def parse(filename, parser_type, src = "class A; end")
|
137
137
|
parser = Parser::SourceParser.new(parser_type)
|
138
138
|
parser.instance_variable_set("@file", filename)
|
139
139
|
parser.parse(StringIO.new(src))
|
140
140
|
end
|
141
|
-
|
141
|
+
|
142
142
|
def create_handler(stmts, parser_type)
|
143
143
|
$handler_counter ||= 0
|
144
144
|
sklass = parser_type == :ruby ? "Base" : "Legacy::Base"
|
@@ -150,7 +150,7 @@ describe YARD::Handlers::Base do
|
|
150
150
|
end
|
151
151
|
eof
|
152
152
|
end
|
153
|
-
|
153
|
+
|
154
154
|
def test_handler(file, stmts, creates = true, parser_type = :ruby)
|
155
155
|
Registry.clear
|
156
156
|
Registry.at('#FOO').should be_nil
|
@@ -159,14 +159,14 @@ describe YARD::Handlers::Base do
|
|
159
159
|
Registry.at('#FOO').send(creates ? :should_not : :should, be_nil)
|
160
160
|
Handlers::Base.subclasses.delete_if {|k,v| k.to_s =~ /^InFileHandler/ }
|
161
161
|
end
|
162
|
-
|
162
|
+
|
163
163
|
[:ruby, :ruby18].each do |parser_type|
|
164
164
|
next if parser_type == :ruby && LEGACY_PARSER
|
165
165
|
describe "Parser type = #{parser_type.inspect}" do
|
166
166
|
it "should allow handler to be specific to a file" do
|
167
167
|
test_handler 'file_a.rb', 'in_file "file_a.rb"', true, parser_type
|
168
168
|
end
|
169
|
-
|
169
|
+
|
170
170
|
it "should ignore handler if filename does not match" do
|
171
171
|
test_handler 'file_b.rb', 'in_file "file_a.rb"', false, parser_type
|
172
172
|
end
|
@@ -174,7 +174,7 @@ describe YARD::Handlers::Base do
|
|
174
174
|
it "should only test filename part when given a String" do
|
175
175
|
test_handler '/path/to/file_a.rb', 'in_file "/to/file_a.rb"', false, parser_type
|
176
176
|
end
|
177
|
-
|
177
|
+
|
178
178
|
it "should test exact match for entire String" do
|
179
179
|
test_handler 'file_a.rb', 'in_file "file"', false, parser_type
|
180
180
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::AliasHandler do
|
4
|
+
it "should allow defining of aliases (rb_define_alias)" do
|
5
|
+
parse <<-eof
|
6
|
+
/* FOO */
|
7
|
+
VALUE foo(VALUE x) { int value = x; }
|
8
|
+
void Init_Foo() {
|
9
|
+
rb_cFoo = rb_define_class("Foo", rb_cObject);
|
10
|
+
rb_define_method(rb_cFoo, "foo", foo, 1);
|
11
|
+
rb_define_alias(rb_cFoo, "bar", "foo");
|
12
|
+
}
|
13
|
+
eof
|
14
|
+
|
15
|
+
Registry.at('Foo#bar').should be_is_alias
|
16
|
+
Registry.at('Foo#bar').docstring.should == 'FOO'
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should allow defining of aliases (rb_define_alias) of attributes" do
|
20
|
+
parse <<-eof
|
21
|
+
/* FOO */
|
22
|
+
VALUE foo(VALUE x) { int value = x; }
|
23
|
+
void Init_Foo() {
|
24
|
+
rb_cFoo = rb_define_class("Foo", rb_cObject);
|
25
|
+
rb_define_attr(rb_cFoo, "foo", 1, 0);
|
26
|
+
rb_define_alias(rb_cFoo, "foo?", "foo");
|
27
|
+
}
|
28
|
+
eof
|
29
|
+
|
30
|
+
Registry.at('Foo#foo').should be_reader
|
31
|
+
Registry.at('Foo#foo?').should be_is_alias
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::AttributeHandler do
|
4
|
+
def run(read, write, commented = nil)
|
5
|
+
parse <<-eof
|
6
|
+
/* FOO */
|
7
|
+
VALUE foo(VALUE x) { int value = x; }
|
8
|
+
void Init_Foo() {
|
9
|
+
rb_cFoo = rb_define_class("Foo", rb_cObject);
|
10
|
+
#{commented ? '/*' : ''}
|
11
|
+
rb_define_attr(rb_cFoo, "foo", #{read}, #{write});
|
12
|
+
#{commented ? '*/' : ''}
|
13
|
+
}
|
14
|
+
eof
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should handle readonly attribute (rb_define_attr)" do
|
18
|
+
run(1, 0)
|
19
|
+
Registry.at('Foo#foo').should be_reader
|
20
|
+
Registry.at('Foo#foo=').should be_nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should handle writeonly attribute (rb_define_attr)" do
|
24
|
+
run(0, 1)
|
25
|
+
Registry.at('Foo#foo').should be_nil
|
26
|
+
Registry.at('Foo#foo=').should be_writer
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should handle readwrite attribute (rb_define_attr)" do
|
30
|
+
run(1, 1)
|
31
|
+
Registry.at('Foo#foo').should be_reader
|
32
|
+
Registry.at('Foo#foo=').should be_writer
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should handle commented writeonly attribute (/* rb_define_attr */)" do
|
36
|
+
run(1, 1, true)
|
37
|
+
Registry.at('Foo#foo').should be_reader
|
38
|
+
Registry.at('Foo#foo=').should be_writer
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::ClassHandler do
|
4
|
+
it "should register classes" do
|
5
|
+
parse_init 'cFoo = rb_define_class("Foo", rb_cObject);'
|
6
|
+
Registry.at('Foo').type.should == :class
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should register classes under namespaces" do
|
10
|
+
parse_init 'cFoo = rb_define_class_under(cBar, "Foo", rb_cObject);'
|
11
|
+
Registry.at('Bar::Foo').type.should == :class
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should remember symbol defined with class" do
|
15
|
+
parse_init(<<-eof)
|
16
|
+
cXYZ = rb_define_class("Foo", rb_cObject);
|
17
|
+
rb_define_method(cXYZ, "bar", bar, 0);
|
18
|
+
eof
|
19
|
+
Registry.at('Foo').type.should == :class
|
20
|
+
Registry.at('Foo#bar').should_not be_nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should lookup superclass symbol name" do
|
24
|
+
parse_init(<<-eof)
|
25
|
+
cXYZ = rb_define_class("Foo", rb_cObject);
|
26
|
+
cBar = rb_define_class("Bar", cXYZ);
|
27
|
+
eof
|
28
|
+
Registry.at('Bar').superclass.should == Registry.at('Foo')
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should user superclass symbol name as proxy if not found" do
|
32
|
+
parse_init(<<-eof)
|
33
|
+
// cXYZ = rb_define_class("Foo", rb_cObject);
|
34
|
+
cBar = rb_define_class("Bar", cXYZ);
|
35
|
+
eof
|
36
|
+
Registry.at('Bar').superclass.should == P('XYZ')
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should not associate declaration comments as class docstring" do
|
40
|
+
parse_init(<<-eof)
|
41
|
+
/* Docstring! */
|
42
|
+
cFoo = rb_define_class("Foo", cObject);
|
43
|
+
eof
|
44
|
+
Registry.at('Foo').docstring.should be_blank
|
45
|
+
end
|
46
|
+
|
47
|
+
it "should associate a file with the declaration" do
|
48
|
+
parse_init(<<-eof)
|
49
|
+
cFoo = rb_define_class("Foo", cObject);
|
50
|
+
eof
|
51
|
+
Registry.at('Foo').file.should == '(stdin)'
|
52
|
+
Registry.at('Foo').line.should == 2
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should properly handle Proxy superclasses" do
|
56
|
+
parse_init <<-eof
|
57
|
+
cFoo = rb_define_class_under(mFoo, "Bar", rb_cBar);
|
58
|
+
eof
|
59
|
+
Registry.at('Foo::Bar').type.should == :class
|
60
|
+
Registry.at('Foo::Bar').superclass.should == P('Bar')
|
61
|
+
P('Bar').should be_a(CodeObjects::Proxy)
|
62
|
+
P('Bar').type.should == :class
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::ConstantHandler do
|
4
|
+
it "should register constants" do
|
5
|
+
parse_init <<-eof
|
6
|
+
mFoo = rb_define_module("Foo");
|
7
|
+
rb_define_const(mFoo, "FOO", ID2SYM(100));
|
8
|
+
eof
|
9
|
+
Registry.at('Foo::FOO').type.should == :constant
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should look for override comments" do
|
13
|
+
parse <<-eof
|
14
|
+
/* Document-const: FOO
|
15
|
+
* Document-const: Foo::BAR
|
16
|
+
* Foo bar!
|
17
|
+
*/
|
18
|
+
|
19
|
+
void Init_Foo() {
|
20
|
+
mFoo = rb_define_module("Foo");
|
21
|
+
rb_define_const(mFoo, "FOO", ID2SYM(100));
|
22
|
+
rb_define_const(mFoo, "BAR", ID2SYM(101));
|
23
|
+
}
|
24
|
+
eof
|
25
|
+
foo = Registry.at('Foo::FOO')
|
26
|
+
foo.type.should == :constant
|
27
|
+
foo.docstring.should == 'Foo bar!'
|
28
|
+
foo.value.should == 'ID2SYM(100)'
|
29
|
+
foo.file.should == '(stdin)'
|
30
|
+
foo.line.should == 8
|
31
|
+
bar = Registry.at('Foo::BAR')
|
32
|
+
bar.type.should == :constant
|
33
|
+
bar.docstring.should == 'Foo bar!'
|
34
|
+
bar.file.should == '(stdin)'
|
35
|
+
bar.line.should == 9
|
36
|
+
bar.value.should == 'ID2SYM(101)'
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should use comment attached to declaration as fallback" do
|
40
|
+
parse_init <<-eof
|
41
|
+
mFoo = rb_define_module("Foo");
|
42
|
+
rb_define_const(mFoo, "FOO", ID2SYM(100)); // foobar!
|
43
|
+
eof
|
44
|
+
foo = Registry.at('Foo::FOO')
|
45
|
+
foo.value.should == 'ID2SYM(100)'
|
46
|
+
foo.docstring.should == 'foobar!'
|
47
|
+
end
|
48
|
+
|
49
|
+
it "should allow the form VALUE: DOCSTRING to document value" do
|
50
|
+
parse_init <<-eof
|
51
|
+
mFoo = rb_define_module("Foo");
|
52
|
+
rb_define_const(mFoo, "FOO", ID2SYM(100)); // 100: foobar!
|
53
|
+
eof
|
54
|
+
foo = Registry.at('Foo::FOO')
|
55
|
+
foo.value.should == '100'
|
56
|
+
foo.docstring.should == 'foobar!'
|
57
|
+
end
|
58
|
+
|
59
|
+
it "should allow escaping of backslashes in VALUE: DOCSTRING syntax" do
|
60
|
+
parse_init <<-eof
|
61
|
+
mFoo = rb_define_module("Foo");
|
62
|
+
rb_define_const(mFoo, "FOO", ID2SYM(100)); // 100\\:x\\:y: foobar:x!
|
63
|
+
eof
|
64
|
+
foo = Registry.at('Foo::FOO')
|
65
|
+
foo.value.should == '100:x:y'
|
66
|
+
foo.docstring.should == 'foobar:x!'
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::InitHandler do
|
4
|
+
it "should add documentation in Init_ClassName() to ClassName" do
|
5
|
+
parse(<<-eof)
|
6
|
+
// Bar!
|
7
|
+
void Init_A() {
|
8
|
+
rb_cA = rb_define_class("A", rb_cObject);
|
9
|
+
}
|
10
|
+
eof
|
11
|
+
Registry.at('A').docstring.should == 'Bar!'
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should not add documentation if ClassName is not created in Init" do
|
15
|
+
parse(<<-eof)
|
16
|
+
// Bar!
|
17
|
+
void Init_A() {
|
18
|
+
}
|
19
|
+
eof
|
20
|
+
Registry.at('A').should be_nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should not overwrite override comment" do
|
24
|
+
parse(<<-eof)
|
25
|
+
/* Document-class: A
|
26
|
+
* Foo!
|
27
|
+
*/
|
28
|
+
|
29
|
+
// Bar!
|
30
|
+
void Init_A() {
|
31
|
+
rb_cA = rb_define_class("A", rb_cObject);
|
32
|
+
}
|
33
|
+
eof
|
34
|
+
Registry.at('A').docstring.should == 'Foo!'
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,228 @@
|
|
1
|
+
require File.dirname(__FILE__) + "/spec_helper"
|
2
|
+
|
3
|
+
describe YARD::Handlers::C::MethodHandler do
|
4
|
+
it "should register methods" do
|
5
|
+
parse_init <<-eof
|
6
|
+
mFoo = rb_define_module("Foo");
|
7
|
+
rb_define_method(mFoo, "bar", bar, 0);
|
8
|
+
eof
|
9
|
+
Registry.at('Foo#bar').should_not be_nil
|
10
|
+
Registry.at('Foo#bar').visibility.should == :public
|
11
|
+
end
|
12
|
+
|
13
|
+
it "should register private methods" do
|
14
|
+
parse_init <<-eof
|
15
|
+
mFoo = rb_define_module("Foo");
|
16
|
+
rb_define_private_method(mFoo, "bar", bar, 0);
|
17
|
+
eof
|
18
|
+
Registry.at('Foo#bar').should_not be_nil
|
19
|
+
Registry.at('Foo#bar').visibility.should == :private
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should register singleton methods" do
|
23
|
+
parse_init <<-eof
|
24
|
+
mFoo = rb_define_module("Foo");
|
25
|
+
rb_define_singleton_method(mFoo, "bar", bar, 0);
|
26
|
+
eof
|
27
|
+
Registry.at('Foo.bar').should_not be_nil
|
28
|
+
Registry.at('Foo.bar').visibility.should == :public
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should register module functions" do
|
32
|
+
parse <<-eof
|
33
|
+
/* DOCSTRING
|
34
|
+
* @return [String] foo!
|
35
|
+
*/
|
36
|
+
static VALUE bar(VALUE self) { x(); y(); z(); }
|
37
|
+
|
38
|
+
void Init_Foo() {
|
39
|
+
mFoo = rb_define_module("Foo");
|
40
|
+
rb_define_module_function(mFoo, "bar", bar, 0);
|
41
|
+
}
|
42
|
+
eof
|
43
|
+
bar_c = Registry.at('Foo.bar')
|
44
|
+
bar_i = Registry.at('Foo#bar')
|
45
|
+
bar_c.should be_module_function
|
46
|
+
bar_c.visibility.should == :public
|
47
|
+
bar_c.docstring.should == "DOCSTRING"
|
48
|
+
bar_c.tag(:return).object.should == bar_c
|
49
|
+
bar_c.source.should == "static VALUE bar(VALUE self) { x(); y(); z(); }"
|
50
|
+
bar_i.should_not be_module_function
|
51
|
+
bar_i.visibility.should == :private
|
52
|
+
bar_i.docstring.should == "DOCSTRING"
|
53
|
+
bar_i.tag(:return).object.should == bar_i
|
54
|
+
bar_i.source.should == bar_c.source
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should register global functions into Kernel" do
|
58
|
+
parse_init 'rb_define_global_function("bar", bar, 0);'
|
59
|
+
Registry.at('Kernel#bar').should_not be_nil
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should look for symbol containing method source" do
|
63
|
+
parse <<-eof
|
64
|
+
static VALUE foo(VALUE self) { x(); y(); z(); }
|
65
|
+
VALUE bar() { a(); b(); c(); }
|
66
|
+
void Init_Foo() {
|
67
|
+
mFoo = rb_define_module("Foo");
|
68
|
+
rb_define_method(mFoo, "foo", foo, 0);
|
69
|
+
rb_define_method(mFoo, "bar", bar, 0);
|
70
|
+
}
|
71
|
+
eof
|
72
|
+
foo = Registry.at('Foo#foo')
|
73
|
+
bar = Registry.at('Foo#bar')
|
74
|
+
foo.source.should == "static VALUE foo(VALUE self) { x(); y(); z(); }"
|
75
|
+
foo.file.should == '(stdin)'
|
76
|
+
foo.line.should == 1
|
77
|
+
bar.source.should == "VALUE bar() { a(); b(); c(); }"
|
78
|
+
bar.file.should == '(stdin)'
|
79
|
+
bar.line.should == 2
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should find docstrings attached to method symbols" do
|
83
|
+
parse <<-eof
|
84
|
+
/* DOCSTRING */
|
85
|
+
static VALUE foo(VALUE self) { x(); y(); z(); }
|
86
|
+
void Init_Foo() {
|
87
|
+
mFoo = rb_define_module("Foo");
|
88
|
+
rb_define_method(mFoo, "foo", foo, 0);
|
89
|
+
}
|
90
|
+
eof
|
91
|
+
foo = Registry.at('Foo#foo')
|
92
|
+
foo.docstring.should == 'DOCSTRING'
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should use declaration comments as docstring if there are no others" do
|
96
|
+
parse <<-eof
|
97
|
+
static VALUE foo(VALUE self) { x(); y(); z(); }
|
98
|
+
void Init_Foo() {
|
99
|
+
mFoo = rb_define_module("Foo");
|
100
|
+
/* DOCSTRING */
|
101
|
+
rb_define_method(mFoo, "foo", foo, 0);
|
102
|
+
// DOCSTRING!
|
103
|
+
rb_define_method(mFoo, "bar", bar, 0);
|
104
|
+
}
|
105
|
+
eof
|
106
|
+
foo = Registry.at('Foo#foo')
|
107
|
+
foo.docstring.should == 'DOCSTRING'
|
108
|
+
bar = Registry.at('Foo#bar')
|
109
|
+
bar.docstring.should == 'DOCSTRING!'
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should look for symbols in other file" do
|
113
|
+
other = <<-eof
|
114
|
+
/* DOCSTRING! */
|
115
|
+
static VALUE foo() { x(); }
|
116
|
+
eof
|
117
|
+
File.should_receive(:read).with('other.c').and_return(other)
|
118
|
+
parse <<-eof
|
119
|
+
void Init_Foo() {
|
120
|
+
mFoo = rb_define_module("Foo");
|
121
|
+
rb_define_method(mFoo, "foo", foo, 0); // in other.c
|
122
|
+
}
|
123
|
+
eof
|
124
|
+
foo = Registry.at('Foo#foo')
|
125
|
+
foo.docstring.should == 'DOCSTRING!'
|
126
|
+
foo.file.should == 'other.c'
|
127
|
+
foo.line.should == 2
|
128
|
+
foo.source.should == 'static VALUE foo() { x(); }'
|
129
|
+
end
|
130
|
+
|
131
|
+
it "should allow extra file to include /'s and other filename characters" do
|
132
|
+
File.should_receive(:read).at_least(1).times.with('ext/a-file.c').and_return(<<-eof)
|
133
|
+
/* FOO */
|
134
|
+
VALUE foo(VALUE x) { int value = x; }
|
135
|
+
|
136
|
+
/* BAR */
|
137
|
+
VALUE bar(VALUE x) { int value = x; }
|
138
|
+
eof
|
139
|
+
parse_init <<-eof
|
140
|
+
rb_define_method(rb_cFoo, "foo", foo, 1); /* in ext/a-file.c */
|
141
|
+
rb_define_global_function("bar", bar, 1); /* in ext/a-file.c */
|
142
|
+
eof
|
143
|
+
Registry.at('Foo#foo').docstring.should == 'FOO'
|
144
|
+
Registry.at('Kernel#bar').docstring.should == 'BAR'
|
145
|
+
end
|
146
|
+
|
147
|
+
it "should warn if other file can't be found" do
|
148
|
+
log.should_receive(:warn).with(/Missing source file `other.c' when parsing Foo#foo/)
|
149
|
+
parse <<-eof
|
150
|
+
void Init_Foo() {
|
151
|
+
mFoo = rb_define_module("Foo");
|
152
|
+
rb_define_method(mFoo, "foo", foo, 0); // in other.c
|
153
|
+
}
|
154
|
+
eof
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should look at override comments for docstring" do
|
158
|
+
parse <<-eof
|
159
|
+
/* Document-method: Foo::foo
|
160
|
+
* Document-method: new
|
161
|
+
* Document-method: Foo::Bar#baz
|
162
|
+
* Foo bar!
|
163
|
+
*/
|
164
|
+
|
165
|
+
// init comments
|
166
|
+
void Init_Foo() {
|
167
|
+
mFoo = rb_define_module("Foo");
|
168
|
+
rb_define_method(mFoo, "foo", foo, 0);
|
169
|
+
rb_define_method(mFoo, "initialize", foo, 0);
|
170
|
+
mBar = rb_define_module_under(mFoo, "Bar");
|
171
|
+
rb_define_method(mBar, "baz", foo, 0);
|
172
|
+
}
|
173
|
+
eof
|
174
|
+
Registry.at('Foo#foo').docstring.should == 'Foo bar!'
|
175
|
+
Registry.at('Foo#initialize').docstring.should == 'Foo bar!'
|
176
|
+
Registry.at('Foo::Bar#baz').docstring.should == 'Foo bar!'
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should look at overrides in other files" do
|
180
|
+
other = <<-eof
|
181
|
+
/* Document-method: Foo::foo
|
182
|
+
* Document-method: new
|
183
|
+
* Document-method: Foo::Bar#baz
|
184
|
+
* Foo bar!
|
185
|
+
*/
|
186
|
+
eof
|
187
|
+
File.should_receive(:read).with('other.c').and_return(other)
|
188
|
+
parse <<-eof
|
189
|
+
void Init_Foo() {
|
190
|
+
mFoo = rb_define_module("Foo");
|
191
|
+
rb_define_method(mFoo, "foo", foo, 0); // in other.c
|
192
|
+
rb_define_method(mFoo, "initialize", foo, 0); // in other.c
|
193
|
+
mBar = rb_define_module_under(mFoo, "Bar"); // in other.c
|
194
|
+
rb_define_method(mBar, "baz", foo, 0); // in other.c
|
195
|
+
}
|
196
|
+
eof
|
197
|
+
Registry.at('Foo#foo').docstring.should == 'Foo bar!'
|
198
|
+
Registry.at('Foo#initialize').docstring.should == 'Foo bar!'
|
199
|
+
Registry.at('Foo::Bar#baz').docstring.should == 'Foo bar!'
|
200
|
+
end
|
201
|
+
|
202
|
+
it "should add return tag on methods ending in '?'" do
|
203
|
+
parse <<-eof
|
204
|
+
/* DOCSTRING */
|
205
|
+
static VALUE foo(VALUE self) { x(); y(); z(); }
|
206
|
+
void Init_Foo() {
|
207
|
+
mFoo = rb_define_module("Foo");
|
208
|
+
rb_define_method(mFoo, "foo?", foo, 0);
|
209
|
+
}
|
210
|
+
eof
|
211
|
+
foo = Registry.at('Foo#foo?')
|
212
|
+
foo.docstring.should == 'DOCSTRING'
|
213
|
+
foo.tag(:return).types.should == ['Boolean']
|
214
|
+
end
|
215
|
+
|
216
|
+
it "should not add return tag if return tags exist" do
|
217
|
+
parse <<-eof
|
218
|
+
// @return [String] foo
|
219
|
+
static VALUE foo(VALUE self) { x(); y(); z(); }
|
220
|
+
void Init_Foo() {
|
221
|
+
mFoo = rb_define_module("Foo");
|
222
|
+
rb_define_method(mFoo, "foo?", foo, 0);
|
223
|
+
}
|
224
|
+
eof
|
225
|
+
foo = Registry.at('Foo#foo?')
|
226
|
+
foo.tag(:return).types.should == ['String']
|
227
|
+
end
|
228
|
+
end
|