yard 0.9.24 → 0.9.25
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/.rubocop.yml +37 -24
- data/CHANGELOG.md +18 -3
- data/README.md +96 -101
- data/Rakefile +2 -0
- data/lib/yard/cli/diff.rb +4 -1
- data/lib/yard/cli/server.rb +22 -13
- data/lib/yard/code_objects/proxy.rb +2 -1
- data/lib/yard/globals.rb +1 -1
- data/lib/yard/handlers/c/base.rb +164 -129
- data/lib/yard/parser/ruby/ruby_parser.rb +6 -4
- data/lib/yard/registry_store.rb +1 -1
- data/lib/yard/templates/helpers/html_helper.rb +10 -3
- data/lib/yard/templates/helpers/markup/rdoc_markup.rb +5 -4
- data/lib/yard/version.rb +1 -1
- data/tasks/update_error_map.rake +53 -0
- data/yard.gemspec +1 -1
- metadata +3 -207
- 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_mapper_spec.rb +0 -32
- 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 -520
- 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_resolver_spec.rb +0 -15
- 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.dat +0 -0
- 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/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 -90
- 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 -666
- 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 -50
- data/spec/templates/markup_processor_integrations/rdoc_markdown_spec.rb +0 -48
- data/spec/templates/markup_processor_integrations/rdoc_spec.rb +0 -39
- data/spec/templates/markup_processor_integrations/redcarpet_spec.rb +0 -64
- data/spec/templates/markup_processor_integrations/redcloth_spec.rb +0 -64
- 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,203 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
RSpec.describe YARD::Templates::Engine.template(:default, :module) do
|
5
|
-
before do
|
6
|
-
Registry.clear
|
7
|
-
YARD.parse_string <<-'eof'
|
8
|
-
module B
|
9
|
-
def c; end
|
10
|
-
def d; end
|
11
|
-
private
|
12
|
-
def e; end
|
13
|
-
end
|
14
|
-
|
15
|
-
module BaseMod
|
16
|
-
attr_reader :base_attr1
|
17
|
-
attr_writer :base_attr2
|
18
|
-
attr_accessor :base_attr3
|
19
|
-
end
|
20
|
-
|
21
|
-
# Comments
|
22
|
-
module A
|
23
|
-
include BaseMod
|
24
|
-
attr_accessor :attr1
|
25
|
-
attr_reader :attr2
|
26
|
-
|
27
|
-
# @overload attr3
|
28
|
-
# @return [String] a string
|
29
|
-
# @overload attr3=(value)
|
30
|
-
# @param [String] value sets the string
|
31
|
-
# @return [void]
|
32
|
-
attr_accessor :attr3
|
33
|
-
|
34
|
-
attr_writer :attr4
|
35
|
-
|
36
|
-
def self.a; end
|
37
|
-
def a; end
|
38
|
-
alias b a
|
39
|
-
|
40
|
-
# @overload test_overload(a)
|
41
|
-
# hello2
|
42
|
-
# @param [String] a hi
|
43
|
-
def test_overload(*args) end
|
44
|
-
|
45
|
-
# @overload test_multi_overload(a)
|
46
|
-
# @overload test_multi_overload(a, b)
|
47
|
-
def test_multi_overload(*args) end
|
48
|
-
|
49
|
-
# @return [void]
|
50
|
-
def void_meth; end
|
51
|
-
|
52
|
-
include B
|
53
|
-
|
54
|
-
class Y; end
|
55
|
-
class Q; end
|
56
|
-
class X; end
|
57
|
-
module Z; end
|
58
|
-
# A long docstring for the constant. With extra text
|
59
|
-
# and newlines.
|
60
|
-
CONSTANT = 'value'
|
61
|
-
@@cvar = 'value' # @deprecated
|
62
|
-
end
|
63
|
-
|
64
|
-
module TMP; include A end
|
65
|
-
class TMP2; extend A end
|
66
|
-
eof
|
67
|
-
end
|
68
|
-
|
69
|
-
it "renders html format correctly" do
|
70
|
-
html_equals(Registry.at('A').format(html_options(:hide_void_return => true,
|
71
|
-
:verifier => Verifier.new('object.type != :method || object.visibility == :public'))),
|
72
|
-
:module001)
|
73
|
-
end
|
74
|
-
|
75
|
-
it "renders text format correctly" do
|
76
|
-
YARD.parse_string <<-'eof'
|
77
|
-
module A
|
78
|
-
include D, E, F, A::B::C
|
79
|
-
end
|
80
|
-
eof
|
81
|
-
|
82
|
-
text_equals(Registry.at('A').format(text_options), :module001)
|
83
|
-
end
|
84
|
-
|
85
|
-
it "renders dot format correctly" do
|
86
|
-
expect(Registry.at('A').format(:format => :dot, :dependencies => true, :full => true)).to eq example_contents(:module001, 'dot')
|
87
|
-
end
|
88
|
-
|
89
|
-
it "renders groups correctly in html" do
|
90
|
-
Registry.clear
|
91
|
-
YARD.parse_string <<-'eof'
|
92
|
-
module A
|
93
|
-
# @group Foo
|
94
|
-
attr_accessor :foo_attr
|
95
|
-
def foo; end
|
96
|
-
def self.bar; end
|
97
|
-
|
98
|
-
# @group Bar
|
99
|
-
def baz; end
|
100
|
-
|
101
|
-
# @endgroup
|
102
|
-
|
103
|
-
def self.baz; end
|
104
|
-
end
|
105
|
-
eof
|
106
|
-
|
107
|
-
html_equals(Registry.at('A').format(html_options), :module002)
|
108
|
-
end
|
109
|
-
|
110
|
-
it "ignores overwritten/private attributes/constants from inherited list" do
|
111
|
-
Registry.clear
|
112
|
-
YARD.parse_string <<-'eof'
|
113
|
-
module B
|
114
|
-
attr_reader :foo
|
115
|
-
attr_accessor :bar
|
116
|
-
# @private
|
117
|
-
attr_writer :baz
|
118
|
-
FOO = 1
|
119
|
-
end
|
120
|
-
module A
|
121
|
-
include B
|
122
|
-
def foo; end
|
123
|
-
attr_reader :bar
|
124
|
-
FOO = 2
|
125
|
-
end
|
126
|
-
eof
|
127
|
-
|
128
|
-
html_equals(Registry.at('A').
|
129
|
-
format(html_options(:verifier => Verifier.new('!@private'))), :module003)
|
130
|
-
end
|
131
|
-
|
132
|
-
it "embeds mixins with :embed_mixins = ['Foo', 'Bar', 'Baz::A*']" do
|
133
|
-
Registry.clear
|
134
|
-
YARD.parse_string <<-'eof'
|
135
|
-
class A
|
136
|
-
# This method is in A
|
137
|
-
def foo; end
|
138
|
-
|
139
|
-
include Foo
|
140
|
-
extend Bar
|
141
|
-
include BarFooBar
|
142
|
-
include Baz::XYZ
|
143
|
-
include Baz::ABC
|
144
|
-
end
|
145
|
-
|
146
|
-
module BarFooBar
|
147
|
-
def bar_foo_bar; end
|
148
|
-
end
|
149
|
-
|
150
|
-
module Foo
|
151
|
-
def self.not_included; end
|
152
|
-
|
153
|
-
# Docs for xyz
|
154
|
-
def xyz; end
|
155
|
-
# Docs for bar_attr
|
156
|
-
attr_accessor :bar_attr
|
157
|
-
end
|
158
|
-
|
159
|
-
module Bar
|
160
|
-
def self.not_included; end
|
161
|
-
|
162
|
-
# @group Booya
|
163
|
-
|
164
|
-
# Docs for baz in Booya group
|
165
|
-
def baz; end
|
166
|
-
end
|
167
|
-
|
168
|
-
module Baz
|
169
|
-
module XYZ
|
170
|
-
# listed as inherited
|
171
|
-
def baz_xyz; end
|
172
|
-
end
|
173
|
-
|
174
|
-
module ABC
|
175
|
-
def baz_abc; end
|
176
|
-
end
|
177
|
-
end
|
178
|
-
eof
|
179
|
-
|
180
|
-
html_equals(Registry.at('A').format(html_options(:embed_mixins => ['Foo', 'Bar', 'Baz::A*'])), :module004)
|
181
|
-
end
|
182
|
-
|
183
|
-
it "renders constant groups correctly in html" do
|
184
|
-
Registry.clear
|
185
|
-
YARD.parse_string <<-'eof'
|
186
|
-
module A
|
187
|
-
# @group Foo
|
188
|
-
FOO = 1
|
189
|
-
|
190
|
-
# @deprecated
|
191
|
-
BAR = 2
|
192
|
-
|
193
|
-
# @group Bar
|
194
|
-
BAZ = 3
|
195
|
-
|
196
|
-
# @endgroup
|
197
|
-
|
198
|
-
WORLD = 4
|
199
|
-
end
|
200
|
-
eof
|
201
|
-
html_equals(Registry.at('A').format(html_options), :module005)
|
202
|
-
end
|
203
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
require File.dirname(__FILE__) + '/spec_helper'
|
3
|
-
|
4
|
-
class StringSerializer < YARD::Serializers::Base
|
5
|
-
attr_accessor :files, :string
|
6
|
-
def initialize(files, string)
|
7
|
-
@files = files
|
8
|
-
@string = string
|
9
|
-
end
|
10
|
-
|
11
|
-
def serialize(object, data)
|
12
|
-
files << object
|
13
|
-
string << data
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
RSpec.describe YARD::Templates::Engine.template(:default, :onefile) do
|
18
|
-
before do
|
19
|
-
Registry.clear
|
20
|
-
if defined?(::Encoding)
|
21
|
-
@eenc = Encoding.default_external
|
22
|
-
Encoding.default_external = 'ascii-8bit'
|
23
|
-
@ienc = Encoding.default_internal
|
24
|
-
Encoding.default_internal = 'ascii-8bit'
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
after do
|
29
|
-
if defined?(::Encoding)
|
30
|
-
Encoding.default_internal = @ienc
|
31
|
-
Encoding.default_external = @eenc
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def render
|
36
|
-
@files = []
|
37
|
-
@output = String.new("")
|
38
|
-
YARD.parse_string <<-eof
|
39
|
-
class A
|
40
|
-
# Foo method
|
41
|
-
# @return [String]
|
42
|
-
def foo; end
|
43
|
-
|
44
|
-
# Bar method
|
45
|
-
# @return [Numeric]
|
46
|
-
def bar; end
|
47
|
-
end
|
48
|
-
eof
|
49
|
-
readme = CodeObjects::ExtraFileObject.new('README',
|
50
|
-
"# This is a code comment\n\n# Top of file\n\n\nclass C; end")
|
51
|
-
Templates::Engine.generate Registry.all(:class),
|
52
|
-
:serializer => StringSerializer.new(@files, @output),
|
53
|
-
:onefile => true, :format => :html, :readme => readme, :files => [readme,
|
54
|
-
CodeObjects::ExtraFileObject.new('LICENSE', 'This is a license!')]
|
55
|
-
end
|
56
|
-
|
57
|
-
it "renders html" do
|
58
|
-
render
|
59
|
-
expect(@files).to eq ['index.html']
|
60
|
-
expect(@output).to include("This is a code comment")
|
61
|
-
expect(@output).to include("This is a license!")
|
62
|
-
expect(@output).to include("Class: A")
|
63
|
-
expect(@output).to include("Foo method")
|
64
|
-
expect(@output).to include("Bar method")
|
65
|
-
end
|
66
|
-
end
|
@@ -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
|