yard-sorbet 0.8.1 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/yard-sorbet/directives.rb +1 -3
- data/lib/yard-sorbet/handlers/abstract_dsl_handler.rb +2 -2
- data/lib/yard-sorbet/handlers/enums_handler.rb +1 -3
- data/lib/yard-sorbet/handlers/mixes_in_class_methods_handler.rb +1 -3
- data/lib/yard-sorbet/handlers/sig_handler.rb +3 -5
- data/lib/yard-sorbet/handlers/struct_prop_handler.rb +4 -10
- data/lib/yard-sorbet/node_utils.rb +17 -9
- data/lib/yard-sorbet/sig_to_yard.rb +6 -9
- data/lib/yard-sorbet/tag_utils.rb +1 -3
- data/lib/yard-sorbet/version.rb +1 -1
- metadata +8 -176
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1421bf5c36984eb95f6d05e83900bdc9599a052fa51edb2939cf9dc656f5722b
|
4
|
+
data.tar.gz: 3922ad972509e1bfb185903ff40dfce5952fca881ea4196f7c8c2f37a572ae24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a7531bf6292ee4d37d5257ce851d62a9738c8f9319595f5c638b30e9a0cb324980b5fa3608b6b45da1e7fa9940323e7e31cbab9621957e8b0addab86020f11c
|
7
|
+
data.tar.gz: 365dac401f8792a0841496ccb07a3b08ee5d88d5f1de29a38312094eddc659f6fc6b9b087032e11fa862a482c6d30dc2069244aa060719eb81666d5358b7d5d3
|
@@ -18,8 +18,6 @@ module YARDSorbet
|
|
18
18
|
end
|
19
19
|
|
20
20
|
sig { params(docstring: String, directives: T::Array[String]).void }
|
21
|
-
def self.add_directives(docstring, directives)
|
22
|
-
directives.each { docstring.concat("\n#{_1}") }
|
23
|
-
end
|
21
|
+
def self.add_directives(docstring, directives) = directives.each { docstring.concat("\n#{_1}") }
|
24
22
|
end
|
25
23
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
module YARDSorbet
|
5
5
|
module Handlers
|
6
|
-
#
|
6
|
+
# Applies an `@abstract` tag to `abstract!`/`interface!` modules (if not alerady present).
|
7
7
|
class AbstractDSLHandler < YARD::Handlers::Ruby::Base
|
8
8
|
extend T::Sig
|
9
9
|
|
@@ -15,7 +15,7 @@ module YARDSorbet
|
|
15
15
|
# The `@abstract` tag template
|
16
16
|
TAG_TEXT = 'Subclasses must implement the `abstract` methods below.'
|
17
17
|
# Extra text for class namespaces
|
18
|
-
CLASS_TAG_TEXT = T.let("It cannot be directly instantiated. #{TAG_TEXT}", String)
|
18
|
+
CLASS_TAG_TEXT = T.let("It cannot be directly instantiated. #{TAG_TEXT}".freeze, String)
|
19
19
|
|
20
20
|
sig { void }
|
21
21
|
def process
|
@@ -26,9 +26,7 @@ module YARDSorbet
|
|
26
26
|
private
|
27
27
|
|
28
28
|
sig { params(node: YARD::Parser::Ruby::AstNode).returns(T::Boolean) }
|
29
|
-
def const_assign_node?(node)
|
30
|
-
node.type == :assign && node[0][0].type == :const
|
31
|
-
end
|
29
|
+
def const_assign_node?(node) = node.type == :assign && node[0][0].type == :const
|
32
30
|
end
|
33
31
|
end
|
34
32
|
end
|
@@ -15,9 +15,7 @@ module YARDSorbet
|
|
15
15
|
@@mix_in_class_methods = T.let({}, T::Hash[String, T::Array[String]]) # rubocop:disable Style/ClassVars
|
16
16
|
|
17
17
|
sig { params(code_obj: String).returns(T.nilable(T::Array[String])) }
|
18
|
-
def self.mixed_in_class_methods(code_obj)
|
19
|
-
@@mix_in_class_methods[code_obj]
|
20
|
-
end
|
18
|
+
def self.mixed_in_class_methods(code_obj) = @@mix_in_class_methods[code_obj]
|
21
19
|
|
22
20
|
sig { void }
|
23
21
|
def process
|
@@ -64,21 +64,19 @@ module YARDSorbet
|
|
64
64
|
attrs = namespace.attributes[scope][names[0]]
|
65
65
|
return false if attrs.nil? || attrs.empty?
|
66
66
|
|
67
|
-
|
67
|
+
document_attrs(attrs.values.compact)
|
68
68
|
attr_node.docstring = nil
|
69
69
|
true
|
70
70
|
end
|
71
71
|
|
72
72
|
sig { params(method_objects: T::Array[YARD::CodeObjects::MethodObject]).void }
|
73
|
-
def
|
74
|
-
method_objects.each { parse_node(_1, _1.docstring, include_params: false) }
|
75
|
-
end
|
73
|
+
def document_attrs(method_objects) = method_objects.each { parse_node(_1, _1.docstring, include_params: false) }
|
76
74
|
|
77
75
|
sig { params(attach_to: Documentable, docstring: T.nilable(String), include_params: T::Boolean).void }
|
78
76
|
def parse_node(attach_to, docstring, include_params: true)
|
79
77
|
existing_docstring = docstring.is_a?(YARD::Docstring)
|
80
78
|
docstring, directives = Directives.extract_directives(docstring) unless existing_docstring
|
81
|
-
parse_sig(docstring, include_params:
|
79
|
+
parse_sig(docstring, include_params:)
|
82
80
|
attach_to.docstring = docstring.to_raw
|
83
81
|
Directives.add_directives(attach_to.docstring, directives) unless existing_docstring
|
84
82
|
end
|
@@ -35,15 +35,11 @@ module YARDSorbet
|
|
35
35
|
end
|
36
36
|
|
37
37
|
sig { returns(T::Boolean) }
|
38
|
-
def immutable?
|
39
|
-
statement.method_name(true) == :const || kw_arg('immutable:') == 'true'
|
40
|
-
end
|
38
|
+
def immutable? = statement.method_name(true) == :const || kw_arg('immutable:') == 'true'
|
41
39
|
|
42
40
|
# @return the value passed to the keyword argument, or nil
|
43
41
|
sig { params(kwd: String).returns(T.nilable(String)) }
|
44
|
-
def kw_arg(kwd)
|
45
|
-
params[2]&.find { _1[0].source == kwd }&.[](1)&.source
|
46
|
-
end
|
42
|
+
def kw_arg(kwd) = params[2]&.find { _1[0].source == kwd }&.[](1)&.source
|
47
43
|
|
48
44
|
sig { params(name: String).returns(TStructProp) }
|
49
45
|
def make_prop(name)
|
@@ -57,16 +53,14 @@ module YARDSorbet
|
|
57
53
|
end
|
58
54
|
|
59
55
|
sig { returns(T::Array[YARD::Parser::Ruby::AstNode]) }
|
60
|
-
def params
|
61
|
-
@params ||= T.let(statement.parameters(false), T.nilable(T::Array[YARD::Parser::Ruby::AstNode]))
|
62
|
-
end
|
56
|
+
def params = @params ||= T.let(statement.parameters(false), T.nilable(T::Array[YARD::Parser::Ruby::AstNode]))
|
63
57
|
|
64
58
|
# Register the field explicitly as an attribute.
|
65
59
|
sig { params(object: YARD::CodeObjects::MethodObject, name: String).void }
|
66
60
|
def register_attrs(object, name)
|
67
61
|
write = immutable? ? nil : object
|
68
62
|
# Create the virtual attribute in our current scope
|
69
|
-
namespace.attributes[scope][name] ||= SymbolHash[read: object, write:
|
63
|
+
namespace.attributes[scope][name] ||= SymbolHash[read: object, write:]
|
70
64
|
end
|
71
65
|
|
72
66
|
# Store the prop for use in the constructor definition
|
@@ -19,25 +19,33 @@ module YARDSorbet
|
|
19
19
|
# @yield [YARD::Parser::Ruby::AstNode]
|
20
20
|
sig { params(node: YARD::Parser::Ruby::AstNode, _blk: T.proc.params(n: YARD::Parser::Ruby::AstNode).void).void }
|
21
21
|
def self.bfs_traverse(node, &_blk)
|
22
|
-
queue =
|
22
|
+
queue = Queue.new << node
|
23
23
|
until queue.empty?
|
24
|
-
n =
|
24
|
+
n = queue.deq(true)
|
25
25
|
yield n
|
26
|
-
n
|
27
|
-
queue.pop if n.is_a?(YARD::Parser::Ruby::MethodCallNode) && SKIP_METHOD_CONTENTS.include?(n.method_name(true))
|
26
|
+
enqueue_children(queue, n)
|
28
27
|
end
|
29
28
|
end
|
30
29
|
|
31
30
|
sig { params(node: YARD::Parser::Ruby::AstNode).void }
|
32
|
-
def self.delete_node(node)
|
33
|
-
|
31
|
+
def self.delete_node(node) = node.parent.children.delete(node)
|
32
|
+
|
33
|
+
# Enqueue the eligible children of a node in the BFS queue
|
34
|
+
sig { params(queue: Queue, node: YARD::Parser::Ruby::AstNode).void }
|
35
|
+
def self.enqueue_children(queue, node)
|
36
|
+
last_child = node.children.last
|
37
|
+
node.children.each do |child|
|
38
|
+
next if child == last_child &&
|
39
|
+
node.is_a?(YARD::Parser::Ruby::MethodCallNode) &&
|
40
|
+
SKIP_METHOD_CONTENTS.include?(node.method_name(true))
|
41
|
+
|
42
|
+
queue.enq(child)
|
43
|
+
end
|
34
44
|
end
|
35
45
|
|
36
46
|
# Gets the node that a sorbet `sig` can be attached do, bypassing visisbility modifiers and the like
|
37
47
|
sig { params(node: YARD::Parser::Ruby::AstNode).returns(SigableNode) }
|
38
|
-
def self.get_method_node(node)
|
39
|
-
sigable_node?(node) ? node : node.jump(:def, :defs)
|
40
|
-
end
|
48
|
+
def self.get_method_node(node) = sigable_node?(node) ? node : node.jump(:def, :defs)
|
41
49
|
|
42
50
|
# Find and return the adjacent node (ascending)
|
43
51
|
# @raise [IndexError] if the node does not have an adjacent sibling (ascending)
|
@@ -10,8 +10,8 @@ module YARDSorbet
|
|
10
10
|
# Map of common types to YARD conventions (in order to reduce allocations)
|
11
11
|
REF_TYPES = T.let({
|
12
12
|
'T::Boolean' => ['Boolean'].freeze, # YARD convention for booleans
|
13
|
-
# YARD convention is use singleton objects when applicable:
|
14
|
-
# https://www.rubydoc.info/gems/yard/file/docs/Tags.md#
|
13
|
+
# YARD convention is to use singleton objects when applicable:
|
14
|
+
# https://www.rubydoc.info/gems/yard/file/docs/Tags.md#literals
|
15
15
|
'FalseClass' => ['false'].freeze,
|
16
16
|
'NilClass' => ['nil'].freeze,
|
17
17
|
'TrueClass' => ['true'].freeze
|
@@ -20,10 +20,7 @@ module YARDSorbet
|
|
20
20
|
|
21
21
|
# @see https://yardoc.org/types.html
|
22
22
|
sig { params(node: YARD::Parser::Ruby::AstNode).returns(T::Array[String]) }
|
23
|
-
def convert(node)
|
24
|
-
# scrub newlines, as they break the YARD parser
|
25
|
-
convert_node(node).map { _1.gsub(/\n\s*/, ' ') }
|
26
|
-
end
|
23
|
+
def convert(node) = convert_node(node).map { _1.gsub(/\n\s*/, ' ') }
|
27
24
|
|
28
25
|
private
|
29
26
|
|
@@ -68,7 +65,7 @@ module YARDSorbet
|
|
68
65
|
|
69
66
|
sig { params(node: YARD::Parser::Ruby::AstNode).returns(T::Array[String]) }
|
70
67
|
def convert_aref(node)
|
71
|
-
# https://www.rubydoc.info/gems/yard/file/docs/Tags.md#
|
68
|
+
# https://www.rubydoc.info/gems/yard/file/docs/Tags.md#parametrized-types
|
72
69
|
case node.first.source
|
73
70
|
when 'T::Array', 'T::Enumerable', 'T::Range', 'T::Set' then convert_collection(node)
|
74
71
|
when 'T::Hash' then convert_hash(node)
|
@@ -80,10 +77,10 @@ module YARDSorbet
|
|
80
77
|
|
81
78
|
sig { params(node: YARD::Parser::Ruby::AstNode).returns([String]) }
|
82
79
|
def convert_array(node)
|
83
|
-
# https://www.rubydoc.info/gems/yard/file/docs/Tags.md#
|
80
|
+
# https://www.rubydoc.info/gems/yard/file/docs/Tags.md#order-dependent-lists
|
84
81
|
member_types = node.first.children.map { convert_node(_1) }
|
85
82
|
sequence = member_types.map { _1.size == 1 ? _1[0] : _1.to_s.tr('"', '') }.join(', ')
|
86
|
-
["Array(#{sequence})"]
|
83
|
+
["Array<(#{sequence})>"]
|
87
84
|
end
|
88
85
|
|
89
86
|
sig { params(node: YARD::Parser::Ruby::AstNode).returns([String]) }
|
@@ -13,9 +13,7 @@ module YARDSorbet
|
|
13
13
|
sig do
|
14
14
|
params(docstring: YARD::Docstring, tag_name: String, name: T.nilable(String)).returns(T.nilable(YARD::Tags::Tag))
|
15
15
|
end
|
16
|
-
def self.find_tag(docstring, tag_name, name)
|
17
|
-
docstring.tags.find { _1.tag_name == tag_name && _1.name == name }
|
18
|
-
end
|
16
|
+
def self.find_tag(docstring, tag_name, name) = docstring.tags.find { _1.tag_name == tag_name && _1.name == name }
|
19
17
|
|
20
18
|
# Create or update a `YARD` tag with type information
|
21
19
|
sig do
|
data/lib/yard-sorbet/version.rb
CHANGED
metadata
CHANGED
@@ -1,211 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yard-sorbet
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Douglas Eichelberger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: bundler-audit
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.9.1
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.9.1
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: codecov
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.6.0
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.6.0
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rake
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '13.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '13.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: redcarpet
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '3.5'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '3.5'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rspec
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '3.10'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '3.10'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rubocop
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 1.49.0
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: 1.49.0
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rubocop-performance
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: 1.16.0
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 1.16.0
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rubocop-rake
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: 0.6.0
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: 0.6.0
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rubocop-rspec
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 2.19.0
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: 2.19.0
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: rubocop-sorbet
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: 0.7.0
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - "~>"
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: 0.7.0
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: sorbet
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - "~>"
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: 0.5.9204
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - "~>"
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: 0.5.9204
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: tapioca
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: 0.11.1
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: 0.11.1
|
181
13
|
- !ruby/object:Gem::Dependency
|
182
14
|
name: sorbet-runtime
|
183
15
|
requirement: !ruby/object:Gem::Requirement
|
184
16
|
requirements:
|
185
17
|
- - ">="
|
186
18
|
- !ruby/object:Gem::Version
|
187
|
-
version: '0
|
19
|
+
version: '0'
|
188
20
|
type: :runtime
|
189
21
|
prerelease: false
|
190
22
|
version_requirements: !ruby/object:Gem::Requirement
|
191
23
|
requirements:
|
192
24
|
- - ">="
|
193
25
|
- !ruby/object:Gem::Version
|
194
|
-
version: '0
|
26
|
+
version: '0'
|
195
27
|
- !ruby/object:Gem::Dependency
|
196
28
|
name: yard
|
197
29
|
requirement: !ruby/object:Gem::Requirement
|
198
30
|
requirements:
|
199
31
|
- - ">="
|
200
32
|
- !ruby/object:Gem::Version
|
201
|
-
version: '0
|
33
|
+
version: '0'
|
202
34
|
type: :runtime
|
203
35
|
prerelease: false
|
204
36
|
version_requirements: !ruby/object:Gem::Requirement
|
205
37
|
requirements:
|
206
38
|
- - ">="
|
207
39
|
- !ruby/object:Gem::Version
|
208
|
-
version: '0
|
40
|
+
version: '0'
|
209
41
|
description: A YARD plugin that incorporates Sorbet type information
|
210
42
|
email: dduugg@gmail.com
|
211
43
|
executables: []
|
@@ -248,14 +80,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
248
80
|
requirements:
|
249
81
|
- - ">="
|
250
82
|
- !ruby/object:Gem::Version
|
251
|
-
version:
|
83
|
+
version: '3.1'
|
252
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
253
85
|
requirements:
|
254
86
|
- - ">="
|
255
87
|
- !ruby/object:Gem::Version
|
256
88
|
version: '0'
|
257
89
|
requirements: []
|
258
|
-
rubygems_version: 3.
|
90
|
+
rubygems_version: 3.3.7
|
259
91
|
signing_key:
|
260
92
|
specification_version: 4
|
261
93
|
summary: Create YARD docs from Sorbet type signatures
|