yard 0.9.23 → 0.9.27
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.
- checksums.yaml +4 -4
- data/.dockerignore +0 -0
- data/.gitattributes +4 -0
- data/.github/FUNDING.yml +3 -0
- data/.github/ISSUE_TEMPLATE.md +6 -6
- data/.github/PULL_REQUEST_TEMPLATE.md +5 -5
- data/.github/workflows/ci.yml +30 -0
- data/.github/workflows/gem.yml +19 -0
- data/.gitignore +0 -0
- data/.rspec +0 -0
- data/.rubocop.yml +37 -24
- data/.yardopts +0 -0
- data/.yardopts_guide +0 -0
- data/.yardopts_i18n +0 -0
- data/CHANGELOG.md +50 -4
- data/CONTRIBUTING.md +2 -2
- data/Gemfile +5 -3
- data/README.md +97 -102
- data/Rakefile +2 -3
- data/lib/yard/cli/diff.rb +4 -1
- data/lib/yard/cli/server.rb +22 -13
- data/lib/yard/cli/stats.rb +2 -0
- data/lib/yard/cli/yardoc.rb +2 -1
- data/lib/yard/code_objects/method_object.rb +1 -1
- data/lib/yard/code_objects/namespace_mapper.rb +30 -3
- data/lib/yard/code_objects/proxy.rb +2 -1
- data/lib/yard/globals.rb +1 -1
- data/lib/yard/handlers/c/base.rb +35 -0
- data/lib/yard/handlers/ruby/method_handler.rb +1 -1
- data/lib/yard/handlers/ruby/mixin_handler.rb +7 -2
- data/lib/yard/handlers/ruby/module_function_handler.rb +15 -3
- data/lib/yard/parser/ruby/ast_node.rb +2 -2
- data/lib/yard/parser/ruby/ruby_parser.rb +7 -5
- data/lib/yard/parser/ruby/token_resolver.rb +3 -1
- data/lib/yard/parser/source_parser.rb +1 -1
- data/lib/yard/registry_resolver.rb +10 -24
- data/lib/yard/registry_store.rb +1 -1
- data/lib/yard/serializers/yardoc_serializer.rb +1 -1
- data/lib/yard/server/commands/base.rb +2 -2
- data/lib/yard/server/commands/library_command.rb +1 -1
- data/lib/yard/tags/directives.rb +10 -1
- data/lib/yard/templates/helpers/html_helper.rb +15 -5
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +5 -4
- data/lib/yard/templates/helpers/markup_helper.rb +2 -1
- data/lib/yard/templates/section.rb +1 -3
- data/lib/yard/version.rb +1 -1
- data/lib/yard.rb +3 -0
- data/samus.json +15 -46
- data/tasks/prepare_tag.rake +45 -0
- data/tasks/update_error_map.rake +53 -0
- data/templates/default/fulldoc/html/css/style.css +1 -0
- data/yard.gemspec +3 -2
- metadata +23 -207
- data/.travis.yml +0 -52
- data/spec/cli/command_parser_spec.rb +0 -43
- data/spec/cli/command_spec.rb +0 -36
- data/spec/cli/config_spec.rb +0 -148
- data/spec/cli/diff_spec.rb +0 -254
- data/spec/cli/display_spec.rb +0 -30
- data/spec/cli/gems_spec.rb +0 -81
- data/spec/cli/graph_spec.rb +0 -18
- data/spec/cli/help_spec.rb +0 -22
- data/spec/cli/i18n_spec.rb +0 -107
- data/spec/cli/list_spec.rb +0 -8
- data/spec/cli/markup_types_spec.rb +0 -22
- data/spec/cli/server_spec.rb +0 -324
- data/spec/cli/stats_spec.rb +0 -96
- data/spec/cli/yard_on_yard_spec.rb +0 -38
- data/spec/cli/yardoc_spec.rb +0 -896
- data/spec/cli/yri_spec.rb +0 -101
- data/spec/code_objects/base_spec.rb +0 -485
- data/spec/code_objects/class_object_spec.rb +0 -226
- data/spec/code_objects/code_object_list_spec.rb +0 -36
- data/spec/code_objects/constants_spec.rb +0 -116
- data/spec/code_objects/extra_file_object_spec.rb +0 -161
- data/spec/code_objects/macro_object_spec.rb +0 -150
- data/spec/code_objects/method_object_spec.rb +0 -184
- data/spec/code_objects/module_object_spec.rb +0 -142
- data/spec/code_objects/namespace_object_spec.rb +0 -171
- data/spec/code_objects/proxy_spec.rb +0 -147
- data/spec/code_objects/spec_helper.rb +0 -3
- data/spec/config_spec.rb +0 -171
- data/spec/core_ext/array_spec.rb +0 -13
- data/spec/core_ext/file_spec.rb +0 -72
- data/spec/core_ext/hash_spec.rb +0 -14
- data/spec/core_ext/insertion_spec.rb +0 -37
- data/spec/core_ext/module_spec.rb +0 -9
- data/spec/core_ext/string_spec.rb +0 -42
- data/spec/core_ext/symbol_hash_spec.rb +0 -89
- data/spec/docstring_parser_spec.rb +0 -280
- data/spec/docstring_spec.rb +0 -373
- data/spec/handlers/alias_handler_spec.rb +0 -82
- data/spec/handlers/attribute_handler_spec.rb +0 -96
- data/spec/handlers/base_spec.rb +0 -216
- data/spec/handlers/c/alias_handler_spec.rb +0 -34
- data/spec/handlers/c/attribute_handler_spec.rb +0 -41
- data/spec/handlers/c/class_handler_spec.rb +0 -78
- data/spec/handlers/c/constant_handler_spec.rb +0 -71
- data/spec/handlers/c/init_handler_spec.rb +0 -48
- data/spec/handlers/c/method_handler_spec.rb +0 -327
- data/spec/handlers/c/mixin_handler_spec.rb +0 -44
- data/spec/handlers/c/module_handler_spec.rb +0 -71
- data/spec/handlers/c/override_comment_handler_spec.rb +0 -47
- data/spec/handlers/c/path_handler_spec.rb +0 -36
- data/spec/handlers/c/spec_helper.rb +0 -23
- data/spec/handlers/c/struct_handler_spec.rb +0 -16
- data/spec/handlers/class_condition_handler_spec.rb +0 -87
- data/spec/handlers/class_handler_spec.rb +0 -247
- data/spec/handlers/class_method_handler_shared_examples.rb +0 -133
- data/spec/handlers/class_variable_handler_spec.rb +0 -12
- data/spec/handlers/constant_handler_spec.rb +0 -112
- data/spec/handlers/decorator_handler_methods_spec.rb +0 -393
- data/spec/handlers/dsl_handler_spec.rb +0 -226
- data/spec/handlers/examples/alias_handler_001.rb.txt +0 -46
- data/spec/handlers/examples/attribute_handler_001.rb.txt +0 -32
- data/spec/handlers/examples/class_condition_handler_001.rb.txt +0 -69
- data/spec/handlers/examples/class_handler_001.rb.txt +0 -120
- data/spec/handlers/examples/class_variable_handler_001.rb.txt +0 -10
- data/spec/handlers/examples/constant_handler_001.rb.txt +0 -35
- data/spec/handlers/examples/dsl_handler_001.rb.txt +0 -156
- data/spec/handlers/examples/exception_handler_001.rb.txt +0 -59
- data/spec/handlers/examples/extend_handler_001.rb.txt +0 -19
- data/spec/handlers/examples/method_condition_handler_001.rb.txt +0 -10
- data/spec/handlers/examples/method_handler_001.rb.txt +0 -128
- data/spec/handlers/examples/mixin_handler_001.rb.txt +0 -40
- data/spec/handlers/examples/module_handler_001.rb.txt +0 -29
- data/spec/handlers/examples/private_constant_handler_001.rb.txt +0 -8
- data/spec/handlers/examples/process_handler_001.rb.txt +0 -11
- data/spec/handlers/examples/visibility_handler_001.rb.txt +0 -36
- data/spec/handlers/examples/yield_handler_001.rb.txt +0 -54
- data/spec/handlers/exception_handler_spec.rb +0 -49
- data/spec/handlers/extend_handler_spec.rb +0 -28
- data/spec/handlers/legacy_base_spec.rb +0 -128
- data/spec/handlers/method_condition_handler_spec.rb +0 -15
- data/spec/handlers/method_handler_spec.rb +0 -214
- data/spec/handlers/mixin_handler_spec.rb +0 -60
- data/spec/handlers/module_function_handler_spec.rb +0 -106
- data/spec/handlers/module_handler_spec.rb +0 -35
- data/spec/handlers/private_class_method_handler_spec.rb +0 -11
- data/spec/handlers/private_constant_handler_spec.rb +0 -25
- data/spec/handlers/processor_spec.rb +0 -35
- data/spec/handlers/public_class_method_handler_spec.rb +0 -11
- data/spec/handlers/ruby/base_spec.rb +0 -95
- data/spec/handlers/ruby/legacy/base_spec.rb +0 -84
- data/spec/handlers/spec_helper.rb +0 -33
- data/spec/handlers/visibility_handler_spec.rb +0 -44
- data/spec/handlers/yield_handler_spec.rb +0 -52
- data/spec/i18n/locale_spec.rb +0 -81
- data/spec/i18n/message_spec.rb +0 -52
- data/spec/i18n/messages_spec.rb +0 -67
- data/spec/i18n/pot_generator_spec.rb +0 -295
- data/spec/i18n/text_spec.rb +0 -184
- data/spec/logging_spec.rb +0 -44
- data/spec/options_spec.rb +0 -171
- data/spec/parser/base_spec.rb +0 -24
- data/spec/parser/c_parser_spec.rb +0 -236
- data/spec/parser/examples/array.c.txt +0 -6267
- data/spec/parser/examples/example1.rb.txt +0 -8
- data/spec/parser/examples/extrafile.c.txt +0 -8
- data/spec/parser/examples/file.c.txt +0 -28
- data/spec/parser/examples/multifile.c.txt +0 -22
- data/spec/parser/examples/namespace.cpp.txt +0 -68
- data/spec/parser/examples/override.c.txt +0 -424
- data/spec/parser/examples/parse_in_order_001.rb.txt +0 -2
- data/spec/parser/examples/parse_in_order_002.rb.txt +0 -2
- data/spec/parser/examples/tag_handler_001.rb.txt +0 -8
- data/spec/parser/ruby/ast_node_spec.rb +0 -33
- data/spec/parser/ruby/legacy/statement_list_spec.rb +0 -299
- data/spec/parser/ruby/legacy/token_list_spec.rb +0 -79
- data/spec/parser/ruby/ruby_parser_spec.rb +0 -508
- data/spec/parser/ruby/token_resolver_spec.rb +0 -165
- data/spec/parser/source_parser_spec.rb +0 -727
- data/spec/parser/tag_parsing_spec.rb +0 -17
- data/spec/rake/yardoc_task_spec.rb +0 -118
- data/spec/registry_spec.rb +0 -463
- data/spec/registry_store_spec.rb +0 -327
- data/spec/rubygems/doc_manager_spec.rb +0 -112
- data/spec/serializers/data/serialized_yardoc/checksums +0 -1
- data/spec/serializers/data/serialized_yardoc/objects/Foo/bar_i.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo/baz_i.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/Foo.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/objects/root.dat +0 -0
- data/spec/serializers/data/serialized_yardoc/proxy_types +0 -2
- data/spec/serializers/file_system_serializer_spec.rb +0 -145
- data/spec/serializers/spec_helper.rb +0 -2
- data/spec/serializers/yardoc_serializer_spec.rb +0 -78
- data/spec/server/adapter_spec.rb +0 -39
- data/spec/server/commands/base_spec.rb +0 -91
- data/spec/server/commands/library_command_spec.rb +0 -39
- data/spec/server/doc_server_helper_spec.rb +0 -72
- data/spec/server/doc_server_serializer_spec.rb +0 -60
- data/spec/server/rack_adapter_spec.rb +0 -21
- data/spec/server/router_spec.rb +0 -123
- data/spec/server/spec_helper.rb +0 -22
- data/spec/server/static_caching_spec.rb +0 -47
- data/spec/server/webrick_servlet_spec.rb +0 -20
- data/spec/server_spec.rb +0 -19
- data/spec/spec_helper.rb +0 -212
- data/spec/tags/default_factory_spec.rb +0 -168
- data/spec/tags/default_tag_spec.rb +0 -11
- data/spec/tags/directives_spec.rb +0 -463
- data/spec/tags/library_spec.rb +0 -48
- data/spec/tags/overload_tag_spec.rb +0 -53
- data/spec/tags/ref_tag_list_spec.rb +0 -53
- data/spec/tags/types_explainer_spec.rb +0 -203
- data/spec/templates/class_spec.rb +0 -45
- data/spec/templates/constant_spec.rb +0 -41
- data/spec/templates/engine_spec.rb +0 -131
- data/spec/templates/examples/class001.html +0 -308
- data/spec/templates/examples/class001.txt +0 -36
- data/spec/templates/examples/class002.html +0 -39
- data/spec/templates/examples/constant001.txt +0 -25
- data/spec/templates/examples/constant002.txt +0 -7
- data/spec/templates/examples/constant003.txt +0 -11
- data/spec/templates/examples/method001.html +0 -137
- data/spec/templates/examples/method001.txt +0 -35
- data/spec/templates/examples/method002.html +0 -91
- data/spec/templates/examples/method002.txt +0 -20
- data/spec/templates/examples/method003.html +0 -165
- data/spec/templates/examples/method003.txt +0 -45
- data/spec/templates/examples/method004.html +0 -48
- data/spec/templates/examples/method004.txt +0 -10
- data/spec/templates/examples/method005.html +0 -105
- data/spec/templates/examples/method005.txt +0 -33
- data/spec/templates/examples/method006.html +0 -108
- data/spec/templates/examples/method006.txt +0 -20
- data/spec/templates/examples/module001.dot +0 -33
- data/spec/templates/examples/module001.html +0 -833
- data/spec/templates/examples/module001.txt +0 -33
- data/spec/templates/examples/module002.html +0 -341
- data/spec/templates/examples/module003.html +0 -202
- data/spec/templates/examples/module004.html +0 -394
- data/spec/templates/examples/module005.html +0 -82
- data/spec/templates/examples/tag001.txt +0 -82
- data/spec/templates/helpers/base_helper_spec.rb +0 -171
- data/spec/templates/helpers/html_helper_spec.rb +0 -687
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +0 -65
- data/spec/templates/helpers/markup/rdoc_markup_spec.rb +0 -84
- data/spec/templates/helpers/markup_helper_spec.rb +0 -136
- data/spec/templates/helpers/method_helper_spec.rb +0 -107
- data/spec/templates/helpers/module_helper_spec.rb +0 -35
- data/spec/templates/helpers/shared_signature_examples.rb +0 -126
- data/spec/templates/helpers/text_helper_spec.rb +0 -65
- data/spec/templates/markup_processor_integrations/asciidoctor_spec.rb +0 -60
- data/spec/templates/markup_processor_integrations/integration_spec_helper.rb +0 -46
- data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +0 -59
- data/spec/templates/markup_processor_integrations/rdoc_spec.rb +0 -39
- data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +0 -59
- data/spec/templates/markup_processor_integrations/redcloth_spec.rb +0 -48
- data/spec/templates/method_spec.rb +0 -118
- data/spec/templates/module_spec.rb +0 -203
- data/spec/templates/onefile_spec.rb +0 -66
- data/spec/templates/section_spec.rb +0 -144
- data/spec/templates/spec_helper.rb +0 -76
- data/spec/templates/tag_spec.rb +0 -52
- data/spec/templates/template_spec.rb +0 -410
- data/spec/verifier_spec.rb +0 -106
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}ModuleHandler" do
|
5
|
-
before(:all) { parse_file :module_handler_001, __FILE__ }
|
6
|
-
|
7
|
-
it "parses a module block" do
|
8
|
-
expect(Registry.at(:ModName)).not_to eq nil
|
9
|
-
expect(Registry.at("ModName::OtherModName")).not_to eq nil
|
10
|
-
end
|
11
|
-
|
12
|
-
it "attaches docstring" do
|
13
|
-
expect(Registry.at("ModName::OtherModName").docstring).to eq "Docstring"
|
14
|
-
end
|
15
|
-
|
16
|
-
it "handles any formatting" do
|
17
|
-
expect(Registry.at(:StressTest)).not_to eq nil
|
18
|
-
end
|
19
|
-
|
20
|
-
it "handles complex module names" do
|
21
|
-
expect(Registry.at("A::B")).not_to eq nil
|
22
|
-
end
|
23
|
-
|
24
|
-
it "handles modules in the form ::ModName" do
|
25
|
-
expect(Registry.at("Kernel")).not_to be nil
|
26
|
-
end
|
27
|
-
|
28
|
-
it "lists mixins in proper order" do
|
29
|
-
expect(Registry.at('D').mixins).to eq [P(:C), P(:B), P(:A)]
|
30
|
-
end
|
31
|
-
|
32
|
-
it "creates proper module when constant is in namespace" do
|
33
|
-
expect(Registry.at('Q::FOO::A')).not_to be nil
|
34
|
-
end
|
35
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
require File.dirname(__FILE__) + '/class_method_handler_shared_examples'
|
4
|
-
|
5
|
-
RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}PrivateClassMethodHandler" do
|
6
|
-
before { Registry.clear }
|
7
|
-
|
8
|
-
let(:visibility) { :private }
|
9
|
-
|
10
|
-
include_examples "class method visibility decorator"
|
11
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}PrivateConstantHandler" do
|
5
|
-
before(:all) { parse_file :private_constant_handler_001, __FILE__ }
|
6
|
-
|
7
|
-
it "handles private_constant statement" do
|
8
|
-
expect(Registry.at('A::Foo').visibility).to eq :private
|
9
|
-
expect(Registry.at('A::B').visibility).to eq :private
|
10
|
-
expect(Registry.at('A::C').visibility).to eq :private
|
11
|
-
end
|
12
|
-
|
13
|
-
it "makes all other constants public" do
|
14
|
-
expect(Registry.at('A::D').visibility).to eq :public
|
15
|
-
end
|
16
|
-
|
17
|
-
it "fails if parameter is not String, Symbol or Constant" do
|
18
|
-
undoc_error 'class Foo; private_constant x; end'
|
19
|
-
undoc_error 'class Foo; X = 1; private_constant X.new("hi"); end'
|
20
|
-
end unless LEGACY_PARSER
|
21
|
-
|
22
|
-
it "fails if constant can't be recognized" do
|
23
|
-
undoc_error 'class Foo2; private_constant :X end'
|
24
|
-
end
|
25
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe YARD::Handlers::Processor do
|
5
|
-
before do
|
6
|
-
@proc = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby))
|
7
|
-
end
|
8
|
-
|
9
|
-
it "starts with public visibility" do
|
10
|
-
expect(@proc.visibility).to eq :public
|
11
|
-
end
|
12
|
-
|
13
|
-
it "starts in instance scope" do
|
14
|
-
expect(@proc.scope).to eq :instance
|
15
|
-
end
|
16
|
-
|
17
|
-
it "starts in root namespace" do
|
18
|
-
expect(@proc.namespace).to eq Registry.root
|
19
|
-
end
|
20
|
-
|
21
|
-
it "has a globals structure" do
|
22
|
-
expect(@proc.globals).to be_a(OpenStruct)
|
23
|
-
end
|
24
|
-
|
25
|
-
it "ignores HandlerAborted exceptions (but print debug info)" do
|
26
|
-
class AbortHandlerProcessor < YARD::Handlers::Ruby::Base
|
27
|
-
process { abort! }
|
28
|
-
end
|
29
|
-
stmt = OpenStruct.new(:line => 1, :show => 'SOURCE')
|
30
|
-
allow(@proc).to receive(:find_handlers).and_return([AbortHandlerProcessor])
|
31
|
-
expect(log).to receive(:debug).with(/AbortHandlerProcessor cancelled from/)
|
32
|
-
expect(log).to receive(:debug).with("\tin file '(stdin)':1:\n\nSOURCE\n")
|
33
|
-
@proc.process([stmt])
|
34
|
-
end
|
35
|
-
end
|
@@ -1,11 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
require File.dirname(__FILE__) + '/class_method_handler_shared_examples'
|
4
|
-
|
5
|
-
RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}PublicClassMethodHandler" do
|
6
|
-
before { Registry.clear }
|
7
|
-
|
8
|
-
let(:visibility) { :public }
|
9
|
-
|
10
|
-
include_examples "class method visibility decorator"
|
11
|
-
end
|
@@ -1,95 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe YARD::Handlers::Ruby::Base, '#valid_handler?' do
|
4
|
-
include YARD::Parser::Ruby
|
5
|
-
YARD::Parser::Ruby::AstNode # rubocop:disable Lint/Void
|
6
|
-
|
7
|
-
before do
|
8
|
-
allow(Handlers::Ruby::Base).to receive(:inherited)
|
9
|
-
@processor = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby))
|
10
|
-
end
|
11
|
-
|
12
|
-
after(:all) do
|
13
|
-
Handlers::Base.clear_subclasses
|
14
|
-
end
|
15
|
-
|
16
|
-
def valid(handler, stmt)
|
17
|
-
expect(@processor.find_handlers(stmt)).to include(handler)
|
18
|
-
end
|
19
|
-
|
20
|
-
def invalid(handler, stmt)
|
21
|
-
expect(@processor.find_handlers(stmt)).not_to include(handler)
|
22
|
-
end
|
23
|
-
|
24
|
-
it "only handles Handlers inherited from Ruby::Base class" do
|
25
|
-
class IgnoredHandler < Handlers::Base
|
26
|
-
handles :list
|
27
|
-
end
|
28
|
-
class NotIgnoredHandler < Handlers::Ruby::Base
|
29
|
-
handles :list
|
30
|
-
end
|
31
|
-
allow(Handlers::Base).to receive(:subclasses).and_return [IgnoredHandler, NotIgnoredHandler]
|
32
|
-
expect(@processor.find_handlers(s)).to eq [NotIgnoredHandler]
|
33
|
-
end
|
34
|
-
|
35
|
-
it "handles string input (matches AstNode#source)" do
|
36
|
-
class StringHandler < Handlers::Ruby::Base
|
37
|
-
handles "x"
|
38
|
-
end
|
39
|
-
allow(Handlers::Base).to receive(:subclasses).and_return [StringHandler]
|
40
|
-
ast = Parser::Ruby::RubyParser.parse("if x == 2 then true end").ast
|
41
|
-
valid StringHandler, ast[0][0][0]
|
42
|
-
invalid StringHandler, ast[0][1]
|
43
|
-
end
|
44
|
-
|
45
|
-
it "handles symbol input (matches AstNode#type)" do
|
46
|
-
class SymbolHandler < Handlers::Ruby::Base
|
47
|
-
handles :myNodeType
|
48
|
-
end
|
49
|
-
allow(Handlers::Base).to receive(:subclasses).and_return [SymbolHandler]
|
50
|
-
valid SymbolHandler, s(:myNodeType, s(1, 2, 3))
|
51
|
-
invalid SymbolHandler, s(:NOTmyNodeType, s(1, 2, 3))
|
52
|
-
end
|
53
|
-
|
54
|
-
it "handles regex input (matches AstNode#source)" do
|
55
|
-
class RegexHandler < Handlers::Ruby::Base
|
56
|
-
handles(/^if x ==/)
|
57
|
-
end
|
58
|
-
allow(Handlers::Base).to receive(:subclasses).and_return [RegexHandler]
|
59
|
-
ast = Parser::Ruby::RubyParser.parse("if x == 2 then true end").ast
|
60
|
-
valid RegexHandler, ast
|
61
|
-
invalid RegexHandler, ast[0][1]
|
62
|
-
end
|
63
|
-
|
64
|
-
it "handles AstNode input (matches AST literally)" do
|
65
|
-
class ASTHandler < Handlers::Ruby::Base
|
66
|
-
handles s(:vcall, s(:ident, "hello_world"))
|
67
|
-
end
|
68
|
-
allow(Handlers::Base).to receive(:subclasses).and_return [ASTHandler]
|
69
|
-
valid ASTHandler, s(:vcall, s(:ident, "hello_world"))
|
70
|
-
invalid ASTHandler, s(:vcall, s(:ident, "NOTHELLOWORLD"))
|
71
|
-
end
|
72
|
-
|
73
|
-
it "handles #method_call(:methname) on a valid AST" do
|
74
|
-
class MethCallHandler < Handlers::Ruby::Base
|
75
|
-
handles method_call(:meth)
|
76
|
-
end
|
77
|
-
allow(Handlers::Base).to receive(:subclasses).and_return [MethCallHandler]
|
78
|
-
ast = Parser::Ruby::RubyParser.parse(<<-"eof").ast
|
79
|
-
meth # 0
|
80
|
-
meth() # 1
|
81
|
-
meth(1,2,3) # 2
|
82
|
-
meth 1,2,3 # 3
|
83
|
-
NotMeth.meth # 4
|
84
|
-
NotMeth.meth { } # 5
|
85
|
-
NotMeth.meth do end # 6
|
86
|
-
NotMeth.meth 1, 2, 3 # 7
|
87
|
-
NotMeth.meth(1, 2, 3) # 8
|
88
|
-
NotMeth # 9
|
89
|
-
eof
|
90
|
-
(0..8).each do |i|
|
91
|
-
valid MethCallHandler, ast[i]
|
92
|
-
end
|
93
|
-
invalid MethCallHandler, ast[9]
|
94
|
-
end
|
95
|
-
end if HAVE_RIPPER
|
@@ -1,84 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
include Parser::Ruby::Legacy
|
4
|
-
|
5
|
-
RSpec.describe YARD::Handlers::Ruby::Legacy::Base, "#handles and inheritance" do
|
6
|
-
before do
|
7
|
-
allow(Handlers::Ruby::Legacy::Base).to receive(:inherited)
|
8
|
-
if RUBY_VERSION > '1.8.7'
|
9
|
-
allow(Handlers::Ruby::Legacy::MixinHandler).to receive(:inherited) # fixes a Ruby1.9 issue
|
10
|
-
end
|
11
|
-
@processor = Handlers::Processor.new(OpenStruct.new(:parser_type => :ruby18))
|
12
|
-
end
|
13
|
-
|
14
|
-
after(:all) do
|
15
|
-
Handlers::Base.clear_subclasses
|
16
|
-
end
|
17
|
-
|
18
|
-
def stmt(string)
|
19
|
-
Statement.new(TokenList.new(string))
|
20
|
-
end
|
21
|
-
|
22
|
-
it "only handles Handlers inherited from Ruby::Legacy::Base class" do
|
23
|
-
class IgnoredHandler < Handlers::Base
|
24
|
-
handles "hello"
|
25
|
-
end
|
26
|
-
class NotIgnoredHandlerLegacy < Handlers::Ruby::Legacy::Base
|
27
|
-
handles "hello"
|
28
|
-
end
|
29
|
-
allow(Handlers::Base).to receive(:subclasses).and_return [IgnoredHandler, NotIgnoredHandlerLegacy]
|
30
|
-
expect(@processor.find_handlers(stmt("hello world"))).to eq [NotIgnoredHandlerLegacy]
|
31
|
-
end
|
32
|
-
|
33
|
-
it "handles a string input" do
|
34
|
-
class TestStringHandler < Handlers::Ruby::Legacy::Base
|
35
|
-
handles "hello"
|
36
|
-
end
|
37
|
-
|
38
|
-
expect(TestStringHandler.handles?(stmt("hello world"))).to be true
|
39
|
-
expect(TestStringHandler.handles?(stmt("nothello world"))).to be false
|
40
|
-
end
|
41
|
-
|
42
|
-
it "handles regex input" do
|
43
|
-
class TestRegexHandler < Handlers::Ruby::Legacy::Base
|
44
|
-
handles(/^nothello$/)
|
45
|
-
end
|
46
|
-
|
47
|
-
expect(TestRegexHandler.handles?(stmt("nothello"))).to be true
|
48
|
-
expect(TestRegexHandler.handles?(stmt("not hello hello"))).to be false
|
49
|
-
end
|
50
|
-
|
51
|
-
it "handles token input" do
|
52
|
-
class TestTokenHandler < Handlers::Ruby::Legacy::Base
|
53
|
-
handles TkMODULE
|
54
|
-
end
|
55
|
-
|
56
|
-
expect(TestTokenHandler.handles?(stmt("module"))).to be true
|
57
|
-
expect(TestTokenHandler.handles?(stmt("if"))).to be false
|
58
|
-
end
|
59
|
-
|
60
|
-
it "parses a do/end or { } block with #parse_block" do
|
61
|
-
class MyBlockHandler < Handlers::Ruby::Legacy::Base
|
62
|
-
handles(/\AmyMethod\b/)
|
63
|
-
def process
|
64
|
-
parse_block(:owner => "test")
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
class MyBlockInnerHandler < Handlers::Ruby::Legacy::Base
|
69
|
-
handles "inner"
|
70
|
-
def self.reset; @@reached = false end
|
71
|
-
def self.reached?; @@reached ||= false end
|
72
|
-
def process; @@reached = true end
|
73
|
-
end
|
74
|
-
|
75
|
-
allow(Handlers::Base).to receive(:subclasses).and_return [MyBlockHandler, MyBlockInnerHandler]
|
76
|
-
Parser::SourceParser.parser_type = :ruby18
|
77
|
-
Parser::SourceParser.parse_string "myMethod do inner end"
|
78
|
-
expect(MyBlockInnerHandler).to be_reached
|
79
|
-
MyBlockInnerHandler.reset
|
80
|
-
Parser::SourceParser.parse_string "myMethod { inner }"
|
81
|
-
expect(MyBlockInnerHandler).to be_reached
|
82
|
-
Parser::SourceParser.parser_type = :ruby
|
83
|
-
end
|
84
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require 'stringio'
|
3
|
-
|
4
|
-
include Handlers
|
5
|
-
|
6
|
-
def undoc_error(code)
|
7
|
-
expect { StubbedSourceParser.parse_string(code) }.to raise_error(Parser::UndocumentableError)
|
8
|
-
end
|
9
|
-
|
10
|
-
def with_parser(parser_type)
|
11
|
-
tmp = StubbedSourceParser.parser_type
|
12
|
-
StubbedSourceParser.parser_type = parser_type
|
13
|
-
yield
|
14
|
-
StubbedSourceParser.parser_type = tmp
|
15
|
-
end
|
16
|
-
|
17
|
-
class StubbedProcessor < Processor
|
18
|
-
def process(statements)
|
19
|
-
statements.each_with_index do |stmt, _index|
|
20
|
-
find_handlers(stmt).each do |handler|
|
21
|
-
handler.new(self, stmt).process
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
class StubbedSourceParser < Parser::SourceParser
|
28
|
-
StubbedSourceParser.parser_type = :ruby
|
29
|
-
def post_process
|
30
|
-
post = StubbedProcessor.new(self)
|
31
|
-
post.process(@parser.enumerator)
|
32
|
-
end
|
33
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}VisibilityHandler" do
|
5
|
-
before(:all) { parse_file :visibility_handler_001, __FILE__ }
|
6
|
-
|
7
|
-
it "is able to set visibility to public" do
|
8
|
-
expect(Registry.at("Testing#pub").visibility).to eq :public
|
9
|
-
expect(Registry.at("Testing#pub2").visibility).to eq :public
|
10
|
-
end
|
11
|
-
|
12
|
-
it "is able to set visibility to private" do
|
13
|
-
expect(Registry.at("Testing#priv").visibility).to eq :private
|
14
|
-
end
|
15
|
-
|
16
|
-
it "is able to set visibility to protected" do
|
17
|
-
expect(Registry.at("Testing#prot").visibility).to eq :protected
|
18
|
-
end
|
19
|
-
|
20
|
-
it "supports parameters and only set visibility on those methods" do
|
21
|
-
expect(Registry.at('Testing#notpriv').visibility).to eq :protected
|
22
|
-
expect(Registry.at('Testing#notpriv2').visibility).to eq :protected
|
23
|
-
expect(Registry.at('Testing#notpriv?').visibility).to eq :protected
|
24
|
-
end
|
25
|
-
|
26
|
-
it "only accepts strings and symbols" do
|
27
|
-
expect(Registry.at('Testing#name')).to be nil
|
28
|
-
expect(Registry.at('Testing#argument')).to be nil
|
29
|
-
expect(Registry.at('Testing#method_call')).to be nil
|
30
|
-
end
|
31
|
-
|
32
|
-
it "handles constants passed in as symbols" do
|
33
|
-
expect(Registry.at('Testing#Foo').visibility).to eq :private
|
34
|
-
end
|
35
|
-
|
36
|
-
it "does not register classes with visibility" do
|
37
|
-
expect(Registry.at('Testing::Bar').visibility).to eq :public
|
38
|
-
expect(Registry.at('Testing::Baz').visibility).to eq :public
|
39
|
-
end
|
40
|
-
|
41
|
-
it "can decorate a method definition" do
|
42
|
-
expect(Registry.at('Testing#decpriv').visibility).to eq :private
|
43
|
-
end unless LEGACY_PARSER
|
44
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe "YARD::Handlers::Ruby::#{LEGACY_PARSER ? "Legacy::" : ""}YieldHandler" do
|
5
|
-
before(:all) { parse_file :yield_handler_001, __FILE__ }
|
6
|
-
|
7
|
-
it "only parses yield blocks in methods" do
|
8
|
-
expect(P(:Testing).tag(:yield)).to be nil
|
9
|
-
expect(P(:Testing).tag(:yieldparam)).to be nil
|
10
|
-
end
|
11
|
-
|
12
|
-
it "handles an empty yield statement" do
|
13
|
-
expect(P('Testing#mymethod').tag(:yield)).to be nil
|
14
|
-
expect(P('Testing#mymethod').tag(:yieldparam)).to be nil
|
15
|
-
end
|
16
|
-
|
17
|
-
it "does not document a yield statement in a method with either @yield or @yieldparam" do
|
18
|
-
expect(P('Testing#mymethod2').tag(:yield).types).to eq ['a', 'b']
|
19
|
-
expect(P('Testing#mymethod2').tag(:yield).text).to eq "Blah"
|
20
|
-
expect(P('Testing#mymethod2').tags(:yieldparam).size).to eq 2
|
21
|
-
|
22
|
-
expect(P('Testing#mymethod3').tag(:yield).types).to eq ['a', 'b']
|
23
|
-
expect(P('Testing#mymethod3').tags(:yieldparam).size).to eq 0
|
24
|
-
|
25
|
-
expect(P('Testing#mymethod4').tag(:yieldparam).name).to eq '_self'
|
26
|
-
expect(P('Testing#mymethod4').tag(:yieldparam).text).to eq 'BLAH'
|
27
|
-
end
|
28
|
-
|
29
|
-
it "handles any arbitrary yield statement" do
|
30
|
-
expect(P('Testing#mymethod5').tag(:yield).types).to eq [':a', 'b', '_self', 'File.read(\'file\', \'w\')', 'CONSTANT']
|
31
|
-
end
|
32
|
-
|
33
|
-
it "handles parentheses" do
|
34
|
-
expect(P('Testing#mymethod6').tag(:yield).types).to eq ['b', 'a']
|
35
|
-
end
|
36
|
-
|
37
|
-
it "only documents the first yield statement in a method (limitation of yield handler)" do
|
38
|
-
expect(P('Testing#mymethod7').tag(:yield).types).to eq ['a']
|
39
|
-
end
|
40
|
-
|
41
|
-
it "handles `self` keyword and list object type as yieldparam for _self" do
|
42
|
-
expect(P('Testing#mymethod8').tag(:yield).types).to eq ['_self']
|
43
|
-
expect(P('Testing#mymethod8').tag(:yieldparam).types).to eq ['Testing']
|
44
|
-
expect(P('Testing#mymethod8').tag(:yieldparam).text).to eq "the object that the method was called on"
|
45
|
-
end
|
46
|
-
|
47
|
-
it "handles `super` keyword and document it under _super" do
|
48
|
-
expect(P('Testing#mymethod9').tag(:yield).types).to eq ['_super']
|
49
|
-
expect(P('Testing#mymethod9').tag(:yieldparam).types).to be nil
|
50
|
-
expect(P('Testing#mymethod9').tag(:yieldparam).text).to eq "the result of the method from the superclass"
|
51
|
-
end
|
52
|
-
end
|
data/spec/i18n/locale_spec.rb
DELETED
@@ -1,81 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe YARD::I18n::Locale do
|
4
|
-
def locale(name)
|
5
|
-
YARD::I18n::Locale.new(name)
|
6
|
-
end
|
7
|
-
|
8
|
-
before do
|
9
|
-
@locale = locale("fr")
|
10
|
-
end
|
11
|
-
|
12
|
-
describe "#name" do
|
13
|
-
it "returns name" do
|
14
|
-
expect(locale("fr").name).to eq "fr"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "#load" do
|
19
|
-
it "returns false for nonexistent PO" do
|
20
|
-
expect(File).to receive(:exist?).with('foo/fr.po').and_return(false)
|
21
|
-
expect(@locale.load('foo')).to be false
|
22
|
-
end
|
23
|
-
|
24
|
-
have_gettext_gem = true
|
25
|
-
if RUBY_VERSION < "1.9"
|
26
|
-
begin
|
27
|
-
require "gettext/tools/poparser"
|
28
|
-
rescue LoadError
|
29
|
-
have_gettext_gem = false
|
30
|
-
end
|
31
|
-
else
|
32
|
-
begin
|
33
|
-
require "gettext/po_parser"
|
34
|
-
rescue LoadError
|
35
|
-
begin
|
36
|
-
require "gettext/tools/poparser"
|
37
|
-
rescue LoadError
|
38
|
-
have_gettext_gem = false
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
it "returns true for existent PO", :if => have_gettext_gem do
|
44
|
-
data = <<-eop
|
45
|
-
msgid ""
|
46
|
-
msgstr ""
|
47
|
-
"Language: fr\n"
|
48
|
-
"MIME-Version: 1.0\n"
|
49
|
-
"Content-Type: text/plain; charset=UTF-8\n"
|
50
|
-
"Content-Transfer-Encoding: 8bit\n"
|
51
|
-
|
52
|
-
msgid "Hello"
|
53
|
-
msgstr "Bonjour"
|
54
|
-
eop
|
55
|
-
parser = GetText::POParser.new
|
56
|
-
expect(File).to receive(:exist?).with('foo/fr.po').and_return(true)
|
57
|
-
expect(GetText::POParser).to receive(:new).and_return(parser)
|
58
|
-
expect(parser).to receive(:parse_file) do |file, hash|
|
59
|
-
expect(file).to eq 'foo/fr.po'
|
60
|
-
parser.parse(String.new(data), hash)
|
61
|
-
end
|
62
|
-
expect(@locale.load('foo')).to be true
|
63
|
-
expect(@locale.translate('Hello')).to eq "Bonjour"
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe "#translate" do
|
68
|
-
before do
|
69
|
-
messages = @locale.instance_variable_get(:@messages)
|
70
|
-
messages["Hello"] = "Bonjour"
|
71
|
-
end
|
72
|
-
|
73
|
-
it "returns translated string for existent string" do
|
74
|
-
expect(@locale.translate("Hello")) == "Bonjour"
|
75
|
-
end
|
76
|
-
|
77
|
-
it "returns original string for nonexistent string" do
|
78
|
-
expect(@locale.translate("nonexistent")) == "nonexistent"
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
data/spec/i18n/message_spec.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe YARD::I18n::Message do
|
4
|
-
def message(id)
|
5
|
-
YARD::I18n::Message.new(id)
|
6
|
-
end
|
7
|
-
|
8
|
-
before do
|
9
|
-
@message = message("Hello World!")
|
10
|
-
end
|
11
|
-
|
12
|
-
describe "#id" do
|
13
|
-
it "returns ID" do
|
14
|
-
expect(message("Hello World!").id).to eq "Hello World!"
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
describe "#add_location" do
|
19
|
-
it "adds some locations" do
|
20
|
-
@message.add_location("hello.rb", 10)
|
21
|
-
@message.add_location("message.rb", 5)
|
22
|
-
expect(@message.locations).to eq Set.new([["hello.rb", 10], ["message.rb", 5]])
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "#add_comment" do
|
27
|
-
it "adds some comments" do
|
28
|
-
@message.add_comment("YARD.title")
|
29
|
-
@message.add_comment("Hello#message")
|
30
|
-
expect(@message.comments).to eq Set.new(["YARD.title", "Hello#message"])
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "#==" do
|
35
|
-
it "returns true for same value messages" do
|
36
|
-
locations = [["hello.rb", 10], ["message.rb", 5]]
|
37
|
-
comments = ["YARD.title", "Hello#message"]
|
38
|
-
|
39
|
-
other_message = message(@message.id)
|
40
|
-
locations.each do |path, line|
|
41
|
-
@message.add_location(path, line)
|
42
|
-
other_message.add_location(path, line)
|
43
|
-
end
|
44
|
-
comments.each do |comment|
|
45
|
-
@message.add_comment(comment)
|
46
|
-
other_message.add_comment(comment)
|
47
|
-
end
|
48
|
-
|
49
|
-
expect(@message).to eq other_message
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
data/spec/i18n/messages_spec.rb
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe YARD::I18n::Messages do
|
4
|
-
def message(id)
|
5
|
-
YARD::I18n::Message.new(id)
|
6
|
-
end
|
7
|
-
|
8
|
-
def messages
|
9
|
-
YARD::I18n::Messages.new
|
10
|
-
end
|
11
|
-
|
12
|
-
before do
|
13
|
-
@messages = messages
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "#each" do
|
17
|
-
it "enumerates messages" do
|
18
|
-
@messages.register("Hello World!")
|
19
|
-
@messages.register("Title")
|
20
|
-
enumerated_messages = []
|
21
|
-
@messages.each do |message|
|
22
|
-
enumerated_messages << message
|
23
|
-
end
|
24
|
-
enumerated_messages = enumerated_messages.sort_by(&:id)
|
25
|
-
expect(enumerated_messages).to eq [message("Hello World!"), message("Title")]
|
26
|
-
end
|
27
|
-
|
28
|
-
it "does not yield any message if there are none" do
|
29
|
-
enumerated_messages = []
|
30
|
-
@messages.each do |message|
|
31
|
-
enumerated_messages << message
|
32
|
-
end
|
33
|
-
expect(enumerated_messages).to eq []
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe "#[]" do
|
38
|
-
it "returns registered message" do
|
39
|
-
@messages.register("Hello World!")
|
40
|
-
expect(@messages["Hello World!"]).to eq message("Hello World!")
|
41
|
-
end
|
42
|
-
|
43
|
-
it "returns nil for nonexistent message ID" do
|
44
|
-
expect(@messages["Hello World!"]).to eq nil
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe "#register" do
|
49
|
-
it "returns registered message" do
|
50
|
-
expect(@messages.register("Hello World!")).to eq message("Hello World!")
|
51
|
-
end
|
52
|
-
|
53
|
-
it "returns existent message" do
|
54
|
-
message = @messages.register("Hello World!")
|
55
|
-
expect(@messages.register("Hello World!").object_id).to eq message.object_id
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
describe "#==" do
|
60
|
-
it "returns true for same value messages" do
|
61
|
-
@messages.register("Hello World!")
|
62
|
-
other_messages = messages
|
63
|
-
other_messages.register("Hello World!")
|
64
|
-
expect(@messages).to eq other_messages
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|