yard 0.7.5 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of yard might be problematic. Click here for more details.
- data/.yardopts +10 -2
- data/ChangeLog +1263 -38
- data/LEGAL +5 -5
- data/LICENSE +1 -1
- data/README.md +91 -82
- data/Rakefile +6 -6
- data/benchmarks/builtins_vs_eval.rb +1 -1
- data/benchmarks/erb_vs_erubis.rb +4 -4
- data/benchmarks/generation.rb +5 -5
- data/benchmarks/parsing.rb +2 -2
- data/benchmarks/registry_store_types.rb +48 -0
- data/bin/yard +9 -1
- data/bin/yardoc +9 -1
- data/bin/yri +10 -2
- data/docs/CodeObjects.md +10 -10
- data/docs/GettingStarted.md +85 -83
- data/docs/Handlers.md +21 -21
- data/docs/Overview.md +7 -7
- data/docs/Parser.md +30 -30
- data/docs/Tags.md +250 -554
- data/docs/TagsArch.md +123 -0
- data/docs/Templates.md +58 -80
- data/docs/WhatsNew.md +378 -133
- data/docs/templates/default/fulldoc/html/full_list_tag.erb +7 -0
- data/docs/templates/default/fulldoc/html/setup.rb +6 -0
- data/docs/templates/default/layout/html/setup.rb +8 -0
- data/docs/templates/default/layout/html/tag_list.erb +11 -0
- data/docs/templates/default/yard_tags/html/list.erb +18 -0
- data/docs/templates/default/yard_tags/html/setup.rb +27 -0
- data/docs/templates/plugin.rb +65 -0
- data/lib/yard.rb +1 -10
- data/lib/yard/autoload.rb +75 -27
- data/lib/yard/cli/command.rb +5 -2
- data/lib/yard/cli/command_parser.rb +3 -2
- data/lib/yard/cli/diff.rb +1 -1
- data/lib/yard/cli/i18n.rb +69 -0
- data/lib/yard/cli/list.rb +1 -1
- data/lib/yard/cli/server.rb +30 -7
- data/lib/yard/cli/stats.rb +5 -6
- data/lib/yard/cli/yardoc.rb +95 -45
- data/lib/yard/cli/yri.rb +24 -3
- data/lib/yard/code_objects/base.rb +35 -4
- data/lib/yard/code_objects/extra_file_object.rb +1 -1
- data/lib/yard/code_objects/macro_object.rb +56 -99
- data/lib/yard/code_objects/method_object.rb +44 -6
- data/lib/yard/config.rb +18 -8
- data/lib/yard/core_ext/symbol_hash.rb +1 -1
- data/lib/yard/docstring.rb +45 -85
- data/lib/yard/docstring_parser.rb +269 -0
- data/lib/yard/handlers/base.rb +129 -118
- data/lib/yard/handlers/c/alias_handler.rb +15 -0
- data/lib/yard/handlers/c/attribute_handler.rb +13 -0
- data/lib/yard/handlers/c/base.rb +110 -0
- data/lib/yard/handlers/c/class_handler.rb +26 -0
- data/lib/yard/handlers/c/constant_handler.rb +12 -0
- data/lib/yard/handlers/c/handler_methods.rb +165 -0
- data/lib/yard/handlers/c/init_handler.rb +16 -0
- data/lib/yard/handlers/c/method_handler.rb +35 -0
- data/lib/yard/handlers/c/mixin_handler.rb +13 -0
- data/lib/yard/handlers/c/module_handler.rb +16 -0
- data/lib/yard/handlers/c/override_comment_handler.rb +22 -0
- data/lib/yard/handlers/c/path_handler.rb +10 -0
- data/lib/yard/handlers/c/struct_handler.rb +12 -0
- data/lib/yard/handlers/c/symbol_handler.rb +7 -0
- data/lib/yard/handlers/processor.rb +41 -30
- data/lib/yard/handlers/ruby/alias_handler.rb +0 -2
- data/lib/yard/handlers/ruby/attribute_handler.rb +16 -17
- data/lib/yard/handlers/ruby/base.rb +10 -6
- data/lib/yard/handlers/ruby/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/dsl_handler.rb +14 -0
- data/lib/yard/handlers/ruby/dsl_handler_methods.rb +71 -0
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +0 -3
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +16 -17
- data/lib/yard/handlers/ruby/legacy/base.rb +28 -6
- data/lib/yard/handlers/ruby/legacy/comment_handler.rb +9 -0
- data/lib/yard/handlers/ruby/legacy/dsl_handler.rb +16 -0
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +0 -2
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +1 -1
- data/lib/yard/handlers/ruby/legacy/module_function_handler.rb +18 -0
- data/lib/yard/handlers/ruby/method_handler.rb +10 -15
- data/lib/yard/handlers/ruby/mixin_handler.rb +1 -1
- data/lib/yard/handlers/ruby/module_function_handler.rb +26 -0
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +3 -2
- data/lib/yard/i18n/pot_generator.rb +281 -0
- data/lib/yard/i18n/text.rb +72 -0
- data/lib/yard/logging.rb +3 -7
- data/lib/yard/options.rb +216 -0
- data/lib/yard/parser/c/c_parser.rb +225 -0
- data/lib/yard/parser/c/comment_parser.rb +131 -0
- data/lib/yard/parser/c/statement.rb +63 -0
- data/lib/yard/parser/ruby/ast_node.rb +91 -1
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +1 -0
- data/lib/yard/parser/ruby/legacy/statement.rb +7 -2
- data/lib/yard/parser/ruby/legacy/statement_list.rb +13 -22
- data/lib/yard/parser/ruby/ruby_parser.rb +87 -26
- data/lib/yard/parser/source_parser.rb +89 -88
- data/lib/yard/rake/yardoc_task.rb +1 -1
- data/lib/yard/registry.rb +21 -10
- data/lib/yard/registry_store.rb +48 -0
- data/lib/yard/serializers/file_system_serializer.rb +18 -20
- data/lib/yard/serializers/yardoc_serializer.rb +1 -0
- data/lib/yard/server/adapter.rb +2 -2
- data/lib/yard/server/commands/base.rb +1 -1
- data/lib/yard/server/commands/display_object_command.rb +13 -6
- data/lib/yard/server/commands/frames_command.rb +4 -21
- data/lib/yard/server/commands/library_command.rb +57 -11
- data/lib/yard/server/commands/list_command.rb +10 -34
- data/lib/yard/server/commands/search_command.rb +8 -2
- data/lib/yard/server/doc_server_helper.rb +34 -0
- data/lib/yard/server/rack_adapter.rb +5 -1
- data/lib/yard/server/router.rb +4 -10
- data/lib/yard/server/static_caching.rb +2 -2
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +2 -2
- data/lib/yard/server/templates/default/fulldoc/html/js/live.js +0 -15
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +3 -3
- data/lib/yard/server/templates/default/layout/html/script_setup.erb +8 -0
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +1 -1
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +1 -1
- data/lib/yard/tags/default_factory.rb +31 -4
- data/lib/yard/tags/directives.rb +593 -0
- data/lib/yard/tags/library.rb +437 -35
- data/lib/yard/templates/engine.rb +17 -12
- data/lib/yard/templates/helpers/base_helper.rb +8 -2
- data/lib/yard/templates/helpers/html_helper.rb +57 -14
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +1 -1
- data/lib/yard/templates/helpers/markup_helper.rb +9 -9
- data/lib/yard/templates/helpers/text_helper.rb +2 -2
- data/lib/yard/templates/template.rb +42 -13
- data/lib/yard/templates/template_options.rb +81 -0
- data/spec/cli/command_parser_spec.rb +4 -4
- data/spec/cli/command_spec.rb +3 -3
- data/spec/cli/config_spec.rb +13 -13
- data/spec/cli/diff_spec.rb +13 -10
- data/spec/cli/gems_spec.rb +12 -12
- data/spec/cli/help_spec.rb +2 -2
- data/spec/cli/i18n_spec.rb +111 -0
- data/spec/cli/server_spec.rb +66 -18
- data/spec/cli/stats_spec.rb +15 -15
- data/spec/cli/yardoc_spec.rb +124 -97
- data/spec/cli/yri_spec.rb +14 -12
- data/spec/code_objects/base_spec.rb +104 -46
- data/spec/code_objects/class_object_spec.rb +33 -33
- data/spec/code_objects/code_object_list_spec.rb +5 -5
- data/spec/code_objects/constants_spec.rb +4 -3
- data/spec/code_objects/extra_file_object_spec.rb +19 -19
- data/spec/code_objects/macro_object_spec.rb +31 -37
- data/spec/code_objects/method_object_spec.rb +46 -23
- data/spec/code_objects/module_object_spec.rb +16 -16
- data/spec/code_objects/namespace_object_spec.rb +6 -6
- data/spec/code_objects/proxy_spec.rb +19 -19
- data/spec/config_spec.rb +33 -24
- data/spec/core_ext/array_spec.rb +1 -1
- data/spec/core_ext/file_spec.rb +8 -8
- data/spec/core_ext/hash_spec.rb +1 -1
- data/spec/core_ext/insertion_spec.rb +3 -3
- data/spec/core_ext/module_spec.rb +1 -1
- data/spec/core_ext/string_spec.rb +6 -6
- data/spec/core_ext/symbol_hash_spec.rb +11 -11
- data/spec/docstring_parser_spec.rb +207 -0
- data/spec/docstring_spec.rb +33 -146
- data/spec/handlers/alias_handler_spec.rb +14 -14
- data/spec/handlers/attribute_handler_spec.rb +20 -20
- data/spec/handlers/base_spec.rb +16 -16
- data/spec/handlers/c/alias_handler_spec.rb +33 -0
- data/spec/handlers/c/attribute_handler_spec.rb +40 -0
- data/spec/handlers/c/class_handler_spec.rb +64 -0
- data/spec/handlers/c/constant_handler_spec.rb +68 -0
- data/spec/handlers/c/init_handler_spec.rb +36 -0
- data/spec/handlers/c/method_handler_spec.rb +228 -0
- data/spec/handlers/c/mixin_handler_spec.rb +27 -0
- data/spec/handlers/c/module_handler_spec.rb +38 -0
- data/spec/handlers/c/override_comment_handler_spec.rb +43 -0
- data/spec/handlers/c/path_handler_spec.rb +35 -0
- data/spec/handlers/c/spec_helper.rb +11 -0
- data/spec/handlers/c/struct_handler_spec.rb +15 -0
- data/spec/handlers/class_condition_handler_spec.rb +10 -10
- data/spec/handlers/class_handler_spec.rb +38 -38
- data/spec/handlers/class_variable_handler_spec.rb +1 -1
- data/spec/handlers/constant_handler_spec.rb +7 -7
- data/spec/handlers/{macro_handler_spec.rb → dsl_handler_spec.rb} +72 -53
- data/spec/handlers/examples/alias_handler_001.rb.txt +5 -5
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +9 -9
- data/spec/handlers/examples/class_handler_001.rb.txt +1 -1
- data/spec/handlers/examples/dsl_handler_001.rb.txt +110 -0
- data/spec/handlers/examples/exception_handler_001.rb.txt +14 -14
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +2 -2
- data/spec/handlers/examples/method_handler_001.rb.txt +16 -16
- data/spec/handlers/examples/mixin_handler_001.rb.txt +8 -4
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +1 -1
- data/spec/handlers/examples/visibility_handler_001.rb.txt +3 -3
- data/spec/handlers/examples/yield_handler_001.rb.txt +13 -14
- data/spec/handlers/exception_handler_spec.rb +9 -9
- data/spec/handlers/extend_handler_spec.rb +2 -2
- data/spec/handlers/legacy_base_spec.rb +34 -34
- data/spec/handlers/method_condition_handler_spec.rb +2 -2
- data/spec/handlers/method_handler_spec.rb +33 -33
- data/spec/handlers/mixin_handler_spec.rb +13 -9
- data/spec/handlers/module_function_handler_spec.rb +82 -0
- data/spec/handlers/module_handler_spec.rb +6 -6
- data/spec/handlers/private_constant_handler_spec.rb +3 -3
- data/spec/handlers/processor_spec.rb +5 -5
- data/spec/handlers/ruby/base_spec.rb +10 -6
- data/spec/handlers/ruby/legacy/base_spec.rb +11 -7
- data/spec/handlers/spec_helper.rb +2 -3
- data/spec/handlers/visibility_handler_spec.rb +6 -6
- data/spec/handlers/yield_handler_spec.rb +8 -8
- data/spec/i18n/pot_generator_spec.rb +244 -0
- data/spec/i18n/text_spec.rb +69 -0
- data/spec/options_spec.rb +160 -0
- data/spec/parser/base_spec.rb +3 -3
- data/spec/parser/c_parser_spec.rb +31 -257
- data/spec/parser/examples/array.c.txt +187 -187
- data/spec/parser/examples/extrafile.c.txt +1 -1
- data/spec/parser/examples/override.c.txt +1 -1
- data/spec/parser/ruby/ast_node_spec.rb +1 -1
- data/spec/parser/ruby/legacy/statement_list_spec.rb +24 -24
- data/spec/parser/ruby/legacy/token_list_spec.rb +7 -7
- data/spec/parser/ruby/ruby_parser_spec.rb +56 -34
- data/spec/parser/source_parser_spec.rb +125 -65
- data/spec/parser/tag_parsing_spec.rb +4 -4
- data/spec/rake/yardoc_task_spec.rb +10 -8
- data/spec/registry_spec.rb +65 -36
- data/spec/registry_store_spec.rb +90 -40
- data/spec/serializers/file_system_serializer_spec.rb +12 -12
- data/spec/serializers/yardoc_serializer_spec.rb +2 -2
- data/spec/server/adapter_spec.rb +3 -3
- data/spec/server/commands/base_spec.rb +8 -8
- data/spec/server/commands/library_command_spec.rb +3 -3
- data/spec/server/commands/static_file_command_spec.rb +7 -7
- data/spec/server/doc_server_helper_spec.rb +1 -1
- data/spec/server/doc_server_serializer_spec.rb +6 -6
- data/spec/server/rack_adapter_spec.rb +3 -3
- data/spec/server/router_spec.rb +19 -19
- data/spec/server/static_caching_spec.rb +4 -4
- data/spec/spec_helper.rb +7 -7
- data/spec/tags/default_factory_spec.rb +24 -16
- data/spec/tags/directives_spec.rb +422 -0
- data/spec/tags/library_spec.rb +15 -4
- data/spec/tags/overload_tag_spec.rb +6 -6
- data/spec/tags/ref_tag_list_spec.rb +8 -8
- data/spec/templates/class_spec.rb +7 -7
- data/spec/templates/constant_spec.rb +7 -7
- data/spec/templates/engine_spec.rb +28 -36
- data/spec/templates/examples/class001.html +108 -108
- data/spec/templates/examples/class002.html +17 -17
- data/spec/templates/examples/constant001.txt +1 -1
- data/spec/templates/examples/method001.html +45 -45
- data/spec/templates/examples/method002.html +25 -25
- data/spec/templates/examples/method003.html +60 -60
- data/spec/templates/examples/method004.html +7 -7
- data/spec/templates/examples/method005.html +28 -28
- data/spec/templates/examples/module001.html +321 -321
- data/spec/templates/examples/module001.txt +1 -1
- data/spec/templates/examples/module002.html +130 -130
- data/spec/templates/examples/module003.html +74 -74
- data/spec/templates/examples/module004.html +388 -0
- data/spec/templates/helpers/base_helper_spec.rb +32 -32
- data/spec/templates/helpers/html_helper_spec.rb +87 -68
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +9 -9
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +16 -16
- data/spec/templates/helpers/markup_helper_spec.rb +31 -28
- data/spec/templates/helpers/method_helper_spec.rb +7 -7
- data/spec/templates/helpers/shared_signature_examples.rb +9 -7
- data/spec/templates/helpers/text_helper_spec.rb +3 -3
- data/spec/templates/method_spec.rb +13 -13
- data/spec/templates/module_spec.rb +70 -24
- data/spec/templates/onefile_spec.rb +32 -15
- data/spec/templates/section_spec.rb +23 -23
- data/spec/templates/spec_helper.rb +31 -1
- data/spec/templates/tag_spec.rb +5 -5
- data/spec/templates/template_spec.rb +54 -46
- data/spec/verifier_spec.rb +5 -5
- data/templates/default/class/setup.rb +2 -2
- data/templates/default/docstring/html/abstract.erb +1 -1
- data/templates/default/docstring/html/note.erb +1 -1
- data/templates/default/docstring/html/private.erb +1 -1
- data/templates/default/docstring/html/todo.erb +1 -1
- data/templates/default/docstring/setup.rb +2 -2
- data/templates/default/fulldoc/html/css/full_list.css +4 -2
- data/templates/default/fulldoc/html/css/style.css +50 -44
- data/templates/default/fulldoc/html/frames.erb +21 -6
- data/templates/default/fulldoc/html/full_list.erb +5 -3
- data/templates/default/fulldoc/html/{full_list_files.erb → full_list_file.erb} +0 -0
- data/templates/default/fulldoc/html/js/app.js +29 -26
- data/templates/default/fulldoc/html/js/full_list.js +9 -9
- data/templates/default/fulldoc/html/js/jquery.js +4 -16
- data/templates/default/fulldoc/html/setup.rb +42 -38
- data/templates/default/layout/dot/header.erb +1 -1
- data/templates/default/layout/html/breadcrumb.erb +6 -6
- data/templates/default/layout/html/files.erb +1 -1
- data/templates/default/layout/html/footer.erb +1 -1
- data/templates/default/layout/html/headers.erb +3 -6
- data/templates/default/layout/html/index.erb +1 -1
- data/templates/default/layout/html/layout.erb +3 -7
- data/templates/default/layout/html/objects.erb +1 -1
- data/templates/default/layout/html/script_setup.erb +5 -0
- data/templates/default/layout/html/search.erb +4 -1
- data/templates/default/layout/html/setup.rb +8 -8
- data/templates/default/method_details/html/method_signature.erb +10 -3
- data/templates/default/method_details/setup.rb +1 -0
- data/templates/default/module/dot/info.erb +1 -1
- data/templates/default/module/dot/setup.rb +2 -2
- data/templates/default/module/html/attribute_details.erb +1 -1
- data/templates/default/module/html/children.erb +1 -1
- data/templates/default/module/html/defines.erb +1 -1
- data/templates/default/module/html/inherited_methods.erb +5 -4
- data/templates/default/module/html/item_summary.erb +15 -5
- data/templates/default/module/html/method_details_list.erb +2 -2
- data/templates/default/module/setup.rb +25 -12
- data/templates/default/module/text/setup.rb +1 -1
- data/templates/default/onefile/html/layout.erb +1 -1
- data/templates/default/onefile/html/setup.rb +2 -2
- data/templates/default/tags/html/example.erb +4 -2
- data/templates/default/tags/html/option.erb +1 -1
- data/templates/default/tags/html/overload.erb +1 -1
- data/templates/default/tags/html/see.erb +1 -1
- data/templates/default/tags/html/tag.erb +1 -1
- data/templates/default/tags/setup.rb +4 -3
- data/templates/guide/fulldoc/html/css/style.css +8 -8
- data/templates/guide/fulldoc/html/js/app.js +6 -6
- data/templates/guide/fulldoc/html/setup.rb +12 -12
- data/templates/guide/layout/html/layout.erb +11 -11
- data/templates/guide/layout/html/setup.rb +9 -9
- data/templates/guide/method/html/header.erb +2 -2
- data/templates/guide/method/html/setup.rb +1 -1
- metadata +68 -18
- data/bin/yard-graph +0 -4
- data/bin/yard-server +0 -4
- data/docs/Glossary.md +0 -12
- data/lib/yard/handlers/ruby/legacy/macro_handler.rb +0 -39
- data/lib/yard/handlers/ruby/macro_handler.rb +0 -40
- data/lib/yard/handlers/ruby/macro_handler_methods.rb +0 -131
- data/lib/yard/parser/c_parser.rb +0 -497
- data/lib/yard/server/templates/default/layout/html/headers.erb +0 -16
- data/lib/yard/server/templates/doc_server/frames/html/frames.erb +0 -13
- data/lib/yard/server/templates/doc_server/frames/html/setup.rb +0 -3
- data/lib/yard/server/templates/doc_server/full_list/html/full_list.erb +0 -34
- data/lib/yard/server/templates/doc_server/full_list/html/setup.rb +0 -20
- data/spec/handlers/examples/macro_handler_001.rb.txt +0 -83
@@ -6,13 +6,17 @@ describe YARD::Handlers::Ruby::Legacy::Base, "#handles and inheritance" do
|
|
6
6
|
before do
|
7
7
|
Handlers::Ruby::Legacy::Base.stub!(:inherited)
|
8
8
|
Handlers::Ruby::Legacy::MixinHandler.stub!(:inherited) # fixes a Ruby1.9 issue
|
9
|
-
@processor = Handlers::Processor.new(
|
9
|
+
@processor = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby18))
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
|
+
after(:all) do
|
13
|
+
Handlers::Base.clear_subclasses
|
14
|
+
end
|
15
|
+
|
12
16
|
def stmt(string)
|
13
17
|
Statement.new(TokenList.new(string))
|
14
18
|
end
|
15
|
-
|
19
|
+
|
16
20
|
it "should only handle Handlers inherited from Ruby::Legacy::Base class" do
|
17
21
|
class IgnoredHandler < Handlers::Base
|
18
22
|
handles "hello"
|
@@ -50,7 +54,7 @@ describe YARD::Handlers::Ruby::Legacy::Base, "#handles and inheritance" do
|
|
50
54
|
TestTokenHandler.handles?(stmt("module")).should be_true
|
51
55
|
TestTokenHandler.handles?(stmt("if")).should be_false
|
52
56
|
end
|
53
|
-
|
57
|
+
|
54
58
|
it "should parse a do/end or { } block with #parse_block" do
|
55
59
|
class MyBlockHandler < Handlers::Ruby::Legacy::Base
|
56
60
|
handles /\AmyMethod\b/
|
@@ -58,14 +62,14 @@ describe YARD::Handlers::Ruby::Legacy::Base, "#handles and inheritance" do
|
|
58
62
|
parse_block(:owner => "test")
|
59
63
|
end
|
60
64
|
end
|
61
|
-
|
65
|
+
|
62
66
|
class MyBlockInnerHandler < Handlers::Ruby::Legacy::Base
|
63
67
|
handles "inner"
|
64
68
|
def self.reset; @@reached = false end
|
65
69
|
def self.reached?; @@reached ||= false end
|
66
70
|
def process; @@reached = true end
|
67
71
|
end
|
68
|
-
|
72
|
+
|
69
73
|
Handlers::Base.stub!(:subclasses).and_return [MyBlockHandler, MyBlockInnerHandler]
|
70
74
|
Parser::SourceParser.parser_type = :ruby18
|
71
75
|
Parser::SourceParser.parse_string "myMethod do inner end"
|
@@ -75,4 +79,4 @@ describe YARD::Handlers::Ruby::Legacy::Base, "#handles and inheritance" do
|
|
75
79
|
MyBlockInnerHandler.should be_reached
|
76
80
|
Parser::SourceParser.parser_type = :ruby
|
77
81
|
end
|
78
|
-
end
|
82
|
+
end
|
@@ -17,7 +17,7 @@ end
|
|
17
17
|
class StubbedProcessor < Processor
|
18
18
|
def process(statements)
|
19
19
|
statements.each_with_index do |stmt, index|
|
20
|
-
find_handlers(stmt).each do |handler|
|
20
|
+
find_handlers(stmt).each do |handler|
|
21
21
|
handler.new(self, stmt).process
|
22
22
|
end
|
23
23
|
end
|
@@ -27,8 +27,7 @@ end
|
|
27
27
|
class StubbedSourceParser < Parser::SourceParser
|
28
28
|
StubbedSourceParser.parser_type = :ruby
|
29
29
|
def post_process
|
30
|
-
post = StubbedProcessor.new(
|
30
|
+
post = StubbedProcessor.new(self)
|
31
31
|
post.process(@parser.enumerator)
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
@@ -2,32 +2,32 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
|
3
3
|
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}VisibilityHandler" do
|
4
4
|
before(:all) { parse_file :visibility_handler_001, __FILE__ }
|
5
|
-
|
5
|
+
|
6
6
|
it "should be able to set visibility to public" do
|
7
7
|
Registry.at("Testing#pub").visibility.should == :public
|
8
8
|
Registry.at("Testing#pub2").visibility.should == :public
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
it "should be able to set visibility to private" do
|
12
12
|
Registry.at("Testing#priv").visibility.should == :private
|
13
13
|
end
|
14
|
-
|
14
|
+
|
15
15
|
it "should be able to set visibility to protected" do
|
16
16
|
Registry.at("Testing#prot").visibility.should == :protected
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
it "should support parameters and only set visibility on those methods" do
|
20
20
|
Registry['Testing#notpriv'].visibility.should == :protected
|
21
21
|
Registry['Testing#notpriv2'].visibility.should == :protected
|
22
22
|
Registry['Testing#notpriv?'].visibility.should == :protected
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
it "should only accept strings and symbols" do
|
26
26
|
Registry.at('Testing#name').should be_nil
|
27
27
|
Registry.at('Testing#argument').should be_nil
|
28
28
|
Registry.at('Testing#method_call').should be_nil
|
29
29
|
end
|
30
|
-
|
30
|
+
|
31
31
|
it "should handle constants passed in as symbols" do
|
32
32
|
Registry.at('Testing#Foo').visibility.should == :private
|
33
33
|
end
|
@@ -2,17 +2,17 @@ require File.dirname(__FILE__) + '/spec_helper'
|
|
2
2
|
|
3
3
|
describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}YieldHandler" do
|
4
4
|
before(:all) { parse_file :yield_handler_001, __FILE__ }
|
5
|
-
|
5
|
+
|
6
6
|
it "should only parse yield blocks in methods" do
|
7
7
|
P(:Testing).tag(:yield).should be_nil
|
8
8
|
P(:Testing).tag(:yieldparam).should be_nil
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
it "should handle an empty yield statement" do
|
12
12
|
P('Testing#mymethod').tag(:yield).should be_nil
|
13
13
|
P('Testing#mymethod').tag(:yieldparam).should be_nil
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
it "should not document a yield statement in a method with either @yield or @yieldparam" do
|
17
17
|
P('Testing#mymethod2').tag(:yield).types.should == ['a', 'b']
|
18
18
|
P('Testing#mymethod2').tag(:yield).text.should == "Blah"
|
@@ -24,25 +24,25 @@ describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}YieldHandler"
|
|
24
24
|
P('Testing#mymethod4').tag(:yieldparam).name.should == '_self'
|
25
25
|
P('Testing#mymethod4').tag(:yieldparam).text.should == 'BLAH'
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
it "should handle any arbitrary yield statement" do
|
29
29
|
P('Testing#mymethod5').tag(:yield).types.should == [':a', 'b', '_self', 'File.read(\'file\', \'w\')', 'CONSTANT']
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
it "should handle parentheses" do
|
33
33
|
P('Testing#mymethod6').tag(:yield).types.should == ['b', 'a']
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
it "should only document the first yield statement in a method (limitation of yield handler)" do
|
37
37
|
P('Testing#mymethod7').tag(:yield).types.should == ['a']
|
38
38
|
end
|
39
|
-
|
39
|
+
|
40
40
|
it "should handle `self` keyword and list object type as yieldparam for _self" do
|
41
41
|
P('Testing#mymethod8').tag(:yield).types.should == ['_self']
|
42
42
|
P('Testing#mymethod8').tag(:yieldparam).types.should == ['Testing']
|
43
43
|
P('Testing#mymethod8').tag(:yieldparam).text.should == "the object that the method was called on"
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
it "should handle `super` keyword and document it under _super" do
|
47
47
|
P('Testing#mymethod9').tag(:yield).types.should == ['_super']
|
48
48
|
P('Testing#mymethod9').tag(:yieldparam).types.should be_nil
|
@@ -0,0 +1,244 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
|
3
|
+
describe YARD::I18n::PotGenerator do
|
4
|
+
before do
|
5
|
+
@generator = YARD::I18n::PotGenerator.new("..")
|
6
|
+
end
|
7
|
+
|
8
|
+
describe "Generate" do
|
9
|
+
it "should generate the default header" do
|
10
|
+
@generator.generate.should == <<-'eoh'
|
11
|
+
# SOME DESCRIPTIVE TITLE.
|
12
|
+
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
13
|
+
# This file is distributed under the same license as the PACKAGE package.
|
14
|
+
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
15
|
+
#
|
16
|
+
#, fuzzy
|
17
|
+
msgid ""
|
18
|
+
msgstr ""
|
19
|
+
"Project-Id-Version: PACKAGE VERSION\n"
|
20
|
+
"Report-Msgid-Bugs-To: \n"
|
21
|
+
"POT-Creation-Date: 2011-11-20 22:17+0900\n"
|
22
|
+
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
23
|
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
24
|
+
"Language-Team: LANGUAGE <LL@li.org>\n"
|
25
|
+
"Language: \n"
|
26
|
+
"MIME-Version: 1.0\n"
|
27
|
+
"Content-Type: text/plain; charset=UTF-8\n"
|
28
|
+
"Content-Transfer-Encoding: 8bit\n"
|
29
|
+
|
30
|
+
eoh
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should generate messages in location order" do
|
34
|
+
@generator.stub!(:header).and_return("HEADER\n\n")
|
35
|
+
@generator.messages["tag|see|Parser::SourceParser.parse"] = {
|
36
|
+
:locations => [["yard.rb", 14]],
|
37
|
+
:comments => ["@see"],
|
38
|
+
}
|
39
|
+
@generator.messages["Parses a path or set of paths"] = {
|
40
|
+
:locations => [["yard.rb", 12], ["yard/parser/source_parser.rb", 83]],
|
41
|
+
:comments => ["YARD.parse", "YARD::Parser::SourceParser.parse"],
|
42
|
+
}
|
43
|
+
@generator.generate.should == <<-'eoh'
|
44
|
+
HEADER
|
45
|
+
|
46
|
+
# YARD.parse
|
47
|
+
# YARD::Parser::SourceParser.parse
|
48
|
+
#: ../yard.rb:12
|
49
|
+
#: ../yard/parser/source_parser.rb:83
|
50
|
+
msgid "Parses a path or set of paths"
|
51
|
+
msgstr ""
|
52
|
+
|
53
|
+
# @see
|
54
|
+
#: ../yard.rb:14
|
55
|
+
msgid "tag|see|Parser::SourceParser.parse"
|
56
|
+
msgstr ""
|
57
|
+
|
58
|
+
eoh
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "Escape" do
|
63
|
+
def generate_message_pot(message)
|
64
|
+
pot = ""
|
65
|
+
options = {
|
66
|
+
:comments => [],
|
67
|
+
:locations => [],
|
68
|
+
}
|
69
|
+
@generator.send(:generate_message, pot, message, options)
|
70
|
+
pot
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should escape <\\>" do
|
74
|
+
generate_message_pot("hello \\ world").should == <<-'eop'
|
75
|
+
msgid "hello \\ world"
|
76
|
+
msgstr ""
|
77
|
+
|
78
|
+
eop
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should escape <\">" do
|
82
|
+
generate_message_pot("hello \" world").should == <<-'eop'
|
83
|
+
msgid "hello \" world"
|
84
|
+
msgstr ""
|
85
|
+
|
86
|
+
eop
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should escape <\\n>" do
|
90
|
+
generate_message_pot("hello \n world").should == <<-'eop'
|
91
|
+
msgid "hello \n"
|
92
|
+
" world"
|
93
|
+
msgstr ""
|
94
|
+
|
95
|
+
eop
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
describe "Object" do
|
100
|
+
before do
|
101
|
+
Registry.clear
|
102
|
+
@yard = YARD::CodeObjects::ModuleObject.new(:root, :YARD)
|
103
|
+
end
|
104
|
+
|
105
|
+
it "should extract docstring" do
|
106
|
+
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
107
|
+
o.docstring = "An alias to {Parser::SourceParser}'s parsing method"
|
108
|
+
end
|
109
|
+
@generator.parse_objects([object])
|
110
|
+
@generator.messages.should == {
|
111
|
+
"An alias to {Parser::SourceParser}'s parsing method" => {
|
112
|
+
:locations => [],
|
113
|
+
:comments => ["YARD.parse"],
|
114
|
+
}
|
115
|
+
}
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should extract location" do
|
119
|
+
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
120
|
+
o.docstring = "An alias to {Parser::SourceParser}'s parsing method"
|
121
|
+
o.files = [["yard.rb", 12]]
|
122
|
+
end
|
123
|
+
@generator.parse_objects([object])
|
124
|
+
@generator.messages.should == {
|
125
|
+
"An alias to {Parser::SourceParser}'s parsing method" => {
|
126
|
+
:locations => [["yard.rb", 13]],
|
127
|
+
:comments => ["YARD.parse"],
|
128
|
+
}
|
129
|
+
}
|
130
|
+
end
|
131
|
+
|
132
|
+
it "should extract tag name" do
|
133
|
+
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
134
|
+
o.docstring = "@see Parser::SourceParser.parse"
|
135
|
+
o.files = [["yard.rb", 12]]
|
136
|
+
end
|
137
|
+
@generator.parse_objects([object])
|
138
|
+
@generator.messages.should == {
|
139
|
+
"tag|see|Parser::SourceParser.parse" => {
|
140
|
+
:locations => [["yard.rb", 12]],
|
141
|
+
:comments => ["@see"],
|
142
|
+
},
|
143
|
+
}
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should extract tag text" do
|
147
|
+
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
148
|
+
o.docstring = <<-eod
|
149
|
+
@example Parse a glob of files
|
150
|
+
YARD.parse('lib/**/*.rb')
|
151
|
+
eod
|
152
|
+
o.files = [["yard.rb", 12]]
|
153
|
+
end
|
154
|
+
@generator.parse_objects([object])
|
155
|
+
@generator.messages.should == {
|
156
|
+
"tag|example|Parse a glob of files" => {
|
157
|
+
:locations => [["yard.rb", 12]],
|
158
|
+
:comments => ["@example"],
|
159
|
+
},
|
160
|
+
"YARD.parse('lib/**/*.rb')" => {
|
161
|
+
:locations => [["yard.rb", 12]],
|
162
|
+
:comments => ["@example Parse a glob of files"],
|
163
|
+
}
|
164
|
+
}
|
165
|
+
end
|
166
|
+
|
167
|
+
it "should extract tag types" do
|
168
|
+
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
169
|
+
o.docstring = <<-eod
|
170
|
+
@param [String, Array<String>] paths a path, glob, or list of paths to
|
171
|
+
parse
|
172
|
+
eod
|
173
|
+
o.files = [["yard.rb", 12]]
|
174
|
+
end
|
175
|
+
@generator.parse_objects([object])
|
176
|
+
@generator.messages.should == {
|
177
|
+
"tag|param|paths" => {
|
178
|
+
:locations => [["yard.rb", 12]],
|
179
|
+
:comments => ["@param [String, Array<String>]"],
|
180
|
+
},
|
181
|
+
"a path, glob, or list of paths to\nparse" => {
|
182
|
+
:locations => [["yard.rb", 12]],
|
183
|
+
:comments => ["@param [String, Array<String>] paths"],
|
184
|
+
}
|
185
|
+
}
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
describe "File" do
|
190
|
+
it "should extract attribute" do
|
191
|
+
path = "GettingStarted.md"
|
192
|
+
text = <<-eor
|
193
|
+
# @title Getting Started Guide
|
194
|
+
|
195
|
+
# Getting Started with YARD
|
196
|
+
eor
|
197
|
+
File.stub!(:open).with(path).and_yield(StringIO.new(text))
|
198
|
+
File.stub!(:read).with(path).and_return(text)
|
199
|
+
file = YARD::CodeObjects::ExtraFileObject.new(path)
|
200
|
+
@generator.parse_files([file])
|
201
|
+
@generator.messages.should == {
|
202
|
+
"Getting Started Guide" => {
|
203
|
+
:locations => [[path, 1]],
|
204
|
+
:comments => ["title"],
|
205
|
+
},
|
206
|
+
"# Getting Started with YARD" => {
|
207
|
+
:locations => [[path, 3]],
|
208
|
+
:comments => [],
|
209
|
+
}
|
210
|
+
}
|
211
|
+
end
|
212
|
+
|
213
|
+
it "should extract paragraphs" do
|
214
|
+
path = "README.md"
|
215
|
+
paragraph1 = <<-eop.strip
|
216
|
+
Note that class methods must not be referred to with the "::" namespace
|
217
|
+
separator. Only modules, classes and constants should use "::".
|
218
|
+
eop
|
219
|
+
paragraph2 = <<-eop.strip
|
220
|
+
You can also do lookups on any installed gems. Just make sure to build the
|
221
|
+
.yardoc databases for installed gems with:
|
222
|
+
eop
|
223
|
+
text = <<-eot
|
224
|
+
#{paragraph1}
|
225
|
+
|
226
|
+
#{paragraph2}
|
227
|
+
eot
|
228
|
+
File.stub!(:open).with(path).and_yield(StringIO.new(text))
|
229
|
+
File.stub!(:read).with(path).and_return(text)
|
230
|
+
file = YARD::CodeObjects::ExtraFileObject.new(path)
|
231
|
+
@generator.parse_files([file])
|
232
|
+
@generator.messages.should == {
|
233
|
+
paragraph1 => {
|
234
|
+
:locations => [[path, 1]],
|
235
|
+
:comments => [],
|
236
|
+
},
|
237
|
+
paragraph2 => {
|
238
|
+
:locations => [[path, 4]],
|
239
|
+
:comments => [],
|
240
|
+
}
|
241
|
+
}
|
242
|
+
end
|
243
|
+
end
|
244
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
describe YARD::I18n::Text do
|
2
|
+
def extract_messages(input, options={})
|
3
|
+
text = YARD::I18n::Text.new(StringIO.new(input), options)
|
4
|
+
messages = []
|
5
|
+
text.extract_messages do |*message|
|
6
|
+
messages << message
|
7
|
+
end
|
8
|
+
messages
|
9
|
+
end
|
10
|
+
|
11
|
+
describe "Header" do
|
12
|
+
it "should extract attribute" do
|
13
|
+
text = <<-eot
|
14
|
+
# @title Getting Started Guide
|
15
|
+
|
16
|
+
# Getting Started with YARD
|
17
|
+
eot
|
18
|
+
extract_messages(text, :have_header => true).should ==
|
19
|
+
[[:attribute, "title", "Getting Started Guide", 1],
|
20
|
+
[:paragraph, "# Getting Started with YARD", 3]]
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should ignore markup line" do
|
24
|
+
text = <<-eot
|
25
|
+
#!markdown
|
26
|
+
# @title Getting Started Guide
|
27
|
+
|
28
|
+
# Getting Started with YARD
|
29
|
+
eot
|
30
|
+
extract_messages(text, :have_header => true).should ==
|
31
|
+
[[:attribute, "title", "Getting Started Guide", 2],
|
32
|
+
[:paragraph, "# Getting Started with YARD", 4]]
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should terminate header block by markup line not at the first line" do
|
36
|
+
text = <<-eot
|
37
|
+
# @title Getting Started Guide
|
38
|
+
#!markdown
|
39
|
+
|
40
|
+
# Getting Started with YARD
|
41
|
+
eot
|
42
|
+
extract_messages(text, :have_header => true).should ==
|
43
|
+
[[:attribute, "title", "Getting Started Guide", 1],
|
44
|
+
[:paragraph, "#!markdown", 2],
|
45
|
+
[:paragraph, "# Getting Started with YARD", 4]]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "Body" do
|
50
|
+
it "should split to paragraphs" do
|
51
|
+
paragraph1 = <<-eop.strip
|
52
|
+
Note that class methods must not be referred to with the "::" namespace
|
53
|
+
separator. Only modules, classes and constants should use "::".
|
54
|
+
eop
|
55
|
+
paragraph2 = <<-eop.strip
|
56
|
+
You can also do lookups on any installed gems. Just make sure to build the
|
57
|
+
.yardoc databases for installed gems with:
|
58
|
+
eop
|
59
|
+
text = <<-eot
|
60
|
+
#{paragraph1}
|
61
|
+
|
62
|
+
#{paragraph2}
|
63
|
+
eot
|
64
|
+
extract_messages(text).should ==
|
65
|
+
[[:paragraph, paragraph1, 1],
|
66
|
+
[:paragraph, paragraph2, 4]]
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|