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
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
|
3
3
|
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ClassVariableHandler" do
|
4
4
|
before(:all) { parse_file :class_variable_handler_001, __FILE__ }
|
5
|
-
|
5
|
+
|
6
6
|
it "should not parse class variables inside methods" do
|
7
7
|
obj = Registry.at("A::B::@@somevar")
|
8
8
|
obj.source.should == "@@somevar = \"hello\""
|
@@ -2,19 +2,19 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
|
3
3
|
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ConstantHandler" do
|
4
4
|
before(:all) { parse_file :constant_handler_001, __FILE__ }
|
5
|
-
|
5
|
+
|
6
6
|
it "should not parse constants inside methods" do
|
7
7
|
Registry.at("A::B::SOMECONSTANT").source.should == "SOMECONSTANT= \"hello\""
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
it "should only parse valid constants" do
|
11
11
|
Registry.at("A::B::notaconstant").should be_nil
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it "should maintain newlines" do
|
15
15
|
Registry.at("A::B::MYCONSTANT").value.gsub("\r", "").should == "A +\nB +\nC +\nD"
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
it "should turn Const = Struct.new(:sym) into class Const with attr :sym" do
|
19
19
|
obj = Registry.at("MyClass")
|
20
20
|
obj.should be_kind_of(CodeObjects::ClassObject)
|
@@ -38,13 +38,13 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ConstantHandle
|
|
38
38
|
|
39
39
|
Registry.at("NotMyClass2").should be_nil
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
it "should turn Const = Struct.new into empty struct" do
|
43
43
|
obj = Registry.at("MyEmptyStruct")
|
44
44
|
obj.should_not be_nil
|
45
45
|
obj.attributes[:instance].should be_empty
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
it "should maintain docstrings on structs defined via constants" do
|
49
49
|
obj = Registry.at("DocstringStruct")
|
50
50
|
obj.should_not be_nil
|
@@ -57,7 +57,7 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ConstantHandle
|
|
57
57
|
a2.docstring.should == "Another attr"
|
58
58
|
a2.tag(:return).types.should == ["Number"]
|
59
59
|
end
|
60
|
-
|
60
|
+
|
61
61
|
it "should raise undocumentable error in 1.9 parser for Struct.new assignment to non-const" do
|
62
62
|
undoc_error "nonconst = Struct.new"
|
63
63
|
end unless LEGACY_PARSER
|
@@ -1,10 +1,10 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/spec_helper'
|
2
2
|
require 'ostruct'
|
3
3
|
|
4
|
-
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}
|
5
|
-
before(:all) { parse_file :
|
6
|
-
|
7
|
-
it "should create a readable attribute when
|
4
|
+
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}DSLHandler" do
|
5
|
+
before(:all) { parse_file :dsl_handler_001, __FILE__ }
|
6
|
+
|
7
|
+
it "should create a readable attribute when @!attribute r is found" do
|
8
8
|
obj = Registry.at('Foo#attr1')
|
9
9
|
obj.should_not be_nil
|
10
10
|
obj.should be_reader
|
@@ -12,14 +12,14 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
|
|
12
12
|
Registry.at('Foo#attr1=').should be_nil
|
13
13
|
end
|
14
14
|
|
15
|
-
it "should create a writable attribute when
|
15
|
+
it "should create a writable attribute when @!attribute w is found" do
|
16
16
|
obj = Registry.at('Foo#attr2=')
|
17
17
|
obj.should_not be_nil
|
18
18
|
obj.should be_writer
|
19
19
|
Registry.at('Foo#attr2').should be_nil
|
20
20
|
end
|
21
|
-
|
22
|
-
it "should default to readwrite
|
21
|
+
|
22
|
+
it "should default to readwrite @!attribute" do
|
23
23
|
obj = Registry.at('Foo#attr3')
|
24
24
|
obj.should_not be_nil
|
25
25
|
obj.should be_reader
|
@@ -27,59 +27,59 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
|
|
27
27
|
obj.should_not be_nil
|
28
28
|
obj.should be_writer
|
29
29
|
end
|
30
|
-
|
31
|
-
it "should allow
|
30
|
+
|
31
|
+
it "should allow @!attribute to define alternate method name" do
|
32
32
|
Registry.at('Foo#attr4').should be_nil
|
33
33
|
Registry.at('Foo#custom').should_not be_nil
|
34
34
|
end
|
35
35
|
|
36
|
-
it "should default to creating an instance method for any DSL method with tags" do
|
36
|
+
it "should default to creating an instance method for any DSL method with special tags" do
|
37
37
|
obj = Registry.at('Foo#implicit0')
|
38
38
|
obj.should_not be_nil
|
39
39
|
obj.docstring.should == "IMPLICIT METHOD!"
|
40
40
|
obj.tag(:return).types.should == ['String']
|
41
41
|
end
|
42
|
-
|
43
|
-
it "should
|
44
|
-
obj = Registry.at(
|
42
|
+
|
43
|
+
it "should recognize implicit docstring when it has scope tag" do
|
44
|
+
obj = Registry.at("Foo.implicit1")
|
45
45
|
obj.should_not be_nil
|
46
|
-
obj.
|
47
|
-
obj.source.should == 'foo_bar'
|
48
|
-
obj.docstring.should == 'The foo method'
|
49
|
-
end
|
50
|
-
|
51
|
-
it "should create hidden overlaod tag when @method has signature" do
|
52
|
-
obj = Registry.at('Foo.xyz')
|
53
|
-
obj.docstring.tag(:overload).signature.should == 'xyz(a, b, c)'
|
54
|
-
obj.docstring.tag(:overload).object.should == obj
|
46
|
+
obj.scope.should == :class
|
55
47
|
end
|
56
|
-
|
57
|
-
it "should
|
58
|
-
obj = Registry.at(
|
48
|
+
|
49
|
+
it "should recognize implicit docstring when it has visibility tag" do
|
50
|
+
obj = Registry.at("Foo#implicit2")
|
59
51
|
obj.should_not be_nil
|
60
|
-
obj.
|
61
|
-
|
62
|
-
|
63
|
-
|
52
|
+
obj.visibility.should == :protected
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should not recognize implicit docstring with any other normal tag" do
|
56
|
+
obj = Registry.at('Foo#implicit_invalid3')
|
57
|
+
obj.should be_nil
|
64
58
|
end
|
65
59
|
|
66
|
-
it "should set the method
|
67
|
-
obj = Registry.at('Foo
|
60
|
+
it "should set the method name when using @!method" do
|
61
|
+
obj = Registry.at('Foo.xyz')
|
68
62
|
obj.should_not be_nil
|
69
|
-
obj.signature.should == 'def
|
70
|
-
obj.source.should == '
|
71
|
-
obj.docstring.
|
72
|
-
obj.docstring.tag(:overload).object.should == obj
|
63
|
+
obj.signature.should == 'def xyz(a, b, c)'
|
64
|
+
obj.source.should == 'foo_bar'
|
65
|
+
obj.docstring.should == 'The foo method'
|
73
66
|
end
|
74
|
-
|
75
|
-
it "should allow setting of
|
67
|
+
|
68
|
+
it "should allow setting of @!scope" do
|
76
69
|
Registry.at('Foo.xyz').scope.should == :class
|
77
70
|
end
|
78
|
-
|
79
|
-
it "should
|
71
|
+
|
72
|
+
it "should create module function if @!scope is module" do
|
73
|
+
mod_c = Registry.at('Foo.modfunc1')
|
74
|
+
mod_i = Registry.at('Foo#modfunc1')
|
75
|
+
mod_c.scope.should == :class
|
76
|
+
mod_i.visibility.should == :private
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should allow setting of @!visibility" do
|
80
80
|
Registry.at('Foo.xyz').visibility.should == :protected
|
81
81
|
end
|
82
|
-
|
82
|
+
|
83
83
|
it "should ignore DSL methods without tags" do
|
84
84
|
Registry.at('Foo#implicit_invalid').should be_nil
|
85
85
|
end
|
@@ -88,19 +88,23 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
|
|
88
88
|
Registry.at('Foo#implicit_valid').should_not be_nil
|
89
89
|
Registry.at('Foo#implicit_invalid2').should be_nil
|
90
90
|
end
|
91
|
-
|
91
|
+
|
92
92
|
it "should allow creation of macros" do
|
93
93
|
macro = CodeObjects::MacroObject.find('property')
|
94
94
|
macro.should_not be_nil
|
95
95
|
macro.should_not be_attached
|
96
96
|
macro.method_object.should be_nil
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
it "should handle macros with no parameters to expand" do
|
100
100
|
Registry.at('Foo#none').should_not be_nil
|
101
101
|
Registry.at('Baz#none').signature.should == 'def none(foo, bar)'
|
102
102
|
end
|
103
|
-
|
103
|
+
|
104
|
+
it "should expand $N on method definitions" do
|
105
|
+
Registry.at('Foo#regular_meth').docstring.should == 'a b c'
|
106
|
+
end
|
107
|
+
|
104
108
|
it "should apply new macro docstrings on new objects" do
|
105
109
|
obj = Registry.at('Foo#name')
|
106
110
|
obj.should_not be_nil
|
@@ -112,7 +116,7 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
|
|
112
116
|
obj.tag(:return).types.should == ['String']
|
113
117
|
obj.tag(:return).text.should == 'the property name'
|
114
118
|
end
|
115
|
-
|
119
|
+
|
116
120
|
it "should allow reuse of named macros" do
|
117
121
|
obj = Registry.at('Foo#age')
|
118
122
|
obj.should_not be_nil
|
@@ -124,10 +128,17 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
|
|
124
128
|
obj.tag(:return).types.should == ['Fixnum']
|
125
129
|
obj.tag(:return).text.should == 'the property age'
|
126
130
|
end
|
127
|
-
|
128
|
-
it "should
|
131
|
+
|
132
|
+
it "should know about method information on DSL with macro expansion" do
|
133
|
+
Registry.at('Foo#right_name').should_not be_nil
|
134
|
+
Registry.at('Foo#right_name').source.should ==
|
135
|
+
'implicit_with_different_method_name :wrong, :right'
|
136
|
+
Registry.at('Foo#wrong_name').should be_nil
|
137
|
+
end
|
138
|
+
|
139
|
+
it "should use attached macros" do
|
129
140
|
macro = CodeObjects::MacroObject.find('parser')
|
130
|
-
macro.macro_data.should == "
|
141
|
+
macro.macro_data.should == "@!method $1(opts = {})\n@return NOTHING!"
|
131
142
|
macro.should_not be_nil
|
132
143
|
macro.should be_attached
|
133
144
|
macro.method_object.should == P('Foo.parser')
|
@@ -137,28 +148,36 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}MacroHandler"
|
|
137
148
|
obj.signature.should == "def c_parser(opts = {})"
|
138
149
|
obj.docstring.tag(:return).text.should == "NOTHING!"
|
139
150
|
end
|
140
|
-
|
141
|
-
it "should
|
151
|
+
|
152
|
+
it "should append docstring on DSL method to attached macro" do
|
153
|
+
obj = Registry.at('Foo#d_parser')
|
154
|
+
obj.should_not be_nil
|
155
|
+
obj.docstring.should == "Another docstring"
|
156
|
+
obj.signature.should == "def d_parser(opts = {})"
|
157
|
+
obj.docstring.tag(:return).text.should == "NOTHING!"
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should only use attached macros on methods defined in inherited hierarchy" do
|
142
161
|
Registry.at('Bar#x_parser').should be_nil
|
143
162
|
Registry.at('Baz#y_parser').should_not be_nil
|
144
163
|
end
|
145
|
-
|
164
|
+
|
146
165
|
it "should handle top-level DSL methods" do
|
147
166
|
obj = Registry.at('#my_other_method')
|
148
167
|
obj.should_not be_nil
|
149
168
|
obj.docstring.should == "Docstring for method"
|
150
169
|
end
|
151
|
-
|
170
|
+
|
152
171
|
it "should handle Constant.foo syntax" do
|
153
172
|
obj = Registry.at('#beep')
|
154
173
|
obj.should_not be_nil
|
155
174
|
obj.signature.should == 'def beep(a, b, c)'
|
156
175
|
end
|
157
|
-
|
176
|
+
|
158
177
|
it "should not detect implicit macros with invalid method names" do
|
159
178
|
undoc_error <<-eof
|
160
179
|
##
|
161
|
-
# IMPLICIT METHOD THAT SHOULD
|
180
|
+
# IMPLICIT METHOD THAT SHOULD
|
162
181
|
# NOT BE DETECTED
|
163
182
|
dsl_method '/foo/bar'
|
164
183
|
eof
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module A
|
2
2
|
def a; end
|
3
3
|
alias_method :b, :a
|
4
|
-
|
4
|
+
|
5
5
|
# Handle keyword syntax too
|
6
6
|
alias :c :a
|
7
7
|
alias d? a
|
@@ -12,7 +12,7 @@ module A
|
|
12
12
|
alias * a
|
13
13
|
alias for a
|
14
14
|
alias ConstantName a
|
15
|
-
|
15
|
+
|
16
16
|
# Handle quoted symbols
|
17
17
|
alias :'foo' :'a'
|
18
18
|
end
|
@@ -24,7 +24,7 @@ end
|
|
24
24
|
class B < C
|
25
25
|
alias_method(:q, :x)
|
26
26
|
alias_method :r?, :x
|
27
|
-
alias_method :s, :to_s
|
27
|
+
alias_method :s, :to_s
|
28
28
|
alias_method :t, :inspect if 500 == 3 * CONSTANT
|
29
29
|
alias_method :<<, :a
|
30
30
|
alias_method :for, :a
|
@@ -35,10 +35,10 @@ end
|
|
35
35
|
class D
|
36
36
|
# Foo bar
|
37
37
|
def a; "FOO" end
|
38
|
-
|
38
|
+
|
39
39
|
# @return [String]
|
40
40
|
alias b a
|
41
|
-
|
41
|
+
|
42
42
|
# @return [Numeric]
|
43
43
|
def a; 0 end
|
44
44
|
end
|
@@ -6,15 +6,15 @@ class A
|
|
6
6
|
else
|
7
7
|
def c; end
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
def d; end if 50 * 2 == 101
|
11
|
-
|
11
|
+
|
12
12
|
unless false
|
13
13
|
def e; end
|
14
14
|
else
|
15
15
|
def enot; end
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
def g; end unless 5 * 2 == 101
|
19
19
|
|
20
20
|
def h
|
@@ -22,37 +22,37 @@ class A
|
|
22
22
|
def hnot; end
|
23
23
|
end
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
if defined? A
|
27
27
|
def j; end
|
28
28
|
else
|
29
29
|
def jnot; end
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
if defined? RUBY_VERSION
|
33
33
|
def k; end
|
34
34
|
else
|
35
35
|
def knot; end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
if 0
|
39
39
|
def nnot; end
|
40
40
|
else
|
41
41
|
def n; end
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
if 256
|
45
45
|
def o; end
|
46
46
|
else
|
47
47
|
def onot; end
|
48
48
|
end
|
49
|
-
|
49
|
+
|
50
50
|
if true
|
51
51
|
def p; end
|
52
52
|
else
|
53
53
|
def pnot; end
|
54
54
|
end
|
55
|
-
|
55
|
+
|
56
56
|
if false
|
57
57
|
def qnot; end
|
58
58
|
else
|
@@ -0,0 +1,110 @@
|
|
1
|
+
class Foo
|
2
|
+
attr_accessor :ignoreme
|
3
|
+
|
4
|
+
# IMPLICIT METHOD!
|
5
|
+
# @return [String]
|
6
|
+
just_a_method_for :implicit0
|
7
|
+
|
8
|
+
# IMPLICIT METHOD2!
|
9
|
+
# @!scope class
|
10
|
+
just_a_method_for :implicit1
|
11
|
+
|
12
|
+
# IMPLICIT METHOD3!
|
13
|
+
# @!visibility protected
|
14
|
+
just_a_method_for :implicit2
|
15
|
+
|
16
|
+
# Not recognized
|
17
|
+
just_a_method_for :implicit_invalid
|
18
|
+
|
19
|
+
#
|
20
|
+
## IS NOT RECOGNIZED!
|
21
|
+
just_a_method_for :implicit_invalid2
|
22
|
+
|
23
|
+
# @deprecated don't use this
|
24
|
+
just_a_method_for :implicit_invalid3
|
25
|
+
|
26
|
+
##
|
27
|
+
# IS RECOGNIZED!
|
28
|
+
just_a_method_for 'implicit_valid'
|
29
|
+
|
30
|
+
# @!attribute [r]
|
31
|
+
# @return [Numeric] a number
|
32
|
+
a_readable_attribute :attr1
|
33
|
+
|
34
|
+
# @!attribute [w]
|
35
|
+
a_writable_attribute :attr2, 'bar'
|
36
|
+
|
37
|
+
# @!attribute
|
38
|
+
default_attribute :attr3
|
39
|
+
|
40
|
+
# @!attribute custom
|
41
|
+
default_attribute :attr4
|
42
|
+
|
43
|
+
# @!method xyz(a, b, c)
|
44
|
+
# The foo method
|
45
|
+
# @param [String] a
|
46
|
+
# @!visibility protected
|
47
|
+
# @!scope class
|
48
|
+
foo_bar
|
49
|
+
|
50
|
+
# @!macro property
|
51
|
+
# @!method $1(${3-})
|
52
|
+
# A $0 that is awesome.
|
53
|
+
# @param $3 first parameter
|
54
|
+
# @return [$2] the property $1
|
55
|
+
property :name, String, :a, :b, :c
|
56
|
+
|
57
|
+
# @!macro property
|
58
|
+
property :age, Fixnum, :value
|
59
|
+
|
60
|
+
# This is just for x
|
61
|
+
# @!macro [attach] parser
|
62
|
+
# @!method $1(opts = {})
|
63
|
+
# @return NOTHING!
|
64
|
+
parser :x
|
65
|
+
|
66
|
+
parser :c_parser
|
67
|
+
|
68
|
+
# Another docstring
|
69
|
+
parser :d_parser
|
70
|
+
|
71
|
+
# @!macro [attach] none
|
72
|
+
# @!method none(foo, bar)
|
73
|
+
none
|
74
|
+
|
75
|
+
# @!macro something
|
76
|
+
# @!method $1(a, b, c)
|
77
|
+
something :qux
|
78
|
+
|
79
|
+
# @!method qux2(a, b, c)
|
80
|
+
something
|
81
|
+
|
82
|
+
# @!macro
|
83
|
+
# $1 $2 $3
|
84
|
+
def regular_meth(a, b, c) end
|
85
|
+
|
86
|
+
# @!macro [new] different
|
87
|
+
# @!method $2_name(a = 1)
|
88
|
+
|
89
|
+
# @!macro different
|
90
|
+
implicit_with_different_method_name :wrong, :right
|
91
|
+
|
92
|
+
# @!scope module
|
93
|
+
a_module_function :modfunc1
|
94
|
+
end
|
95
|
+
|
96
|
+
class Bar
|
97
|
+
parser :x_parser
|
98
|
+
end
|
99
|
+
|
100
|
+
class Baz < Foo
|
101
|
+
parser :y_parser
|
102
|
+
none { }
|
103
|
+
end
|
104
|
+
|
105
|
+
# @!method my_other_method
|
106
|
+
# Docstring for method
|
107
|
+
method_that_makes_a_method
|
108
|
+
|
109
|
+
# @!macro something
|
110
|
+
foobarbaz :beep
|