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,144 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe YARD::Templates::Section do
|
5
|
-
include YARD::Templates
|
6
|
-
|
7
|
-
describe "#initialize" do
|
8
|
-
it "converts first argument to splat if it is array" do
|
9
|
-
s = Section.new(:name, [:foo, :bar])
|
10
|
-
expect(s.name).to eq :name
|
11
|
-
expect(s[0].name).to eq :foo
|
12
|
-
expect(s[1].name).to eq :bar
|
13
|
-
end
|
14
|
-
|
15
|
-
it "allows initialization with Section objects" do
|
16
|
-
s = Section.new(:name, [:foo, Section.new(:bar)])
|
17
|
-
expect(s.name).to eq :name
|
18
|
-
expect(s[0]).to eq Section.new(:foo)
|
19
|
-
expect(s[1]).to eq Section.new(:bar)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "makes a list of sections" do
|
23
|
-
s = Section.new(:name, [:foo, [:bar]])
|
24
|
-
expect(s).to eq Section.new(:name, Section.new(:foo, Section.new(:bar)))
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe "#[]" do
|
29
|
-
it "uses Array#[] if argument is integer" do
|
30
|
-
expect(Section.new(:name, [:foo, :bar])[0].name).to eq :foo
|
31
|
-
end
|
32
|
-
|
33
|
-
it "returns new Section object if more than one argument" do
|
34
|
-
expect(Section.new(:name, :foo, :bar, :baz)[1, 2]).to eq Section.new(:name, :bar, :baz)
|
35
|
-
end
|
36
|
-
|
37
|
-
it "returns new Section object if arg is Range" do
|
38
|
-
expect(Section.new(:name, :foo, :bar, :baz)[1..2]).to eq Section.new(:name, :bar, :baz)
|
39
|
-
end
|
40
|
-
|
41
|
-
it "looks for section by name if arg is object" do
|
42
|
-
expect(Section.new(:name, :foo, :bar, [:baz])[:bar][:baz]).to eq Section.new(:baz)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe "#eql?" do
|
47
|
-
it "checks for equality of two equal sections" do
|
48
|
-
expect(Section.new(:foo, [:a, :b])).to eql(Section.new(:foo, :a, :b))
|
49
|
-
expect(Section.new(:foo, [:a, :b])).to eq Section.new(:foo, :a, :b)
|
50
|
-
end
|
51
|
-
|
52
|
-
it "is not equal if section names are different" do
|
53
|
-
expect(Section.new(:foo, [:a, :b])).not_to eql(Section.new(:bar, :a, :b))
|
54
|
-
expect(Section.new(:foo, [:a, :b])).not_to eq Section.new(:bar, :a, :b)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
describe "#==" do
|
59
|
-
it "allows comparison to Symbol" do
|
60
|
-
expect(Section.new(:foo, 2, 3)).to eq :foo
|
61
|
-
end
|
62
|
-
|
63
|
-
it "allows comparison to String" do
|
64
|
-
expect(Section.new("foo", 2, 3)).to eq "foo"
|
65
|
-
end
|
66
|
-
|
67
|
-
it "allows comparison to Template" do
|
68
|
-
t = YARD::Templates::Engine.template!(:xyzzy, '/full/path/xyzzy')
|
69
|
-
expect(Section.new(t, 2, 3)).to eq t
|
70
|
-
end
|
71
|
-
|
72
|
-
it "allows comparison to Section" do
|
73
|
-
expect(Section.new(1, [2, 3])).to eq Section.new(1, 2, 3)
|
74
|
-
end
|
75
|
-
|
76
|
-
it "allows comparison to Object" do
|
77
|
-
expect(Section.new(1, [2, 3])).to eq 1
|
78
|
-
end
|
79
|
-
|
80
|
-
it "allows comparison to Array" do
|
81
|
-
expect(Section.new(1, 2, [3])).to eq [1, [2, [3]]]
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe "#to_a" do
|
86
|
-
it "converts Section to regular Array list" do
|
87
|
-
arr = Section.new(1, 2, [3, [4]]).to_a
|
88
|
-
expect(arr.class).to eq Array
|
89
|
-
expect(arr).to eq [1, [2, [3, [4]]]]
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
describe "#place" do
|
94
|
-
it "places objects as Sections" do
|
95
|
-
expect(Section.new(1, 2, 3).place(4).before(3)).to eq [1, [2, 4, 3]]
|
96
|
-
end
|
97
|
-
|
98
|
-
it "places objects anywhere inside Section with before/after_any" do
|
99
|
-
expect(Section.new(1, 2, [3, [4]]).place(5).after_any(4)).to eq [1, [2, [3, [4, 5]]]]
|
100
|
-
expect(Section.new(1, 2, [3, [4]]).place(5).before_any(4)).to eq [1, [2, [3, [5, 4]]]]
|
101
|
-
end
|
102
|
-
|
103
|
-
it "allows multiple sections to be placed" do
|
104
|
-
expect(Section.new(1, 2, 3).place(4, 5).after(3).to_a).to eq [1, [2, 3, 4, 5]]
|
105
|
-
expect(Section.new(1, 2, 3).place(4, [5]).after(3).to_a).to eq [1, [2, 3, 4, [5]]]
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
describe "#push" do
|
110
|
-
it "pushes objects as Sections" do
|
111
|
-
s = Section.new(:foo)
|
112
|
-
s.push :bar
|
113
|
-
expect(s[0]).to eq Section.new(:bar)
|
114
|
-
end
|
115
|
-
|
116
|
-
it "is aliased as #<<" do
|
117
|
-
s = Section.new(1)
|
118
|
-
s << :index
|
119
|
-
expect(s[:index]).to be_a(Section)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
|
123
|
-
describe "#unshift" do
|
124
|
-
it "unshifts objects as Sections" do
|
125
|
-
s = Section.new(:foo)
|
126
|
-
s.unshift :bar
|
127
|
-
expect(s[0]).to eq Section.new(:bar)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
describe "#any" do
|
132
|
-
it "finds item inside sections" do
|
133
|
-
s = Section.new(:foo, Section.new(:bar, Section.new(:bar)))
|
134
|
-
s.any(:bar).push(:baz)
|
135
|
-
expect(s.to_a).to eq [:foo, [:bar, [:bar, :baz]]]
|
136
|
-
end
|
137
|
-
|
138
|
-
it "finds item in any deeply nested set of sections" do
|
139
|
-
s = Section.new(:foo, Section.new(:bar, Section.new(:baz)))
|
140
|
-
s.any(:baz).push(:qux)
|
141
|
-
expect(s.to_a).to eq [:foo, [:bar, [:baz, [:qux]]]]
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
@@ -1,76 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
include YARD::Templates
|
4
|
-
|
5
|
-
def only_copy?(result, example, type)
|
6
|
-
return false unless defined?($COPY)
|
7
|
-
|
8
|
-
if $COPY == :all || $COPY == example
|
9
|
-
puts(result) unless $COPYT && $COPYT != type
|
10
|
-
end
|
11
|
-
$COPY ? true : false
|
12
|
-
end
|
13
|
-
|
14
|
-
def text_equals(result, expected_example)
|
15
|
-
return if only_copy?(result, expected_example, :text)
|
16
|
-
text_equals_string(result, example_contents(expected_example, :txt))
|
17
|
-
end
|
18
|
-
|
19
|
-
def text_equals_string(result, expected)
|
20
|
-
expect(result).to eq expected
|
21
|
-
end
|
22
|
-
|
23
|
-
def html_equals(result, expected_example)
|
24
|
-
return if only_copy?(result, expected_example, :html)
|
25
|
-
html_equals_string(result, example_contents(expected_example))
|
26
|
-
end
|
27
|
-
|
28
|
-
def html_equals_string(result, expected)
|
29
|
-
result = String.new(result)
|
30
|
-
expected = String.new(expected)
|
31
|
-
[expected, result].each do |value|
|
32
|
-
value.gsub!(/(>)\s+|\s+(<)/, '\1\2')
|
33
|
-
value.gsub!(/'/, "'")
|
34
|
-
value.strip!
|
35
|
-
end
|
36
|
-
text_equals_string(result, expected)
|
37
|
-
end
|
38
|
-
|
39
|
-
def example_contents(filename, ext = 'html')
|
40
|
-
File.read(File.join(File.dirname(__FILE__), 'examples', "#{filename}.#{ext}"))
|
41
|
-
end
|
42
|
-
|
43
|
-
module YARD::Templates::Engine
|
44
|
-
class << self
|
45
|
-
public :find_template_paths
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
class TestHtmlTemplateOptions < Templates::TemplateOptions
|
50
|
-
default_attr :markup, :none
|
51
|
-
default_attr :default_return, ""
|
52
|
-
default_attr :format, :html
|
53
|
-
default_attr :highlight, false
|
54
|
-
end
|
55
|
-
|
56
|
-
class TestTextTemplateOptions < Templates::TemplateOptions
|
57
|
-
default_attr :markup, :none
|
58
|
-
default_attr :default_return, ""
|
59
|
-
default_attr :format, :text
|
60
|
-
default_attr :highlight, false
|
61
|
-
end
|
62
|
-
|
63
|
-
def html_options(opts = {})
|
64
|
-
template_options(opts, TestHtmlTemplateOptions)
|
65
|
-
end
|
66
|
-
|
67
|
-
def text_options(opts = {})
|
68
|
-
template_options(opts, TestTextTemplateOptions)
|
69
|
-
end
|
70
|
-
|
71
|
-
def template_options(opts, klass)
|
72
|
-
options = klass.new
|
73
|
-
options.reset_defaults
|
74
|
-
options.update(opts)
|
75
|
-
options
|
76
|
-
end
|
data/spec/templates/tag_spec.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe YARD::Templates::Engine.template(:default, :tags) do
|
5
|
-
before { Registry.clear }
|
6
|
-
|
7
|
-
describe "all known tags" do
|
8
|
-
before do
|
9
|
-
YARD.parse_string <<-'eof'
|
10
|
-
# Comments
|
11
|
-
# @abstract override me
|
12
|
-
# @param [Hash] opts the options
|
13
|
-
# @option opts :key ('') hello
|
14
|
-
# @option opts :key2 (X) hello
|
15
|
-
# @return [String] the result
|
16
|
-
# @raise [Exception] Exception class
|
17
|
-
# @deprecated for great justice
|
18
|
-
# @see A
|
19
|
-
# @see http://url.com
|
20
|
-
# @see http://url.com Example
|
21
|
-
# @author Name
|
22
|
-
# @since 1.0
|
23
|
-
# @version 1.0
|
24
|
-
# @yield a block
|
25
|
-
# @yieldparam [String] a a value
|
26
|
-
# @yieldreturn [Hash] a hash
|
27
|
-
# @example Wash your car
|
28
|
-
# car.wash
|
29
|
-
# @example To kill a mockingbird
|
30
|
-
# a = String.new
|
31
|
-
# flip(a.reverse)
|
32
|
-
def m(opts = {}) end
|
33
|
-
eof
|
34
|
-
end
|
35
|
-
|
36
|
-
it "renders text format correctly" do
|
37
|
-
text_equals(Registry.at('#m').format(text_options), :tag001)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
describe "param tags on non-methods" do
|
42
|
-
it "does not display @param tags on non-method objects" do
|
43
|
-
YARD.parse_string <<-'eof'
|
44
|
-
# @param [#to_s] name the name
|
45
|
-
module Foo; end
|
46
|
-
eof
|
47
|
-
|
48
|
-
proc = lambda { Registry.at('Foo').format(html_options) }
|
49
|
-
expect(proc).not_to raise_error
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,410 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe YARD::Templates::Template do
|
5
|
-
def template(path)
|
6
|
-
YARD::Templates::Engine.template!(path, '/full/path/' + path.to_s)
|
7
|
-
end
|
8
|
-
|
9
|
-
before :each do
|
10
|
-
YARD::Templates::ErbCache.clear!
|
11
|
-
end
|
12
|
-
|
13
|
-
describe ".include_parent" do
|
14
|
-
it "does not include parent directory if parent directory is a template root path" do
|
15
|
-
mod = template('q')
|
16
|
-
expect(mod).not_to include(template(''))
|
17
|
-
end
|
18
|
-
|
19
|
-
it "includes overridden parent directory" do
|
20
|
-
allow(Engine).to receive(:template_paths).and_return(['/foo', '/bar'])
|
21
|
-
expect(File).to receive(:directory?).with('/foo/a/b').and_return(true)
|
22
|
-
expect(File).to receive(:directory?).with('/bar/a/b').and_return(false)
|
23
|
-
expect(File).to receive(:directory?).with('/foo/a').at_least(1).times.and_return(true)
|
24
|
-
expect(File).to receive(:directory?).with('/bar/a').at_least(1).times.and_return(true)
|
25
|
-
ancestors = Engine.template('a/b').ancestors.map(&:class_name)
|
26
|
-
expect(ancestors[0, 3]).to eq %w(Template__foo_a_b Template__bar_a Template__foo_a)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "includes parent directory template if exists" do
|
30
|
-
mod1 = template('x')
|
31
|
-
mod2 = template('x/y')
|
32
|
-
expect(mod2).to include(mod1)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe ".full_paths" do
|
37
|
-
it "lists full_path" do
|
38
|
-
mod = template(:a)
|
39
|
-
expect(mod.full_paths).to eq ['/full/path/a']
|
40
|
-
end
|
41
|
-
|
42
|
-
it "lists paths of included modules" do
|
43
|
-
mod = template(:a)
|
44
|
-
mod.send(:include, template(:b))
|
45
|
-
expect(mod.full_paths).to eq ['/full/path/a', '/full/path/b']
|
46
|
-
end
|
47
|
-
|
48
|
-
it "lists paths from modules of included modules" do
|
49
|
-
mod = template(:c)
|
50
|
-
mod.send(:include, template(:d))
|
51
|
-
mod.send(:include, template(:a))
|
52
|
-
expect(mod.full_paths).to eq ['c', 'a', 'b', 'd'].map {|o| '/full/path/' + o }
|
53
|
-
end
|
54
|
-
|
55
|
-
it "only lists full paths of modules that respond to full_paths" do
|
56
|
-
mod = template(:d)
|
57
|
-
mod.send(:include, Enumerable)
|
58
|
-
expect(mod.full_paths).to eq ['/full/path/d']
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
describe ".load_setup_rb" do
|
63
|
-
it "loads setup.rb file for module" do
|
64
|
-
expect(File).to receive(:file?).with('/full/path/e/setup.rb').and_return(true)
|
65
|
-
expect(File).to receive(:read).with('/full/path/e/setup.rb').and_return(String.new('def success; end'))
|
66
|
-
expect(template(:e).new).to respond_to(:success)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe ".T" do
|
71
|
-
it "loads template from absolute path" do
|
72
|
-
mod = template(:a)
|
73
|
-
expect(Engine).to receive(:template).with('other')
|
74
|
-
mod.T('other')
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
describe ".find_file" do
|
79
|
-
it "finds file in the module's full_path" do
|
80
|
-
expect(File).to receive(:file?).with('/full/path/a/basename').and_return(false)
|
81
|
-
expect(File).to receive(:file?).with('/full/path/b/basename').and_return(true)
|
82
|
-
expect(template(:a).find_file('basename')).to eq '/full/path/b/basename'
|
83
|
-
end
|
84
|
-
|
85
|
-
it "returns nil if no file is found" do
|
86
|
-
expect(File).to receive(:file?).with('/full/path/a/basename').and_return(false)
|
87
|
-
expect(File).to receive(:file?).with('/full/path/b/basename').and_return(false)
|
88
|
-
expect(template(:a).find_file('basename')).to be nil
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
describe ".find_nth_file" do
|
93
|
-
it "finds 2nd existing file in template paths" do
|
94
|
-
expect(File).to receive(:file?).with('/full/path/a/basename').and_return(true)
|
95
|
-
expect(File).to receive(:file?).with('/full/path/b/basename').and_return(true)
|
96
|
-
expect(template(:a).find_nth_file('basename', 2)).to eq '/full/path/b/basename'
|
97
|
-
end
|
98
|
-
|
99
|
-
it "returns nil if no file is found" do
|
100
|
-
expect(File).to receive(:file?).with('/full/path/a/basename').and_return(true)
|
101
|
-
expect(File).to receive(:file?).with('/full/path/b/basename').and_return(true)
|
102
|
-
expect(template(:a).find_nth_file('basename', 3)).to be nil
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
describe ".extra_includes" do
|
107
|
-
it "is included when a module is initialized" do
|
108
|
-
module MyModule; end
|
109
|
-
Template.extra_includes << MyModule
|
110
|
-
expect(template(:e).new).to be_kind_of(MyModule)
|
111
|
-
end
|
112
|
-
|
113
|
-
it "supports lambdas in list" do
|
114
|
-
module MyModule2; end
|
115
|
-
Template.extra_includes << lambda {|opts| MyModule2 if opts.format == :html }
|
116
|
-
expect(template(:f).new(:format => :html)).to be_kind_of(MyModule2)
|
117
|
-
metaclass = (class << template(:g).new(:format => :text); self end)
|
118
|
-
expect(metaclass.ancestors).not_to include(MyModule2)
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
describe ".is_a?" do
|
123
|
-
it "is kind of Template" do
|
124
|
-
expect(template(:e).is_a?(Template)).to be true
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
describe "#T" do
|
129
|
-
it "delegates to class method" do
|
130
|
-
expect(template(:e)).to receive(:T).with('test')
|
131
|
-
template(:e).new.T('test')
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
describe "#init" do
|
136
|
-
it "is called during initialization" do
|
137
|
-
module YARD::Templates::Engine::Template__full_path_e # rubocop:disable Style/ClassAndModuleCamelCase
|
138
|
-
def init; sections 1, 2, 3 end
|
139
|
-
end
|
140
|
-
expect(template(:e).new.sections).to eq Section.new(nil, 1, 2, 3)
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
describe "#file" do
|
145
|
-
it "reads the file if it exists" do
|
146
|
-
expect(File).to receive(:file?).with('/full/path/e/abc').and_return(true)
|
147
|
-
expect(IO).to receive(:read).with('/full/path/e/abc').and_return('hello world')
|
148
|
-
expect(template(:e).new.file('abc')).to eq 'hello world'
|
149
|
-
end
|
150
|
-
|
151
|
-
it "raises ArgumentError if the file does not exist" do
|
152
|
-
expect(File).to receive(:file?).with('/full/path/e/abc').and_return(false)
|
153
|
-
expect { template(:e).new.file('abc') }.to raise_error(ArgumentError)
|
154
|
-
end
|
155
|
-
|
156
|
-
it "replaces {{{__super__}}} with inherited template contents if allow_inherited=true" do
|
157
|
-
expect(File).to receive(:file?).with('/full/path/a/abc').twice.and_return(true)
|
158
|
-
expect(File).to receive(:file?).with('/full/path/b/abc').and_return(true)
|
159
|
-
expect(IO).to receive(:read).with('/full/path/a/abc').and_return(String.new('foo {{{__super__}}}'))
|
160
|
-
expect(IO).to receive(:read).with('/full/path/b/abc').and_return(String.new('bar'))
|
161
|
-
expect(template(:a).new.file('abc', true)).to eq "foo bar"
|
162
|
-
end
|
163
|
-
|
164
|
-
it "does not replace {{{__super__}}} with inherited template contents if allow_inherited=false" do
|
165
|
-
expect(File).to receive(:file?).with('/full/path/a/abc').and_return(true)
|
166
|
-
expect(IO).to receive(:read).with('/full/path/a/abc').and_return('foo {{{__super__}}}')
|
167
|
-
expect(template(:a).new.file('abc')).to eq "foo {{{__super__}}}"
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
describe "#superb" do
|
172
|
-
it "returns the inherited erb template contents" do
|
173
|
-
expect(File).to receive(:file?).with('/full/path/a/test.erb').and_return(true)
|
174
|
-
expect(File).to receive(:file?).with('/full/path/b/test.erb').and_return(true)
|
175
|
-
expect(IO).to receive(:read).with('/full/path/b/test.erb').and_return('bar')
|
176
|
-
template = template(:a).new
|
177
|
-
template.section = :test
|
178
|
-
expect(template.superb).to eq "bar"
|
179
|
-
end
|
180
|
-
|
181
|
-
it "works inside an erb template" do
|
182
|
-
expect(File).to receive(:file?).with('/full/path/a/test.erb').twice.and_return(true)
|
183
|
-
expect(File).to receive(:file?).with('/full/path/b/test.erb').and_return(true)
|
184
|
-
expect(IO).to receive(:read).with('/full/path/a/test.erb').and_return('foo<%= superb %>!')
|
185
|
-
expect(IO).to receive(:read).with('/full/path/b/test.erb').and_return('bar')
|
186
|
-
template = template(:a).new
|
187
|
-
template.section = :test
|
188
|
-
expect(template.erb(:test)).to eq "foobar!"
|
189
|
-
end
|
190
|
-
end
|
191
|
-
|
192
|
-
describe "#sections" do
|
193
|
-
it "allows sections to be set if arguments are provided" do
|
194
|
-
mod = template(:e).new
|
195
|
-
mod.sections 1, 2, [3]
|
196
|
-
expect(mod.sections).to eq Section.new(nil, 1, 2, [3])
|
197
|
-
end
|
198
|
-
end
|
199
|
-
|
200
|
-
describe "#run" do
|
201
|
-
it "renders all sections" do
|
202
|
-
mod = template(:e).new
|
203
|
-
allow(mod).to receive(:render_section) {|section| section.name.to_s }
|
204
|
-
mod.sections :a, :b, :c
|
205
|
-
expect(mod.run).to eq 'abc'
|
206
|
-
end
|
207
|
-
|
208
|
-
it "renders all sections with options" do
|
209
|
-
mod = template(:e).new
|
210
|
-
allow(mod).to receive(:render_section) {|section| section.name.to_s }
|
211
|
-
expect(mod).to receive(:add_options).with(:a => 1).and_yield
|
212
|
-
mod.sections :a
|
213
|
-
expect(mod.run(:a => 1)).to eq 'a'
|
214
|
-
end
|
215
|
-
|
216
|
-
it "runs section list if provided" do
|
217
|
-
mod = template(:e).new
|
218
|
-
expect(mod).to receive(:render_section).exactly(2).times do |section|
|
219
|
-
expect([:q, :x]).to include(section.name)
|
220
|
-
section.name.to_s
|
221
|
-
end
|
222
|
-
mod.run({}, [:q, :x])
|
223
|
-
end
|
224
|
-
|
225
|
-
it "accepts a nil section as empty string" do
|
226
|
-
mod = template(:e).new
|
227
|
-
allow(mod).to receive(:render_section) { nil }
|
228
|
-
mod.sections :a
|
229
|
-
expect(mod.run).to eq ""
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
describe "#add_options" do
|
234
|
-
it "sets instance variables in addition to options" do
|
235
|
-
mod = template(:f).new
|
236
|
-
mod.send(:add_options, :a => 1, :b => 2)
|
237
|
-
expect(mod.options).to eq(:a => 1, :b => 2)
|
238
|
-
expect(mod.instance_variable_get("@a")).to eq 1
|
239
|
-
expect(mod.instance_variable_get("@b")).to eq 2
|
240
|
-
end
|
241
|
-
|
242
|
-
it "sets instance variables and options only for the block" do
|
243
|
-
mod = template(:f).new
|
244
|
-
mod.send(:add_options, :a => 100, :b => 200) do
|
245
|
-
expect(mod.options).to eq(:a => 100, :b => 200)
|
246
|
-
end
|
247
|
-
expect(mod.options).not_to eq(:a => 100, :b => 200)
|
248
|
-
end
|
249
|
-
end
|
250
|
-
|
251
|
-
describe "#render_section" do
|
252
|
-
it "calls method if method exists by section name as Symbol" do
|
253
|
-
mod = template(:f).new
|
254
|
-
expect(mod).to receive(:respond_to?).with(:a).and_return(true)
|
255
|
-
expect(mod).to receive(:respond_to?).with('a').and_return(true)
|
256
|
-
expect(mod).to receive(:send).with(:a).and_return('a')
|
257
|
-
expect(mod).to receive(:send).with('a').and_return('a')
|
258
|
-
expect(mod.run({}, [:a, 'a'])).to eq 'aa'
|
259
|
-
end
|
260
|
-
|
261
|
-
it "calls erb if no method exists by section name" do
|
262
|
-
mod = template(:f).new
|
263
|
-
expect(mod).to receive(:respond_to?).with(:a).and_return(false)
|
264
|
-
expect(mod).to receive(:respond_to?).with('a').and_return(false)
|
265
|
-
expect(mod).to receive(:erb).with(:a).and_return('a')
|
266
|
-
expect(mod).to receive(:erb).with('a').and_return('a')
|
267
|
-
expect(mod.run({}, [:a, 'a'])).to eq 'aa'
|
268
|
-
end
|
269
|
-
|
270
|
-
it "runs a template if section is one" do
|
271
|
-
mod2 = template(:g)
|
272
|
-
expect(mod2).to receive(:run)
|
273
|
-
mod = template(:f).new
|
274
|
-
mod.sections mod2
|
275
|
-
mod.run
|
276
|
-
end
|
277
|
-
|
278
|
-
it "runs a template instance if section is one" do
|
279
|
-
mod2 = template(:g).new
|
280
|
-
expect(mod2).to receive(:run)
|
281
|
-
mod = template(:f).new
|
282
|
-
mod.sections mod2
|
283
|
-
mod.run
|
284
|
-
end
|
285
|
-
end
|
286
|
-
|
287
|
-
describe "#yield" do
|
288
|
-
it "yields a subsection" do
|
289
|
-
mod = template(:e).new
|
290
|
-
mod.sections :a, [:b, :c]
|
291
|
-
class << mod
|
292
|
-
def a; "(" + yield + ")" end
|
293
|
-
def b; "b" end
|
294
|
-
def c; "c" end
|
295
|
-
end
|
296
|
-
|
297
|
-
expect(mod.run).to eq "(b)"
|
298
|
-
end
|
299
|
-
|
300
|
-
it "yields a subsection within a yielded subsection" do
|
301
|
-
mod = template(:e).new
|
302
|
-
mod.sections :a, [:b, [:c]]
|
303
|
-
class << mod
|
304
|
-
def a; "(" + yield + ")" end
|
305
|
-
def b; yield end
|
306
|
-
def c; "c" end
|
307
|
-
end
|
308
|
-
|
309
|
-
expect(mod.run).to eq "(c)"
|
310
|
-
end
|
311
|
-
|
312
|
-
it "supports arbitrary nesting" do
|
313
|
-
mod = template(:e).new
|
314
|
-
mod.sections :a, [:b, [:c, [:d, [:e]]]]
|
315
|
-
class << mod
|
316
|
-
def a; "(" + yield + ")" end
|
317
|
-
def b; yield end
|
318
|
-
def c; yield end
|
319
|
-
def d; yield end
|
320
|
-
def e; "e" end
|
321
|
-
end
|
322
|
-
|
323
|
-
expect(mod.run).to eq "(e)"
|
324
|
-
end
|
325
|
-
|
326
|
-
it "yields first two elements if yield is called twice" do
|
327
|
-
mod = template(:e).new
|
328
|
-
mod.sections :a, [:b, :c, :d]
|
329
|
-
class << mod
|
330
|
-
def a; "(" + yield + yield + ")" end
|
331
|
-
def b; 'b' end
|
332
|
-
def c; "c" end
|
333
|
-
end
|
334
|
-
|
335
|
-
expect(mod.run).to eq "(bc)"
|
336
|
-
end
|
337
|
-
|
338
|
-
it "ignores any subsections inside subsection yields" do
|
339
|
-
mod = template(:e).new
|
340
|
-
mod.sections :a, [:b, [:c], :d]
|
341
|
-
class << mod
|
342
|
-
def a; "(" + yield + yield + ")" end
|
343
|
-
def b; 'b' end
|
344
|
-
def d; "d" end
|
345
|
-
end
|
346
|
-
|
347
|
-
expect(mod.run).to eq "(bd)"
|
348
|
-
end
|
349
|
-
|
350
|
-
it "allows extra options passed via yield" do
|
351
|
-
mod = template(:e).new
|
352
|
-
mod.sections :a, [:b]
|
353
|
-
class << mod
|
354
|
-
def a; "(" + yield(:x => "a") + ")" end
|
355
|
-
def b; options.x + @x end
|
356
|
-
end
|
357
|
-
|
358
|
-
expect(mod.run).to eq "(aa)"
|
359
|
-
end
|
360
|
-
end
|
361
|
-
|
362
|
-
describe "#yieldall" do
|
363
|
-
it "yields all subsections" do
|
364
|
-
mod = template(:e).new
|
365
|
-
mod.sections :a, [:b, [:d, [:e]], :c]
|
366
|
-
class << mod
|
367
|
-
def a; "(" + yieldall + ")" end
|
368
|
-
def b; "b" + yieldall end
|
369
|
-
def c; "c" end
|
370
|
-
def d; 'd' + yieldall end
|
371
|
-
def e; 'e' end
|
372
|
-
end
|
373
|
-
|
374
|
-
expect(mod.run).to eq "(bdec)"
|
375
|
-
end
|
376
|
-
|
377
|
-
it "yields options to all subsections" do
|
378
|
-
mod = template(:e).new
|
379
|
-
mod.sections :a, [:b, :c]
|
380
|
-
class << mod
|
381
|
-
def a; "(" + yieldall(:x => "2") + ")" end
|
382
|
-
def b; @x end
|
383
|
-
def c; @x end
|
384
|
-
end
|
385
|
-
expect(mod.run).to eq "(22)"
|
386
|
-
end
|
387
|
-
|
388
|
-
it "yields all subsections more than once" do
|
389
|
-
mod = template(:e).new
|
390
|
-
mod.sections :a, [:b]
|
391
|
-
class << mod
|
392
|
-
def a; "(" + yieldall + yieldall + ")" end
|
393
|
-
def b; "b" end
|
394
|
-
end
|
395
|
-
|
396
|
-
expect(mod.run).to eq "(bb)"
|
397
|
-
end
|
398
|
-
|
399
|
-
it "does not yield if no yieldall is called" do
|
400
|
-
mod = template(:e).new
|
401
|
-
mod.sections :a, [:b]
|
402
|
-
class << mod
|
403
|
-
def a; "()" end
|
404
|
-
def b; "b" end
|
405
|
-
end
|
406
|
-
|
407
|
-
expect(mod.run).to eq "()"
|
408
|
-
end
|
409
|
-
end
|
410
|
-
end
|