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
@@ -10,10 +10,10 @@ shared_examples_for "parser type registration" do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
describe YARD::Parser::SourceParser do
|
13
|
-
before do
|
13
|
+
before do
|
14
14
|
Registry.clear
|
15
15
|
end
|
16
|
-
|
16
|
+
|
17
17
|
def parse_list(*list)
|
18
18
|
files = list.map do |v|
|
19
19
|
filename, source = *v
|
@@ -38,7 +38,7 @@ describe YARD::Parser::SourceParser do
|
|
38
38
|
def after_file(&block)
|
39
39
|
Parser::SourceParser.after_parse_file(&block)
|
40
40
|
end
|
41
|
-
|
41
|
+
|
42
42
|
describe '.before_parse_list' do
|
43
43
|
before do
|
44
44
|
Parser::SourceParser.before_parse_list_callbacks.clear
|
@@ -53,16 +53,16 @@ describe YARD::Parser::SourceParser do
|
|
53
53
|
parse_list ['foo.rb', 'foo!'], ['bar.rb', 'class Foo; end']
|
54
54
|
Registry.at('Foo').should_not be_nil
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
it "should support multiple callbacks" do
|
58
58
|
checks = []
|
59
59
|
before_list { checks << :one }
|
60
60
|
before_list { checks << :two }
|
61
61
|
parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
|
62
|
-
Registry.at('Foo').should_not be_nil
|
62
|
+
Registry.at('Foo').should_not be_nil
|
63
63
|
checks.should == [:one, :two]
|
64
64
|
end
|
65
|
-
|
65
|
+
|
66
66
|
it "should cancel parsing if it returns false" do
|
67
67
|
checks = []
|
68
68
|
before_list { checks << :one }
|
@@ -72,7 +72,7 @@ describe YARD::Parser::SourceParser do
|
|
72
72
|
Registry.at('Foo').should be_nil
|
73
73
|
checks.should == [:one]
|
74
74
|
end
|
75
|
-
|
75
|
+
|
76
76
|
it "should not cancel on nil" do
|
77
77
|
checks = []
|
78
78
|
before_list { checks << :one }
|
@@ -82,7 +82,7 @@ describe YARD::Parser::SourceParser do
|
|
82
82
|
Registry.at('Foo').should_not be_nil
|
83
83
|
checks.should == [:one, :two]
|
84
84
|
end
|
85
|
-
|
85
|
+
|
86
86
|
it "should pass in globals" do
|
87
87
|
before_list {|f,g| g.x = 1 }
|
88
88
|
before_list {|f,g| g.x += 1 }
|
@@ -108,16 +108,16 @@ describe YARD::Parser::SourceParser do
|
|
108
108
|
parse_list ['foo.rb', 'foo!'], ['bar.rb', 'class Foo; end']
|
109
109
|
Registry.at('Foo').should_not be_nil
|
110
110
|
end
|
111
|
-
|
111
|
+
|
112
112
|
it "should support multiple callbacks" do
|
113
113
|
checks = []
|
114
114
|
after_list { checks << :one }
|
115
115
|
after_list { checks << :two }
|
116
116
|
parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
|
117
|
-
Registry.at('Foo').should_not be_nil
|
117
|
+
Registry.at('Foo').should_not be_nil
|
118
118
|
checks.should == [:one, :two]
|
119
119
|
end
|
120
|
-
|
120
|
+
|
121
121
|
it "should not cancel parsing if it returns false" do
|
122
122
|
checks = []
|
123
123
|
after_list { checks << :one }
|
@@ -143,16 +143,16 @@ describe YARD::Parser::SourceParser do
|
|
143
143
|
parse_list ['foo.rb', 'class Foo; end'], ['bar.rb', 'class Foo; end']
|
144
144
|
Registry.at('Foo').should_not be_nil
|
145
145
|
end
|
146
|
-
|
146
|
+
|
147
147
|
it "should support multiple callbacks" do
|
148
148
|
checks = []
|
149
149
|
before_file { checks << :one }
|
150
150
|
before_file { checks << :two }
|
151
151
|
parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
|
152
|
-
Registry.at('Foo').should_not be_nil
|
152
|
+
Registry.at('Foo').should_not be_nil
|
153
153
|
checks.should == [:one, :two, :one, :two, :one, :two]
|
154
154
|
end
|
155
|
-
|
155
|
+
|
156
156
|
it "should cancel parsing if it returns false" do
|
157
157
|
checks = []
|
158
158
|
before_file { checks << :one }
|
@@ -162,7 +162,7 @@ describe YARD::Parser::SourceParser do
|
|
162
162
|
Registry.at('Foo').should be_nil
|
163
163
|
checks.should == [:one, :one, :one]
|
164
164
|
end
|
165
|
-
|
165
|
+
|
166
166
|
it "should not cancel on nil" do
|
167
167
|
checks = []
|
168
168
|
before_file { checks << :one }
|
@@ -173,7 +173,7 @@ describe YARD::Parser::SourceParser do
|
|
173
173
|
checks.should == [:one, :two, :one, :two, :one, :two]
|
174
174
|
end
|
175
175
|
end
|
176
|
-
|
176
|
+
|
177
177
|
describe '.after_parse_file' do
|
178
178
|
before do
|
179
179
|
Parser::SourceParser.before_parse_file_callbacks.clear
|
@@ -188,16 +188,16 @@ describe YARD::Parser::SourceParser do
|
|
188
188
|
parse_list ['foo.rb', 'class Foo; end'], ['bar.rb', 'class Foo; end']
|
189
189
|
Registry.at('Foo').should_not be_nil
|
190
190
|
end
|
191
|
-
|
191
|
+
|
192
192
|
it "should support multiple callbacks" do
|
193
193
|
checks = []
|
194
194
|
after_file { checks << :one }
|
195
195
|
after_file { checks << :two }
|
196
196
|
parse_list ['file.rb', ''], ['file2.rb', ''], ['file3.rb', 'class Foo; end']
|
197
|
-
Registry.at('Foo').should_not be_nil
|
197
|
+
Registry.at('Foo').should_not be_nil
|
198
198
|
checks.should == [:one, :two, :one, :two, :one, :two]
|
199
199
|
end
|
200
|
-
|
200
|
+
|
201
201
|
it "should not cancel parsing if it returns false" do
|
202
202
|
checks = []
|
203
203
|
after_file { checks << :one }
|
@@ -208,10 +208,10 @@ describe YARD::Parser::SourceParser do
|
|
208
208
|
checks.should == [:one, :three, :one, :three, :one, :three]
|
209
209
|
end
|
210
210
|
end
|
211
|
-
|
211
|
+
|
212
212
|
describe '.register_parser_type' do
|
213
213
|
it_should_behave_like "parser type registration"
|
214
|
-
|
214
|
+
|
215
215
|
it "should register a subclass of Parser::Base" do
|
216
216
|
parser = mock(:parser)
|
217
217
|
parser.should_receive(:parse)
|
@@ -219,14 +219,14 @@ describe YARD::Parser::SourceParser do
|
|
219
219
|
Parser::SourceParser.register_parser_type(:my_parser, MyParser, 'myparser')
|
220
220
|
Parser::SourceParser.parse_string('content', :my_parser)
|
221
221
|
end
|
222
|
-
|
222
|
+
|
223
223
|
it "should require class to be a subclass of Parser::Base" do
|
224
224
|
lambda { Parser::SourceParser.register_parser_type(:my_parser, String) }.should raise_error(ArgumentError)
|
225
225
|
lambda { Parser::SourceParser.register_parser_type(:my_parser, Parser::Base) }.should raise_error(ArgumentError)
|
226
226
|
end
|
227
227
|
end
|
228
|
-
|
229
|
-
describe '.parser_type_for_extension' do
|
228
|
+
|
229
|
+
describe '.parser_type_for_extension' do
|
230
230
|
it_should_behave_like "parser type registration"
|
231
231
|
|
232
232
|
it "should find an extension in a registered array of extensions" do
|
@@ -236,26 +236,26 @@ describe YARD::Parser::SourceParser do
|
|
236
236
|
Parser::SourceParser.parser_type_for_extension('d').should == :my_parser
|
237
237
|
Parser::SourceParser.parser_type_for_extension('c').should_not == :my_parser
|
238
238
|
end
|
239
|
-
|
239
|
+
|
240
240
|
it "should find an extension in a Regexp" do
|
241
241
|
Parser::SourceParser.register_parser_type(:my_parser, MyParser, /abc$/)
|
242
242
|
Parser::SourceParser.parser_type_for_extension('dabc').should == :my_parser
|
243
243
|
Parser::SourceParser.parser_type_for_extension('dabcd').should_not == :my_parser
|
244
244
|
end
|
245
|
-
|
245
|
+
|
246
246
|
it "should find an extension in a list of Regexps" do
|
247
247
|
Parser::SourceParser.register_parser_type(:my_parser, MyParser, [/ab$/, /abc$/])
|
248
248
|
Parser::SourceParser.parser_type_for_extension('dabc').should == :my_parser
|
249
249
|
Parser::SourceParser.parser_type_for_extension('dabcd').should_not == :my_parser
|
250
250
|
end
|
251
|
-
|
251
|
+
|
252
252
|
it "should find an extension in a String" do
|
253
253
|
Parser::SourceParser.register_parser_type(:my_parser, MyParser, "abc")
|
254
254
|
Parser::SourceParser.parser_type_for_extension('abc').should == :my_parser
|
255
255
|
Parser::SourceParser.parser_type_for_extension('abcd').should_not == :my_parser
|
256
256
|
end
|
257
257
|
end
|
258
|
-
|
258
|
+
|
259
259
|
describe '#parse_string' do
|
260
260
|
it "should parse basic Ruby code" do
|
261
261
|
YARD.parse_string(<<-eof)
|
@@ -272,7 +272,7 @@ describe YARD::Parser::SourceParser do
|
|
272
272
|
Registry.at("Hello::Hi#me").docstring.should == "Docstring\nDocstring2"
|
273
273
|
Registry.at("Hello::Hi#me").docstring.line_range.should == (3..4)
|
274
274
|
end
|
275
|
-
|
275
|
+
|
276
276
|
it "should parse Ruby code with metaclasses" do
|
277
277
|
YARD.parse_string(<<-eof)
|
278
278
|
module Hello
|
@@ -288,18 +288,18 @@ describe YARD::Parser::SourceParser do
|
|
288
288
|
Registry.at("Hello::Hi.me").should_not == nil
|
289
289
|
Registry.at("Hello::Hi.me").docstring.should == "Docstring"
|
290
290
|
end
|
291
|
-
|
291
|
+
|
292
292
|
it "should only use prepended comments for an object" do
|
293
293
|
YARD.parse_string(<<-eof)
|
294
294
|
# Test
|
295
|
-
|
295
|
+
|
296
296
|
# PASS
|
297
297
|
module Hello
|
298
298
|
end # FAIL
|
299
299
|
eof
|
300
300
|
Registry.at(:Hello).docstring.should == "PASS"
|
301
301
|
end
|
302
|
-
|
302
|
+
|
303
303
|
it "should not add comments appended to last line of block" do
|
304
304
|
YARD.parse_string <<-eof
|
305
305
|
module Hello2
|
@@ -307,7 +307,7 @@ describe YARD::Parser::SourceParser do
|
|
307
307
|
eof
|
308
308
|
Registry.at(:Hello2).docstring.should be_blank
|
309
309
|
end
|
310
|
-
|
310
|
+
|
311
311
|
it "should add comments appended to an object's first line" do
|
312
312
|
YARD.parse_string <<-eof
|
313
313
|
module Hello # PASS
|
@@ -324,7 +324,7 @@ describe YARD::Parser::SourceParser do
|
|
324
324
|
Registry.at(:Hello2).docstring.should == "PASS"
|
325
325
|
Registry.at('Hello2#x').docstring.should == "ANOTHER PASS"
|
326
326
|
end
|
327
|
-
|
327
|
+
|
328
328
|
it "should take preceeding comments only if they exist" do
|
329
329
|
YARD.parse_string <<-eof
|
330
330
|
# PASS
|
@@ -335,7 +335,7 @@ describe YARD::Parser::SourceParser do
|
|
335
335
|
|
336
336
|
Registry.at(:Hello).docstring.should == "PASS"
|
337
337
|
end
|
338
|
-
|
338
|
+
|
339
339
|
it "should strip all hashes prefixed on comment line" do
|
340
340
|
YARD.parse_string(<<-eof)
|
341
341
|
### PASS
|
@@ -346,7 +346,7 @@ describe YARD::Parser::SourceParser do
|
|
346
346
|
eof
|
347
347
|
Registry.at(:Hello).docstring.should == "PASS\nPASS\nPASS"
|
348
348
|
end
|
349
|
-
|
349
|
+
|
350
350
|
it "should handle =begin/=end style comments" do
|
351
351
|
YARD.parse_string "=begin\nfoo\nbar\n=end\nclass Foo; end\n"
|
352
352
|
Registry.at(:Foo).docstring.should == "foo\nbar"
|
@@ -357,39 +357,97 @@ describe YARD::Parser::SourceParser do
|
|
357
357
|
YARD.parse_string "=begin\nfoo\n\nbar\n=end\nclass Foo; end\n"
|
358
358
|
Registry.at(:Foo).docstring.should == "foo\n\nbar"
|
359
359
|
end
|
360
|
-
|
360
|
+
|
361
361
|
it "should know about docstrings starting with ##" do
|
362
362
|
{'#' => false, '##' => true}.each do |hash, expected|
|
363
363
|
YARD.parse_string "#{hash}\n# Foo bar\nclass Foo; end"
|
364
364
|
Registry.at(:Foo).docstring.hash_flag.should == expected
|
365
365
|
end
|
366
366
|
end
|
367
|
-
|
367
|
+
|
368
368
|
it "should remove shebang from initial file comments" do
|
369
369
|
YARD.parse_string "#!/bin/ruby\n# this is a comment\nclass Foo; end"
|
370
370
|
Registry.at(:Foo).docstring.should == "this is a comment"
|
371
371
|
end
|
372
|
-
|
372
|
+
|
373
373
|
it "should remove encoding line from initial file comments" do
|
374
374
|
YARD.parse_string "# encoding: utf-8\n# this is a comment\nclass Foo; end"
|
375
375
|
Registry.at(:Foo).docstring.should == "this is a comment"
|
376
376
|
end
|
377
|
-
|
377
|
+
|
378
378
|
it "should add macros on any object" do
|
379
379
|
YARD.parse_string <<-eof
|
380
|
-
#
|
381
|
-
#
|
382
|
-
#
|
380
|
+
# @!macro [new] foo
|
381
|
+
# This is a macro
|
382
|
+
# @return [String] the string
|
383
383
|
class Foo
|
384
|
-
#
|
384
|
+
# @!macro foo
|
385
385
|
def foo; end
|
386
386
|
end
|
387
387
|
eof
|
388
|
-
|
388
|
+
|
389
389
|
macro = CodeObjects::MacroObject.find('foo')
|
390
390
|
macro.macro_data.should == "This is a macro\n@return [String] the string"
|
391
|
-
Registry.at('Foo').docstring.
|
392
|
-
Registry.at('Foo#foo').docstring.
|
391
|
+
Registry.at('Foo').docstring.to_raw.should == macro.macro_data
|
392
|
+
Registry.at('Foo#foo').docstring.to_raw.should == macro.macro_data
|
393
|
+
end
|
394
|
+
|
395
|
+
it "should allow directives parsed on lone comments" do
|
396
|
+
YARD.parse_string(<<-eof)
|
397
|
+
class Foo
|
398
|
+
# @!method foo(a = "hello")
|
399
|
+
# @!scope class
|
400
|
+
# @!visibility private
|
401
|
+
# @param [String] a the name of the foo
|
402
|
+
# @return [Symbol] the symbolized foo
|
403
|
+
|
404
|
+
# @!method bar(value)
|
405
|
+
end
|
406
|
+
eof
|
407
|
+
foo = Registry.at('Foo.foo')
|
408
|
+
bar = Registry.at('Foo#bar')
|
409
|
+
foo.should_not be_nil
|
410
|
+
foo.visibility.should == :private
|
411
|
+
foo.tag(:param).name.should == 'a'
|
412
|
+
foo.tag(:return).types.should == ['Symbol']
|
413
|
+
bar.should_not be_nil
|
414
|
+
bar.signature.should == 'def bar(value)'
|
415
|
+
end
|
416
|
+
|
417
|
+
it "should parse lone comments at end of blocks" do
|
418
|
+
YARD.parse_string(<<-eof)
|
419
|
+
class Foo
|
420
|
+
none
|
421
|
+
|
422
|
+
# @!method foo(a = "hello")
|
423
|
+
end
|
424
|
+
eof
|
425
|
+
foo = Registry.at('Foo#foo')
|
426
|
+
foo.should_not be_nil
|
427
|
+
foo.signature.should == 'def foo(a = "hello")'
|
428
|
+
end
|
429
|
+
|
430
|
+
it "should handle lone comment with no code" do
|
431
|
+
YARD.parse_string '# @!method foo(a = "hello")'
|
432
|
+
foo = Registry.at('#foo')
|
433
|
+
foo.should_not be_nil
|
434
|
+
foo.signature.should == 'def foo(a = "hello")'
|
435
|
+
end
|
436
|
+
|
437
|
+
it "should handle non-ASCII encoding in heredoc" do
|
438
|
+
YARD.parse_string <<-eof
|
439
|
+
# encoding: utf-8
|
440
|
+
|
441
|
+
heredoc <<-ending
|
442
|
+
foo\u{ffe2} bar.
|
443
|
+
ending
|
444
|
+
|
445
|
+
# Hello \u{ffe2} world
|
446
|
+
class Foo < Bar
|
447
|
+
attr_accessor :foo
|
448
|
+
end
|
449
|
+
eof
|
450
|
+
Registry.at('Foo').superclass.should == P('Bar')
|
393
451
|
end
|
394
452
|
end
|
395
453
|
|
@@ -400,19 +458,19 @@ describe YARD::Parser::SourceParser do
|
|
400
458
|
Registry.at("Hello::Hi#me").should_not == nil
|
401
459
|
Registry.at("Hello::Hi#me").docstring.should == "Docstring"
|
402
460
|
end
|
403
|
-
|
461
|
+
|
404
462
|
it "should parse a set of file globs" do
|
405
463
|
Dir.should_receive(:[]).with('lib/**/*.rb').and_return([])
|
406
464
|
YARD.parse('lib/**/*.rb')
|
407
465
|
end
|
408
|
-
|
466
|
+
|
409
467
|
it "should parse a set of absolute paths" do
|
410
468
|
Dir.should_not_receive(:[]).and_return([])
|
411
469
|
File.should_receive(:file?).with('/path/to/file').and_return(true)
|
412
470
|
File.should_receive(:read_binary).with('/path/to/file').and_return("")
|
413
471
|
YARD.parse('/path/to/file')
|
414
472
|
end
|
415
|
-
|
473
|
+
|
416
474
|
it "should clean paths before parsing" do
|
417
475
|
File.should_receive(:open).and_return("")
|
418
476
|
parser = Parser::SourceParser.new(:ruby, true)
|
@@ -430,7 +488,7 @@ describe YARD::Parser::SourceParser do
|
|
430
488
|
File.should_receive(:read_binary).with('b.rb').and_return("")
|
431
489
|
YARD.parse ['/path/to/file', '*.rb']
|
432
490
|
end
|
433
|
-
|
491
|
+
|
434
492
|
it "should convert directories into globs" do
|
435
493
|
Dir.should_receive(:[]).with('foo/**/*.{rb,c}').and_return(['foo/a.rb', 'foo/bar/b.rb'])
|
436
494
|
File.should_receive(:directory?).with('foo').and_return(true)
|
@@ -440,7 +498,7 @@ describe YARD::Parser::SourceParser do
|
|
440
498
|
File.should_receive(:read_binary).with('foo/bar/b.rb').and_return("")
|
441
499
|
YARD.parse ['foo']
|
442
500
|
end
|
443
|
-
|
501
|
+
|
444
502
|
it "should use Registry.checksums cache if file is cached" do
|
445
503
|
data = 'DATA'
|
446
504
|
hash = Registry.checksum_for(data)
|
@@ -451,14 +509,14 @@ describe YARD::Parser::SourceParser do
|
|
451
509
|
File.should_receive(:read_binary).with('foo/bar').and_return(data)
|
452
510
|
YARD.parse('foo/bar')
|
453
511
|
end
|
454
|
-
|
512
|
+
|
455
513
|
it "should support excluded paths" do
|
456
514
|
File.should_receive(:file?).with('foo/bar').and_return(true)
|
457
515
|
File.should_receive(:file?).with('foo/baz').and_return(true)
|
458
516
|
File.should_not_receive(:read_binary)
|
459
517
|
YARD.parse(["foo/bar", "foo/baz"], ["foo", /baz$/])
|
460
518
|
end
|
461
|
-
|
519
|
+
|
462
520
|
it "should convert file contents to proper encoding if coding line is present" do
|
463
521
|
valid = []
|
464
522
|
valid << "# encoding: sjis"
|
@@ -528,13 +586,13 @@ describe YARD::Parser::SourceParser do
|
|
528
586
|
end
|
529
587
|
end if HAVE_RIPPER && RUBY19
|
530
588
|
end
|
531
|
-
|
589
|
+
|
532
590
|
describe '#parse_in_order' do
|
533
591
|
def in_order_parse(*files)
|
534
592
|
paths = files.map {|f| File.join(File.dirname(__FILE__), 'examples', f.to_s + '.rb.txt') }
|
535
593
|
YARD::Parser::SourceParser.parse(paths, [], Logger::DEBUG)
|
536
594
|
end
|
537
|
-
|
595
|
+
|
538
596
|
it "should attempt to parse files in order" do
|
539
597
|
msgs = []
|
540
598
|
log.should_receive(:debug) {|m| msgs << m }.at_least(:once)
|
@@ -543,8 +601,8 @@ describe YARD::Parser::SourceParser do
|
|
543
601
|
msgs[2].should =~ /Missing object MyModule/
|
544
602
|
msgs[3].should =~ /Processing .+parse_in_order_002.+/
|
545
603
|
msgs[4].should =~ /Re-processing .+parse_in_order_001.+/
|
546
|
-
end
|
547
|
-
|
604
|
+
end
|
605
|
+
|
548
606
|
it "should attempt to order files by length (process toplevel files first)" do
|
549
607
|
%w(a a/b a/b/c).each do |file|
|
550
608
|
File.should_receive(:file?).with(file).and_return(true)
|
@@ -553,21 +611,23 @@ describe YARD::Parser::SourceParser do
|
|
553
611
|
YARD.parse %w(a/b/c a/b a)
|
554
612
|
end
|
555
613
|
end
|
556
|
-
|
614
|
+
|
557
615
|
describe '#parse_statements' do
|
558
616
|
it "should display a warning for invalid parser type" do
|
559
617
|
log.should_receive(:warn).with(/unrecognized file/)
|
618
|
+
log.should_receive(:backtrace)
|
560
619
|
YARD::Parser::SourceParser.parse_string("int main() { }", :d)
|
561
620
|
end
|
562
|
-
|
621
|
+
|
563
622
|
if HAVE_RIPPER
|
564
623
|
it "should display a warning for a syntax error (with new parser)" do
|
565
624
|
err_msg = "Syntax error in `(stdin)`:(1,3): syntax error, unexpected $undefined, expecting $end"
|
566
625
|
log.should_receive(:warn).with(err_msg)
|
626
|
+
log.should_receive(:backtrace)
|
567
627
|
YARD::Parser::SourceParser.parse_string("$$$", :ruby)
|
568
628
|
end
|
569
629
|
end
|
570
|
-
|
630
|
+
|
571
631
|
it "should handle groups" do
|
572
632
|
Registry.clear
|
573
633
|
YARD.parse_string <<-eof
|
@@ -575,16 +635,16 @@ describe YARD::Parser::SourceParser do
|
|
575
635
|
# @group Group Name
|
576
636
|
def foo; end
|
577
637
|
def foo2; end
|
578
|
-
|
638
|
+
|
579
639
|
# @endgroup
|
580
|
-
|
640
|
+
|
581
641
|
def bar; end
|
582
|
-
|
642
|
+
|
583
643
|
# @group Group 2
|
584
644
|
def baz; end
|
585
645
|
end
|
586
646
|
eof
|
587
|
-
|
647
|
+
|
588
648
|
Registry.at('A').groups.should == ['Group Name', 'Group 2']
|
589
649
|
Registry.at('A#bar').group.should be_nil
|
590
650
|
Registry.at('A#foo').group.should == "Group Name"
|