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,295 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe YARD::I18n::PotGenerator do
|
4
|
-
def create_messages(messages)
|
5
|
-
yard_messages = YARD::I18n::Messages.new
|
6
|
-
add_messages(yard_messages, messages)
|
7
|
-
yard_messages
|
8
|
-
end
|
9
|
-
|
10
|
-
def add_messages(yard_messages, messages)
|
11
|
-
messages.each do |id, properties|
|
12
|
-
yard_message = yard_messages.register(id)
|
13
|
-
(properties[:locations] || []).each do |path, line|
|
14
|
-
yard_message.add_location(path, line)
|
15
|
-
end
|
16
|
-
(properties[:comments] || []).each do |comment|
|
17
|
-
yard_message.add_comment(comment)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
before do
|
23
|
-
@generator = YARD::I18n::PotGenerator.new("..")
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "Generate" do
|
27
|
-
it "generates the default header" do
|
28
|
-
current_time = Time.parse("2011-11-20 22:17+0900")
|
29
|
-
allow(@generator).to receive(:current_time).and_return(current_time)
|
30
|
-
pot_creation_date = current_time.strftime("%Y-%m-%d %H:%M%z")
|
31
|
-
expect(@generator.generate).to eq <<-eoh
|
32
|
-
# SOME DESCRIPTIVE TITLE.
|
33
|
-
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
34
|
-
# This file is distributed under the same license as the PACKAGE package.
|
35
|
-
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
36
|
-
#
|
37
|
-
#, fuzzy
|
38
|
-
msgid ""
|
39
|
-
msgstr ""
|
40
|
-
"Project-Id-Version: PACKAGE VERSION\\n"
|
41
|
-
"Report-Msgid-Bugs-To: \\n"
|
42
|
-
"POT-Creation-Date: #{pot_creation_date}\\n"
|
43
|
-
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n"
|
44
|
-
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n"
|
45
|
-
"Language-Team: LANGUAGE <LL@li.org>\\n"
|
46
|
-
"Language: \\n"
|
47
|
-
"MIME-Version: 1.0\\n"
|
48
|
-
"Content-Type: text/plain; charset=UTF-8\\n"
|
49
|
-
"Content-Transfer-Encoding: 8bit\\n"
|
50
|
-
|
51
|
-
eoh
|
52
|
-
end
|
53
|
-
|
54
|
-
it "generates messages in location order" do
|
55
|
-
allow(@generator).to receive(:header).and_return("HEADER\n\n")
|
56
|
-
messages = {
|
57
|
-
"tag|see|Parser::SourceParser.parse" => {
|
58
|
-
:locations => [["yard.rb", 14]],
|
59
|
-
:comments => ["@see"]
|
60
|
-
},
|
61
|
-
"Parses a path or set of paths" => {
|
62
|
-
:locations => [["yard.rb", 12], ["yard/parser/source_parser.rb", 83]],
|
63
|
-
:comments => ["YARD.parse", "YARD::Parser::SourceParser.parse"]
|
64
|
-
}
|
65
|
-
}
|
66
|
-
add_messages(@generator.messages, messages)
|
67
|
-
expect(@generator.generate).to eq <<-'eoh'
|
68
|
-
HEADER
|
69
|
-
|
70
|
-
# YARD.parse
|
71
|
-
# YARD::Parser::SourceParser.parse
|
72
|
-
#: ../yard.rb:12
|
73
|
-
#: ../yard/parser/source_parser.rb:83
|
74
|
-
msgid "Parses a path or set of paths"
|
75
|
-
msgstr ""
|
76
|
-
|
77
|
-
# @see
|
78
|
-
#: ../yard.rb:14
|
79
|
-
msgid "tag|see|Parser::SourceParser.parse"
|
80
|
-
msgstr ""
|
81
|
-
|
82
|
-
eoh
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
describe "Escape" do
|
87
|
-
def generate_message_pot(message_id)
|
88
|
-
pot = String.new("")
|
89
|
-
message = YARD::I18n::Message.new(message_id)
|
90
|
-
@generator.send(:generate_message, pot, message)
|
91
|
-
pot
|
92
|
-
end
|
93
|
-
|
94
|
-
it "escapes <\\>" do
|
95
|
-
expect(generate_message_pot("hello \\ world")).to eq <<-'eop'
|
96
|
-
msgid "hello \\ world"
|
97
|
-
msgstr ""
|
98
|
-
|
99
|
-
eop
|
100
|
-
end
|
101
|
-
|
102
|
-
it "escapes <\">" do
|
103
|
-
expect(generate_message_pot("hello \" world")).to eq <<-'eop'
|
104
|
-
msgid "hello \" world"
|
105
|
-
msgstr ""
|
106
|
-
|
107
|
-
eop
|
108
|
-
end
|
109
|
-
|
110
|
-
it "escapes <\\n>" do
|
111
|
-
expect(generate_message_pot("hello \n world")).to eq <<-'eop'
|
112
|
-
msgid "hello \n"
|
113
|
-
" world"
|
114
|
-
msgstr ""
|
115
|
-
|
116
|
-
eop
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
describe "Object" do
|
121
|
-
before do
|
122
|
-
Registry.clear
|
123
|
-
@yard = YARD::CodeObjects::ModuleObject.new(:root, :YARD)
|
124
|
-
end
|
125
|
-
|
126
|
-
it "extracts at docstring" do
|
127
|
-
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
128
|
-
o.docstring = "An alias to {Parser::SourceParser}'s parsing method"
|
129
|
-
end
|
130
|
-
@generator.parse_objects([object])
|
131
|
-
expect(@generator.messages).to eq create_messages(
|
132
|
-
"An alias to {Parser::SourceParser}'s parsing method" => {
|
133
|
-
:locations => [],
|
134
|
-
:comments => ["YARD.parse"]
|
135
|
-
}
|
136
|
-
)
|
137
|
-
end
|
138
|
-
|
139
|
-
it "extracts at location" do
|
140
|
-
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
141
|
-
o.docstring = "An alias to {Parser::SourceParser}'s parsing method"
|
142
|
-
o.files = [["yard.rb", 12]]
|
143
|
-
end
|
144
|
-
@generator.parse_objects([object])
|
145
|
-
expect(@generator.messages).to eq create_messages(
|
146
|
-
"An alias to {Parser::SourceParser}'s parsing method" => {
|
147
|
-
:locations => [["yard.rb", 13]],
|
148
|
-
:comments => ["YARD.parse"]
|
149
|
-
}
|
150
|
-
)
|
151
|
-
end
|
152
|
-
|
153
|
-
it "extracts at tag name" do
|
154
|
-
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
155
|
-
o.docstring = "@see Parser::SourceParser.parse"
|
156
|
-
o.files = [["yard.rb", 12]]
|
157
|
-
end
|
158
|
-
@generator.parse_objects([object])
|
159
|
-
expect(@generator.messages).to eq create_messages(
|
160
|
-
"tag|see|Parser::SourceParser.parse" => {
|
161
|
-
:locations => [["yard.rb", 12]],
|
162
|
-
:comments => ["@see"]
|
163
|
-
}
|
164
|
-
)
|
165
|
-
end
|
166
|
-
|
167
|
-
it "extracts at tag text" do
|
168
|
-
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
169
|
-
o.docstring = <<-eod
|
170
|
-
@example Parse a glob of files
|
171
|
-
YARD.parse('lib/**/*.rb')
|
172
|
-
eod
|
173
|
-
o.files = [["yard.rb", 12]]
|
174
|
-
end
|
175
|
-
@generator.parse_objects([object])
|
176
|
-
expect(@generator.messages).to eq create_messages(
|
177
|
-
"tag|example|Parse a glob of files" => {
|
178
|
-
:locations => [["yard.rb", 12]],
|
179
|
-
:comments => ["@example"]
|
180
|
-
},
|
181
|
-
"YARD.parse('lib/**/*.rb')" => {
|
182
|
-
:locations => [["yard.rb", 12]],
|
183
|
-
:comments => ["@example Parse a glob of files"]
|
184
|
-
}
|
185
|
-
)
|
186
|
-
end
|
187
|
-
|
188
|
-
it "extracts at tag types" do
|
189
|
-
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
190
|
-
o.docstring = <<-eod
|
191
|
-
@param [String, Array<String>] paths a path, glob, or list of paths to
|
192
|
-
parse
|
193
|
-
eod
|
194
|
-
o.files = [["yard.rb", 12]]
|
195
|
-
end
|
196
|
-
@generator.parse_objects([object])
|
197
|
-
expect(@generator.messages).to eq create_messages(
|
198
|
-
"tag|param|paths" => {
|
199
|
-
:locations => [["yard.rb", 12]],
|
200
|
-
:comments => ["@param [String, Array<String>]"]
|
201
|
-
},
|
202
|
-
"a path, glob, or list of paths to\nparse" => {
|
203
|
-
:locations => [["yard.rb", 12]],
|
204
|
-
:comments => ["@param [String, Array<String>] paths"]
|
205
|
-
}
|
206
|
-
)
|
207
|
-
end
|
208
|
-
|
209
|
-
it "extracts at overload tag recursively" do
|
210
|
-
object = YARD::CodeObjects::MethodObject.new(@yard, :parse, :module) do |o|
|
211
|
-
o.docstring = <<-eod
|
212
|
-
@overload foo(i)
|
213
|
-
docstring foo(i)
|
214
|
-
@param [Integer] i integer parameter
|
215
|
-
eod
|
216
|
-
end
|
217
|
-
|
218
|
-
@generator.parse_objects([object])
|
219
|
-
expect(@generator.messages).to eq create_messages(
|
220
|
-
"tag|overload|foo" => {
|
221
|
-
:locations => [],
|
222
|
-
:comments => ["@overload"]
|
223
|
-
},
|
224
|
-
"docstring foo(i)" => {
|
225
|
-
:locations => [],
|
226
|
-
:comments => ["YARD.parse"]
|
227
|
-
},
|
228
|
-
"tag|param|i" => {
|
229
|
-
:locations => [],
|
230
|
-
:comments => ["@param [Integer]"]
|
231
|
-
},
|
232
|
-
"integer parameter" => {
|
233
|
-
:locations => [],
|
234
|
-
:comments => ["@param [Integer] i"]
|
235
|
-
}
|
236
|
-
)
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
describe "File" do
|
241
|
-
it "extracts at attribute" do
|
242
|
-
path = "GettingStarted.md"
|
243
|
-
text = <<-eor
|
244
|
-
# @title Getting Started Guide
|
245
|
-
|
246
|
-
# Getting Started with YARD
|
247
|
-
eor
|
248
|
-
allow(File).to receive(:open).with(path).and_yield(StringIO.new(text))
|
249
|
-
allow(File).to receive(:read).with(path).and_return(text)
|
250
|
-
file = YARD::CodeObjects::ExtraFileObject.new(path)
|
251
|
-
@generator.parse_files([file])
|
252
|
-
expect(@generator.messages).to eq create_messages(
|
253
|
-
"Getting Started Guide" => {
|
254
|
-
:locations => [[path, 1]],
|
255
|
-
:comments => ["title"]
|
256
|
-
},
|
257
|
-
"# Getting Started with YARD" => {
|
258
|
-
:locations => [[path, 3]],
|
259
|
-
:comments => []
|
260
|
-
}
|
261
|
-
)
|
262
|
-
end
|
263
|
-
|
264
|
-
it "extracts at paragraphs" do
|
265
|
-
path = "README.md"
|
266
|
-
paragraph1 = <<-eop.strip
|
267
|
-
Note that class methods must not be referred to with the "::" namespace
|
268
|
-
separator. Only modules, classes and constants should use "::".
|
269
|
-
eop
|
270
|
-
paragraph2 = <<-eop.strip
|
271
|
-
You can also do lookups on any installed gems. Just make sure to build the
|
272
|
-
.yardoc databases for installed gems with:
|
273
|
-
eop
|
274
|
-
text = <<-eot
|
275
|
-
#{paragraph1}
|
276
|
-
|
277
|
-
#{paragraph2}
|
278
|
-
eot
|
279
|
-
allow(File).to receive(:open).with(path).and_yield(StringIO.new(text))
|
280
|
-
allow(File).to receive(:read).with(path).and_return(text)
|
281
|
-
file = YARD::CodeObjects::ExtraFileObject.new(path)
|
282
|
-
@generator.parse_files([file])
|
283
|
-
expect(@generator.messages).to eq create_messages(
|
284
|
-
paragraph1 => {
|
285
|
-
:locations => [[path, 1]],
|
286
|
-
:comments => []
|
287
|
-
},
|
288
|
-
paragraph2 => {
|
289
|
-
:locations => [[path, 4]],
|
290
|
-
:comments => []
|
291
|
-
}
|
292
|
-
)
|
293
|
-
end
|
294
|
-
end
|
295
|
-
end
|
data/spec/i18n/text_spec.rb
DELETED
@@ -1,184 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe YARD::I18n::Text do
|
4
|
-
describe "#extract_messages" do
|
5
|
-
def extract_messages(input, options = {})
|
6
|
-
text = YARD::I18n::Text.new(StringIO.new(input), options)
|
7
|
-
messages = []
|
8
|
-
text.extract_messages do |*message|
|
9
|
-
messages << message
|
10
|
-
end
|
11
|
-
messages
|
12
|
-
end
|
13
|
-
|
14
|
-
describe "Header" do
|
15
|
-
it "extracts at attribute" do
|
16
|
-
text = <<-eot
|
17
|
-
# @title Getting Started Guide
|
18
|
-
|
19
|
-
# Getting Started with YARD
|
20
|
-
eot
|
21
|
-
expect(extract_messages(text, :have_header => true)).to eq(
|
22
|
-
[[:attribute, "title", "Getting Started Guide", 1],
|
23
|
-
[:paragraph, "# Getting Started with YARD", 3]]
|
24
|
-
)
|
25
|
-
end
|
26
|
-
|
27
|
-
it "ignores markup line" do
|
28
|
-
text = <<-eot
|
29
|
-
#!markdown
|
30
|
-
# @title Getting Started Guide
|
31
|
-
|
32
|
-
# Getting Started with YARD
|
33
|
-
eot
|
34
|
-
expect(extract_messages(text, :have_header => true)).to eq(
|
35
|
-
[[:attribute, "title", "Getting Started Guide", 2],
|
36
|
-
[:paragraph, "# Getting Started with YARD", 4]]
|
37
|
-
)
|
38
|
-
end
|
39
|
-
|
40
|
-
it "terminates header block by markup line not at the first line" do
|
41
|
-
text = <<-eot
|
42
|
-
# @title Getting Started Guide
|
43
|
-
#!markdown
|
44
|
-
|
45
|
-
# Getting Started with YARD
|
46
|
-
eot
|
47
|
-
expect(extract_messages(text, :have_header => true)).to eq(
|
48
|
-
[[:attribute, "title", "Getting Started Guide", 1],
|
49
|
-
[:paragraph, "#!markdown", 2],
|
50
|
-
[:paragraph, "# Getting Started with YARD", 4]]
|
51
|
-
)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe "Body" do
|
56
|
-
it "splits to paragraphs" do
|
57
|
-
paragraph1 = <<-eop.strip
|
58
|
-
Note that class methods must not be referred to with the "::" namespace
|
59
|
-
separator. Only modules, classes and constants should use "::".
|
60
|
-
eop
|
61
|
-
paragraph2 = <<-eop.strip
|
62
|
-
You can also do lookups on any installed gems. Just make sure to build the
|
63
|
-
.yardoc databases for installed gems with:
|
64
|
-
eop
|
65
|
-
text = <<-eot
|
66
|
-
#{paragraph1}
|
67
|
-
|
68
|
-
#{paragraph2}
|
69
|
-
eot
|
70
|
-
expect(extract_messages(text)).to eq(
|
71
|
-
[[:paragraph, paragraph1, 1],
|
72
|
-
[:paragraph, paragraph2, 4]]
|
73
|
-
)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
describe "#translate" do
|
79
|
-
def locale
|
80
|
-
locale = YARD::I18n::Locale.new("fr")
|
81
|
-
messages = locale.instance_variable_get(:@messages)
|
82
|
-
messages["markdown"] = "markdown (markdown in fr)"
|
83
|
-
messages["Hello"] = "Bonjour (Hello in fr)"
|
84
|
-
messages["Paragraph 1."] = "Paragraphe 1."
|
85
|
-
messages["Paragraph 2."] = "Paragraphe 2."
|
86
|
-
locale
|
87
|
-
end
|
88
|
-
|
89
|
-
def translate(input, options = {})
|
90
|
-
text = YARD::I18n::Text.new(StringIO.new(input), options)
|
91
|
-
text.translate(locale)
|
92
|
-
end
|
93
|
-
|
94
|
-
describe "Header" do
|
95
|
-
it "extracts at attribute" do
|
96
|
-
text = <<-eot
|
97
|
-
# @title Hello
|
98
|
-
|
99
|
-
# Getting Started with YARD
|
100
|
-
|
101
|
-
Paragraph.
|
102
|
-
eot
|
103
|
-
expect(translate(text, :have_header => true)).to eq <<-eot
|
104
|
-
# @title Bonjour (Hello in fr)
|
105
|
-
|
106
|
-
# Getting Started with YARD
|
107
|
-
|
108
|
-
Paragraph.
|
109
|
-
eot
|
110
|
-
end
|
111
|
-
|
112
|
-
it "ignores markup line" do
|
113
|
-
text = <<-eot
|
114
|
-
#!markdown
|
115
|
-
# @title Hello
|
116
|
-
|
117
|
-
# Getting Started with YARD
|
118
|
-
|
119
|
-
Paragraph.
|
120
|
-
eot
|
121
|
-
expect(translate(text, :have_header => true)).to eq <<-eot
|
122
|
-
#!markdown
|
123
|
-
# @title Bonjour (Hello in fr)
|
124
|
-
|
125
|
-
# Getting Started with YARD
|
126
|
-
|
127
|
-
Paragraph.
|
128
|
-
eot
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
describe "Body" do
|
133
|
-
it "splits to paragraphs" do
|
134
|
-
paragraph1 = <<-eop.strip
|
135
|
-
Paragraph 1.
|
136
|
-
eop
|
137
|
-
paragraph2 = <<-eop.strip
|
138
|
-
Paragraph 2.
|
139
|
-
eop
|
140
|
-
text = <<-eot
|
141
|
-
#{paragraph1}
|
142
|
-
|
143
|
-
#{paragraph2}
|
144
|
-
eot
|
145
|
-
expect(translate(text)).to eq <<-eot
|
146
|
-
Paragraphe 1.
|
147
|
-
|
148
|
-
Paragraphe 2.
|
149
|
-
eot
|
150
|
-
end
|
151
|
-
|
152
|
-
it "does not modify non-translated message" do
|
153
|
-
nonexistent_paragraph = <<-eop.strip
|
154
|
-
Nonexsitent paragraph.
|
155
|
-
eop
|
156
|
-
text = <<-eot
|
157
|
-
#{nonexistent_paragraph}
|
158
|
-
eot
|
159
|
-
expect(translate(text)).to eq <<-eot
|
160
|
-
#{nonexistent_paragraph}
|
161
|
-
eot
|
162
|
-
end
|
163
|
-
|
164
|
-
it "keeps empty lines" do
|
165
|
-
text = <<-eot
|
166
|
-
Paragraph 1.
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
Paragraph 2.
|
172
|
-
eot
|
173
|
-
expect(translate(text)).to eq <<-eot
|
174
|
-
Paragraphe 1.
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
Paragraphe 2.
|
180
|
-
eot
|
181
|
-
end
|
182
|
-
end
|
183
|
-
end
|
184
|
-
end
|
data/spec/logging_spec.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe YARD::Logger do
|
4
|
-
describe "#show_backtraces" do
|
5
|
-
it "is true if debug level is on" do
|
6
|
-
log.show_backtraces = true
|
7
|
-
log.enter_level(Logger::DEBUG) do
|
8
|
-
log.show_backtraces = false
|
9
|
-
expect(log.show_backtraces).to be true
|
10
|
-
end
|
11
|
-
expect(log.show_backtraces).to be false
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "#backtrace" do
|
16
|
-
before { log.show_backtraces = true }
|
17
|
-
after { log.show_backtraces = false }
|
18
|
-
|
19
|
-
it "logs backtrace in error by default" do
|
20
|
-
expect(log).to receive(:error).with("RuntimeError: foo")
|
21
|
-
expect(log).to receive(:error).with("Stack trace:\n\tline1\n\tline2\n")
|
22
|
-
exc = RuntimeError.new("foo")
|
23
|
-
exc.set_backtrace(['line1', 'line2'])
|
24
|
-
log.enter_level(Logger::INFO) { log.backtrace(exc) }
|
25
|
-
end
|
26
|
-
|
27
|
-
it "allows backtrace to be entered in other modes" do
|
28
|
-
expect(log).to receive(:warn).with("RuntimeError: foo")
|
29
|
-
expect(log).to receive(:warn).with("Stack trace:\n\tline1\n\tline2\n")
|
30
|
-
exc = RuntimeError.new("foo")
|
31
|
-
exc.set_backtrace(['line1', 'line2'])
|
32
|
-
log.enter_level(Logger::INFO) { log.backtrace(exc, :warn) }
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '#warn' do
|
37
|
-
before { log.warned = false }
|
38
|
-
after { log.warned = false }
|
39
|
-
|
40
|
-
it 'changes #warned from false to true' do
|
41
|
-
expect { log.warn('message') }.to change(log, :warned).from(false).to(true)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
data/spec/options_spec.rb
DELETED
@@ -1,171 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.describe YARD::Options do
|
4
|
-
class FooOptions < YARD::Options
|
5
|
-
attr_accessor :foo
|
6
|
-
def initialize; self.foo = "abc" end
|
7
|
-
end
|
8
|
-
|
9
|
-
describe ".default_attr" do
|
10
|
-
it "allows default attributes to be defined with symbols" do
|
11
|
-
class DefaultOptions1 < YARD::Options
|
12
|
-
default_attr :foo, 'HELLO'
|
13
|
-
end
|
14
|
-
o = DefaultOptions1.new
|
15
|
-
o.reset_defaults
|
16
|
-
expect(o.foo).to eq 'HELLO'
|
17
|
-
end
|
18
|
-
|
19
|
-
it "calls lambda if value is a Proc" do
|
20
|
-
class DefaultOptions2 < YARD::Options
|
21
|
-
default_attr :foo, lambda { 100 }
|
22
|
-
end
|
23
|
-
o = DefaultOptions2.new
|
24
|
-
o.reset_defaults
|
25
|
-
expect(o.foo).to eq 100
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "#reset_defaults" do
|
30
|
-
it "does not define defaults until reset is called" do
|
31
|
-
class ResetDefaultOptions1 < YARD::Options
|
32
|
-
default_attr :foo, 'FOO'
|
33
|
-
end
|
34
|
-
expect(ResetDefaultOptions1.new.foo).to be nil
|
35
|
-
o = ResetDefaultOptions1.new
|
36
|
-
o.reset_defaults
|
37
|
-
expect(o.foo).to eq 'FOO'
|
38
|
-
end
|
39
|
-
|
40
|
-
it "uses defaults from superclass as well" do
|
41
|
-
class ResetDefaultOptions2 < YARD::Options
|
42
|
-
default_attr :foo, 'FOO'
|
43
|
-
end
|
44
|
-
class ResetDefaultOptions3 < ResetDefaultOptions2
|
45
|
-
end
|
46
|
-
o = ResetDefaultOptions3.new
|
47
|
-
o.reset_defaults
|
48
|
-
expect(o.foo).to eq 'FOO'
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
describe "#delete" do
|
53
|
-
it "deletes an option" do
|
54
|
-
o = FooOptions.new
|
55
|
-
o.delete(:foo)
|
56
|
-
expect(o.to_hash).to eq({})
|
57
|
-
end
|
58
|
-
|
59
|
-
it "does not error if an option is deleted that does not exist" do
|
60
|
-
o = FooOptions.new
|
61
|
-
o.delete(:foo)
|
62
|
-
o.delete(:foo)
|
63
|
-
expect(o.to_hash).to eq({})
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe "#[]" do
|
68
|
-
it "handles getting option values using hash syntax" do
|
69
|
-
expect(FooOptions.new[:foo]).to eq "abc"
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
describe "#[]=" do
|
74
|
-
it "handles setting options using hash syntax" do
|
75
|
-
o = FooOptions.new
|
76
|
-
o[:foo] = "xyz"
|
77
|
-
expect(o[:foo]).to eq "xyz"
|
78
|
-
end
|
79
|
-
|
80
|
-
it "allows setting of unregistered keys" do
|
81
|
-
o = FooOptions.new
|
82
|
-
o[:bar] = "foo"
|
83
|
-
expect(o[:bar]).to eq "foo"
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
describe "#method_missing" do
|
88
|
-
it "allows setting of unregistered keys" do
|
89
|
-
o = FooOptions.new
|
90
|
-
o.bar = 'foo'
|
91
|
-
expect(o.bar).to eq 'foo'
|
92
|
-
end
|
93
|
-
|
94
|
-
it "allows getting values of unregistered keys (return nil)" do
|
95
|
-
expect(FooOptions.new.bar).to be nil
|
96
|
-
end
|
97
|
-
|
98
|
-
it "prints debugging messages about unregistered keys" do
|
99
|
-
expect(log).to receive(:debug).with("Attempting to access unregistered key bar on FooOptions")
|
100
|
-
FooOptions.new.bar
|
101
|
-
expect(log).to receive(:debug).with("Attempting to set unregistered key bar on FooOptions")
|
102
|
-
FooOptions.new.bar = 1
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
describe "#update" do
|
107
|
-
it "allows updating of options" do
|
108
|
-
expect(FooOptions.new.update(:foo => "xyz").foo).to eq "xyz"
|
109
|
-
end
|
110
|
-
|
111
|
-
it "does not ignore keys with no setter (OpenStruct behaviour)" do
|
112
|
-
o = FooOptions.new
|
113
|
-
o.update(:bar => "xyz")
|
114
|
-
expect(o.to_hash).to eq(:foo => "abc", :bar => "xyz")
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
describe "#merge" do
|
119
|
-
it "updates a new object" do
|
120
|
-
o = FooOptions.new
|
121
|
-
expect(o.merge(:foo => "xyz").object_id).not_to eq o.object_id
|
122
|
-
expect(o.merge(:foo => "xyz").to_hash).to eq(:foo => "xyz")
|
123
|
-
end
|
124
|
-
|
125
|
-
it "adds in values from original object" do
|
126
|
-
o = FooOptions.new
|
127
|
-
o.update(:bar => "foo")
|
128
|
-
expect(o.merge(:baz => 1).to_hash).to eq(:foo => "abc", :bar => "foo", :baz => 1)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
|
132
|
-
describe "#to_hash" do
|
133
|
-
it "converts all instance variables and symbolized keys" do
|
134
|
-
class ToHashOptions1 < YARD::Options
|
135
|
-
attr_accessor :foo, :bar, :baz
|
136
|
-
def initialize; @foo = 1; @bar = 2; @baz = "hello" end
|
137
|
-
end
|
138
|
-
o = ToHashOptions1.new
|
139
|
-
hash = o.to_hash
|
140
|
-
expect(hash.keys).to include(:foo, :bar, :baz)
|
141
|
-
expect(hash[:foo]).to eq 1
|
142
|
-
expect(hash[:bar]).to eq 2
|
143
|
-
expect(hash[:baz]).to eq "hello"
|
144
|
-
end
|
145
|
-
|
146
|
-
it "uses accessor when converting values to hash" do
|
147
|
-
class ToHashOptions2 < YARD::Options
|
148
|
-
def initialize; @foo = 1 end
|
149
|
-
def foo; "HELLO#{@foo}" end
|
150
|
-
end
|
151
|
-
o = ToHashOptions2.new
|
152
|
-
expect(o.to_hash).to eq(:foo => "HELLO1")
|
153
|
-
end
|
154
|
-
|
155
|
-
it "ignores ivars with no accessor" do
|
156
|
-
class ToHashOptions3 < YARD::Options
|
157
|
-
attr_accessor :foo
|
158
|
-
def initialize; @foo = 1; @bar = "NOIGNORE" end
|
159
|
-
end
|
160
|
-
o = ToHashOptions3.new
|
161
|
-
expect(o.to_hash).to eq(:foo => 1, :bar => "NOIGNORE")
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
describe "#tap" do
|
166
|
-
it "supports #tap(&block) (even in 1.8.6)" do
|
167
|
-
o = FooOptions.new.tap {|obj| obj.foo = :BAR }
|
168
|
-
expect(o.to_hash).to eq(:foo => :BAR)
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|