decode 0.15.4 → 0.17.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +4 -0
- data/lib/decode/comment/node.rb +8 -0
- data/lib/decode/comment/pragma.rb +6 -4
- data/lib/decode/comment/tag.rb +5 -1
- data/lib/decode/definition.rb +3 -3
- data/lib/decode/documentation.rb +1 -0
- data/lib/decode/language/generic.rb +52 -7
- data/lib/decode/language/ruby/generic.rb +48 -0
- data/lib/decode/language/ruby/module.rb +1 -1
- data/lib/decode/language/ruby/parser.rb +28 -15
- data/lib/decode/language/ruby.rb +3 -67
- data/lib/decode/languages.rb +1 -1
- data/lib/decode/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +33 -4
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7d6009f4ff23fb9cceecfe8d661848867bfd1528f31fa99a45aa52f7fb5d4f8
|
4
|
+
data.tar.gz: d9ddb59b516d3b8306ff6dc6dddbc1263c9761e1ae4a2cf187040442f6865299
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 592f7031ec864569dad6001f919e65990cea614278ad12f3479491df39a422b4c0a3f9f7dcc197b6c03d113fee8438e6606b1a624343ac0ae4ea76f36a43a792
|
7
|
+
data.tar.gz: 561e6b926e5b3ab9ef258b0fe915d4758f64514f1512a6f5f2b155327e601bf10022a819d7b307ffa4e31a8884d7635fdc5fd40606deb6f5c775835cd0b6f423
|
checksums.yaml.gz.sig
ADDED
data/lib/decode/comment/node.rb
CHANGED
@@ -54,6 +54,14 @@ module Decode
|
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
|
+
def filter(klass)
|
58
|
+
return to_enum(:filter, klass) unless block_given?
|
59
|
+
|
60
|
+
@children&.each do |child|
|
61
|
+
yield child if child.is_a?(klass)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
57
65
|
# Any lines of text associated wtih this node.
|
58
66
|
# @returns [Array(String) | Nil] The lines of text.
|
59
67
|
def text
|
@@ -30,13 +30,15 @@ module Decode
|
|
30
30
|
# - `@asynchronous This method may yield.`
|
31
31
|
#
|
32
32
|
class Pragma < Tag
|
33
|
-
|
33
|
+
def self.parse(directive, text, lines, tags, level = 0)
|
34
|
+
self.build(directive, text)
|
35
|
+
end
|
34
36
|
|
35
|
-
def self.build(directive,
|
37
|
+
def self.build(directive, text)
|
36
38
|
node = self.new(directive)
|
37
39
|
|
38
|
-
if
|
39
|
-
node.add(Text.new(
|
40
|
+
if text
|
41
|
+
node.add(Text.new(text))
|
40
42
|
end
|
41
43
|
|
42
44
|
return node
|
data/lib/decode/comment/tag.rb
CHANGED
@@ -23,8 +23,12 @@ require_relative 'node'
|
|
23
23
|
module Decode
|
24
24
|
module Comment
|
25
25
|
class Tag < Node
|
26
|
+
def self.match(text)
|
27
|
+
self::PATTERN.match(text)
|
28
|
+
end
|
29
|
+
|
26
30
|
def self.parse(directive, text, lines, tags, level = 0)
|
27
|
-
if match = self
|
31
|
+
if match = self.match(text)
|
28
32
|
node = self.build(directive, match)
|
29
33
|
|
30
34
|
tags.parse(lines, level + 1) do |child|
|
data/lib/decode/definition.rb
CHANGED
@@ -29,13 +29,13 @@ module Decode
|
|
29
29
|
def initialize(name, parent: nil, language: parent.language, comments: nil)
|
30
30
|
@name = name
|
31
31
|
|
32
|
-
@comments = comments
|
33
|
-
@language = language
|
34
32
|
@parent = parent
|
33
|
+
@language = language
|
34
|
+
|
35
|
+
@comments = comments
|
35
36
|
|
36
37
|
@path = nil
|
37
38
|
@qualified_name = nil
|
38
|
-
@documentation = nil
|
39
39
|
end
|
40
40
|
|
41
41
|
def to_s
|
data/lib/decode/documentation.rb
CHANGED
@@ -19,32 +19,77 @@
|
|
19
19
|
# THE SOFTWARE.
|
20
20
|
|
21
21
|
require_relative 'reference'
|
22
|
+
require_relative '../documentation'
|
22
23
|
|
23
24
|
module Decode
|
24
25
|
module Language
|
25
26
|
# The Ruby language.
|
26
27
|
class Generic
|
27
|
-
|
28
|
+
EXTENSIONS = []
|
29
|
+
|
30
|
+
TAGS = Comment::Tags.build do |tags|
|
31
|
+
tags['attribute'] = Comment::Attribute
|
32
|
+
tags['parameter'] = Comment::Parameter
|
33
|
+
tags['yields'] = Comment::Yields
|
34
|
+
tags['returns'] = Comment::Returns
|
35
|
+
tags['raises'] = Comment::Raises
|
36
|
+
tags['throws'] = Comment::Throws
|
37
|
+
|
38
|
+
tags['deprecated'] = Comment::Pragma
|
39
|
+
|
40
|
+
tags['asynchronous'] = Comment::Pragma
|
41
|
+
|
42
|
+
tags['public'] = Comment::Pragma
|
43
|
+
tags['private'] = Comment::Pragma
|
44
|
+
end
|
45
|
+
|
46
|
+
def initialize(name, extensions: self.class::EXTENSIONS, tags: self.class::TAGS)
|
28
47
|
@name = name
|
48
|
+
@extensions = extensions
|
49
|
+
@tags = tags
|
29
50
|
end
|
30
51
|
|
31
52
|
attr :name
|
32
53
|
|
33
|
-
|
54
|
+
def names
|
55
|
+
[@name]
|
56
|
+
end
|
57
|
+
|
58
|
+
attr :extensions
|
59
|
+
|
60
|
+
attr :tags
|
61
|
+
|
62
|
+
# Generate a language-specific reference.
|
63
|
+
# @parameter identifier [String] A valid identifier.
|
34
64
|
def reference_for(identifier)
|
35
65
|
Reference.new(identifier, self)
|
36
66
|
end
|
37
67
|
|
68
|
+
def parser
|
69
|
+
nil
|
70
|
+
end
|
71
|
+
|
38
72
|
# Parse the input yielding definitions.
|
39
|
-
# @
|
40
|
-
# @
|
73
|
+
# @parameter input [File] The input file which contains the source code.
|
74
|
+
# @yields {|definition| ...} Receives the definitions extracted from the source code.
|
75
|
+
# @parameter definition [Definition] The source code definition including methods, classes, etc.
|
76
|
+
# @returns [Enumerator(Segment)] If no block given.
|
41
77
|
def definitions_for(input, &block)
|
78
|
+
if parser = self.parser
|
79
|
+
parser.definitions_for(input, &block)
|
80
|
+
end
|
42
81
|
end
|
43
82
|
|
44
|
-
# Parse the input yielding
|
45
|
-
#
|
46
|
-
# @
|
83
|
+
# Parse the input yielding segments.
|
84
|
+
# Segments are constructed from a block of top level comments followed by a block of code.
|
85
|
+
# @parameter input [File] The input file which contains the source code.
|
86
|
+
# @yields {|segment| ...}
|
87
|
+
# @parameter segment [Segment]
|
88
|
+
# @returns [Enumerator(Segment)] If no block given.
|
47
89
|
def segments_for(input, &block)
|
90
|
+
if parser = self.parser
|
91
|
+
parser.segments_for(input, &block)
|
92
|
+
end
|
48
93
|
end
|
49
94
|
end
|
50
95
|
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Copyright, 2020, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
8
|
+
# furnished to do so, subject to the following conditions:
|
9
|
+
#
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
11
|
+
# all copies or substantial portions of the Software.
|
12
|
+
#
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
# THE SOFTWARE.
|
20
|
+
|
21
|
+
require_relative 'reference'
|
22
|
+
require_relative 'parser'
|
23
|
+
require_relative 'code'
|
24
|
+
|
25
|
+
module Decode
|
26
|
+
module Language
|
27
|
+
module Ruby
|
28
|
+
# The Ruby language.
|
29
|
+
class Generic < Language::Generic
|
30
|
+
EXTENSIONS = ['.rb', '.ru']
|
31
|
+
|
32
|
+
def parser
|
33
|
+
@parser ||= Parser.new(self)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Generate a language-specific reference.
|
37
|
+
# @parameter identifier [String] A valid identifier.
|
38
|
+
def reference_for(identifier)
|
39
|
+
Reference.new(identifier, self)
|
40
|
+
end
|
41
|
+
|
42
|
+
def code_for(text, index, relative_to: nil)
|
43
|
+
Code.new(text, index, relative_to: relative_to, language: self)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -38,6 +38,10 @@ module Decode
|
|
38
38
|
module Ruby
|
39
39
|
# The Ruby source code parser.
|
40
40
|
class Parser
|
41
|
+
def initialize(language)
|
42
|
+
@language = language
|
43
|
+
end
|
44
|
+
|
41
45
|
# Extract definitions from the given input file.
|
42
46
|
def definitions_for(input, &block)
|
43
47
|
top, comments = ::Parser::CurrentRuby.parse_with_comments(input)
|
@@ -81,10 +85,10 @@ module Decode
|
|
81
85
|
end
|
82
86
|
when :module
|
83
87
|
definition = Module.new(
|
84
|
-
node, node.children[0]
|
88
|
+
node, nested_name_for(node.children[0]),
|
85
89
|
comments: extract_comments_for(node, comments),
|
86
90
|
parent: parent,
|
87
|
-
language:
|
91
|
+
language: @language
|
88
92
|
)
|
89
93
|
|
90
94
|
yield definition
|
@@ -94,9 +98,9 @@ module Decode
|
|
94
98
|
end
|
95
99
|
when :class
|
96
100
|
definition = Class.new(
|
97
|
-
node, node.children[0]
|
101
|
+
node, nested_name_for(node.children[0]),
|
98
102
|
comments: extract_comments_for(node, comments),
|
99
|
-
parent: parent, language:
|
103
|
+
parent: parent, language: @language
|
100
104
|
)
|
101
105
|
|
102
106
|
yield definition
|
@@ -108,7 +112,7 @@ module Decode
|
|
108
112
|
definition = Singleton.new(
|
109
113
|
node, node.children[0],
|
110
114
|
comments: extract_comments_for(node, comments),
|
111
|
-
parent: parent, language:
|
115
|
+
parent: parent, language: @language
|
112
116
|
)
|
113
117
|
|
114
118
|
yield definition
|
@@ -120,7 +124,7 @@ module Decode
|
|
120
124
|
definition = Method.new(
|
121
125
|
node, node.children[0],
|
122
126
|
comments: extract_comments_for(node, comments),
|
123
|
-
parent: parent, language:
|
127
|
+
parent: parent, language: @language
|
124
128
|
)
|
125
129
|
|
126
130
|
yield definition
|
@@ -128,7 +132,7 @@ module Decode
|
|
128
132
|
definition = Function.new(
|
129
133
|
node, node.children[1],
|
130
134
|
comments: extract_comments_for(node, comments),
|
131
|
-
parent: parent, language:
|
135
|
+
parent: parent, language: @language
|
132
136
|
)
|
133
137
|
|
134
138
|
yield definition
|
@@ -136,18 +140,19 @@ module Decode
|
|
136
140
|
definition = Constant.new(
|
137
141
|
node, node.children[1],
|
138
142
|
comments: extract_comments_for(node, comments),
|
139
|
-
parent: parent, language:
|
143
|
+
parent: parent, language: @language
|
140
144
|
)
|
141
145
|
|
142
146
|
yield definition
|
143
147
|
when :send
|
144
148
|
name = node.children[1]
|
149
|
+
|
145
150
|
case name
|
146
151
|
when :attr, :attr_reader, :attr_writer, :attr_accessor
|
147
152
|
definition = Attribute.new(
|
148
153
|
node, name_for(node.children[2]),
|
149
154
|
comments: extract_comments_for(node, comments),
|
150
|
-
parent: parent, language:
|
155
|
+
parent: parent, language: @language
|
151
156
|
)
|
152
157
|
|
153
158
|
yield definition
|
@@ -157,7 +162,7 @@ module Decode
|
|
157
162
|
definition = Call.new(
|
158
163
|
node, name_for(node, extracted_comments),
|
159
164
|
comments: extracted_comments,
|
160
|
-
parent: parent, language:
|
165
|
+
parent: parent, language: @language
|
161
166
|
)
|
162
167
|
|
163
168
|
yield definition
|
@@ -171,7 +176,7 @@ module Decode
|
|
171
176
|
node, name,
|
172
177
|
comments: extracted_comments,
|
173
178
|
parent: scope_for(extracted_comments, parent, &block),
|
174
|
-
language:
|
179
|
+
language: @language
|
175
180
|
)
|
176
181
|
|
177
182
|
if kind = kind_for(node, extracted_comments)
|
@@ -206,6 +211,14 @@ module Decode
|
|
206
211
|
end
|
207
212
|
end
|
208
213
|
|
214
|
+
def nested_name_for(node)
|
215
|
+
if prefix = node.children[0]
|
216
|
+
"#{nested_name_for(prefix)}::#{node.children[1]}".to_sym
|
217
|
+
else
|
218
|
+
node.children[1]
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
209
222
|
KIND_ATTRIBUTE = /\A
|
210
223
|
(@(?<kind>attribute)\s+(?<value>.*?))|
|
211
224
|
(@define\s+(?<kind>)\s+(?<value>.*?))
|
@@ -229,7 +242,7 @@ module Decode
|
|
229
242
|
comments&.each do |comment|
|
230
243
|
if match = comment.match(SCOPE_ATTRIBUTE)
|
231
244
|
return match[:names].split(/\s+/).map(&:to_sym).inject(nil) do |memo, name|
|
232
|
-
scope = Scope.new(name, parent: memo, language:
|
245
|
+
scope = Scope.new(name, parent: memo, language: @language)
|
233
246
|
yield scope
|
234
247
|
scope
|
235
248
|
end
|
@@ -268,11 +281,11 @@ module Decode
|
|
268
281
|
if segment.nil?
|
269
282
|
segment = Segment.new(
|
270
283
|
extract_comments_for(child, comments),
|
271
|
-
|
284
|
+
@language, child
|
272
285
|
)
|
273
286
|
elsif next_comments = extract_comments_for(child, comments)
|
274
287
|
yield segment if segment
|
275
|
-
segment = Segment.new(next_comments,
|
288
|
+
segment = Segment.new(next_comments, @language, child)
|
276
289
|
else
|
277
290
|
segment.expand(child)
|
278
291
|
end
|
@@ -283,7 +296,7 @@ module Decode
|
|
283
296
|
# One top level segment:
|
284
297
|
segment = Segment.new(
|
285
298
|
extract_comments_for(node, comments),
|
286
|
-
|
299
|
+
@language, node
|
287
300
|
)
|
288
301
|
|
289
302
|
yield segment
|
data/lib/decode/language/ruby.rb
CHANGED
@@ -18,78 +18,14 @@
|
|
18
18
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
19
|
# THE SOFTWARE.
|
20
20
|
|
21
|
-
require_relative 'ruby/
|
22
|
-
require_relative 'ruby/parser'
|
23
|
-
require_relative 'ruby/code'
|
24
|
-
|
25
|
-
require_relative '../comment/tags'
|
26
|
-
require_relative '../comment/parameter'
|
27
|
-
require_relative '../comment/yields'
|
28
|
-
require_relative '../comment/returns'
|
21
|
+
require_relative 'ruby/generic'
|
29
22
|
|
30
23
|
module Decode
|
31
24
|
module Language
|
32
25
|
# An interface for extracting information from Ruby source code.
|
33
26
|
module Ruby
|
34
|
-
|
35
|
-
|
36
|
-
def self.name
|
37
|
-
"ruby"
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.names
|
41
|
-
[self.name]
|
42
|
-
end
|
43
|
-
|
44
|
-
def self.extensions
|
45
|
-
['.rb', '.ru']
|
46
|
-
end
|
47
|
-
|
48
|
-
TAGS = Comment::Tags.build do |tags|
|
49
|
-
tags['attribute'] = Comment::Attribute
|
50
|
-
tags['parameter'] = Comment::Parameter
|
51
|
-
tags['yields'] = Comment::Yields
|
52
|
-
tags['returns'] = Comment::Returns
|
53
|
-
tags['raises'] = Comment::Raises
|
54
|
-
tags['throws'] = Comment::Throws
|
55
|
-
|
56
|
-
tags['reentrant'] = Comment::Pragma
|
57
|
-
tags['deprecated'] = Comment::Pragma
|
58
|
-
tags['blocking'] = Comment::Pragma
|
59
|
-
tags['asynchronous'] = Comment::Pragma
|
60
|
-
end
|
61
|
-
|
62
|
-
def self.tags
|
63
|
-
TAGS
|
64
|
-
end
|
65
|
-
|
66
|
-
# Generate a language-specific reference.
|
67
|
-
# @parameter identifier [String] A valid identifier.
|
68
|
-
def self.reference_for(identifier)
|
69
|
-
Reference.new(identifier, self)
|
70
|
-
end
|
71
|
-
|
72
|
-
# Parse the input yielding definitions.
|
73
|
-
# @parameter input [File] The input file which contains the source code.
|
74
|
-
# @yields {|definition| ...} Receives the definitions extracted from the source code.
|
75
|
-
# @parameter definition [Definition] The source code definition including methods, classes, etc.
|
76
|
-
# @returns [Enumerator(Segment)] If no block given.
|
77
|
-
def self.definitions_for(input, &block)
|
78
|
-
Parser.new.definitions_for(input, &block)
|
79
|
-
end
|
80
|
-
|
81
|
-
# Parse the input yielding segments.
|
82
|
-
# Segments are constructed from a block of top level comments followed by a block of code.
|
83
|
-
# @parameter input [File] The input file which contains the source code.
|
84
|
-
# @yields {|segment| ...}
|
85
|
-
# @parameter segment [Segment]
|
86
|
-
# @returns [Enumerator(Segment)] If no block given.
|
87
|
-
def self.segments_for(input, &block)
|
88
|
-
Parser.new.segments_for(input, &block)
|
89
|
-
end
|
90
|
-
|
91
|
-
def self.code_for(text, index, relative_to: nil)
|
92
|
-
Code.new(text, index, relative_to: relative_to, language: self)
|
27
|
+
def self.new
|
28
|
+
Generic.new("ruby")
|
93
29
|
end
|
94
30
|
end
|
95
31
|
end
|
data/lib/decode/languages.rb
CHANGED
data/lib/decode/version.rb
CHANGED
data.tar.gz.sig
ADDED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.17.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIEhDCCAuygAwIBAgIBATANBgkqhkiG9w0BAQsFADA3MTUwMwYDVQQDDCxzYW11
|
14
|
+
ZWwud2lsbGlhbXMvREM9b3Jpb250cmFuc2Zlci9EQz1jby9EQz1uejAeFw0yMTA4
|
15
|
+
MTYwNjMzNDRaFw0yMjA4MTYwNjMzNDRaMDcxNTAzBgNVBAMMLHNhbXVlbC53aWxs
|
16
|
+
aWFtcy9EQz1vcmlvbnRyYW5zZmVyL0RDPWNvL0RDPW56MIIBojANBgkqhkiG9w0B
|
17
|
+
AQEFAAOCAY8AMIIBigKCAYEAyXLSS/cw+fXJ5e7hi+U/TeChPWeYdwJojDsFY1xr
|
18
|
+
xvtqbTTL8gbLHz5LW3QD2nfwCv3qTlw0qI3Ie7a9VMJMbSvgVEGEfQirqIgJXWMj
|
19
|
+
eNMDgKsMJtC7u/43abRKx7TCURW3iWyR19NRngsJJmaR51yGGGm2Kfsr+JtKKLtL
|
20
|
+
L188Wm3f13KAx7QJU8qyuBnj1/gWem076hzdA7xi1DbrZrch9GCRz62xymJlrJHn
|
21
|
+
9iZEZ7AxrS7vokhMlzSr/XMUihx/8aFKtk+tMLClqxZSmBWIErWdicCGTULXCBNb
|
22
|
+
E/mljo4zEVKhlTWpJklMIhr55ZRrSarKFuW7en0+tpJrfsYiAmXMJNi4XAYJH7uL
|
23
|
+
rgJuJwSaa/dMz+VmUoo7VKtSfCoOI+6v5/z0sK3oT6sG6ZwyI47DBq2XqNC6tnAj
|
24
|
+
w+XmCywiTQrFzMMAvcA7rPI4F0nU1rZId51rOvvfxaONp+wgTi4P8owZLw0/j0m4
|
25
|
+
8C20DYi6EYx4AHDXiLpElWh3AgMBAAGjgZowgZcwCQYDVR0TBAIwADALBgNVHQ8E
|
26
|
+
BAMCBLAwHQYDVR0OBBYEFB6ZaeWKxQjGTI+pmz7cKRmMIywwMC4GA1UdEQQnMCWB
|
27
|
+
I3NhbXVlbC53aWxsaWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MC4GA1UdEgQnMCWB
|
28
|
+
I3NhbXVlbC53aWxsaWFtc0BvcmlvbnRyYW5zZmVyLmNvLm56MA0GCSqGSIb3DQEB
|
29
|
+
CwUAA4IBgQBVoM+pu3dpdUhZM1w051iw5GfiqclAr1Psypf16Tiod/ho//4oAu6T
|
30
|
+
9fj3DPX/acWV9P/FScvqo4Qgv6g4VWO5ZU7z2JmPoTXZtYMunRAmQPFL/gSUc6aK
|
31
|
+
vszMHIyhtyzRc6DnfW2AiVOjMBjaYv8xXZc9bduniRVPrLR4J7ozmGLh4o4uJp7w
|
32
|
+
x9KCFaR8Lvn/r0oJWJOqb/DMAYI83YeN2Dlt3jpwrsmsONrtC5S3gOUle5afSGos
|
33
|
+
bYt5ocnEpKSomR9ZtnCGljds/aeO1Xgpn2r9HHcjwnH346iNrnHmMlC7BtHUFPDg
|
34
|
+
Ts92S47PTOXzwPBDsrFiq3VLbRjHSwf8rpqybQBH9MfzxGGxTaETQYOd6b4e4Ag6
|
35
|
+
y92abGna0bmIEb4+Tx9rQ10Uijh1POzvr/VTH4bbIPy9FbKrRsIQ24qDbNJRtOpE
|
36
|
+
RAOsIl+HOBTb252nx1kIRN5hqQx272AJCbCjKx8egcUQKffFVVCI0nye09v5CK+a
|
37
|
+
HiLJ8VOFx6w=
|
38
|
+
-----END CERTIFICATE-----
|
39
|
+
date: 2021-12-16 00:00:00.000000000 Z
|
12
40
|
dependencies:
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: parser
|
@@ -114,6 +142,7 @@ files:
|
|
114
142
|
- lib/decode/language/ruby/constant.rb
|
115
143
|
- lib/decode/language/ruby/definition.rb
|
116
144
|
- lib/decode/language/ruby/function.rb
|
145
|
+
- lib/decode/language/ruby/generic.rb
|
117
146
|
- lib/decode/language/ruby/method.rb
|
118
147
|
- lib/decode/language/ruby/module.rb
|
119
148
|
- lib/decode/language/ruby/parser.rb
|
@@ -148,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
177
|
- !ruby/object:Gem::Version
|
149
178
|
version: '0'
|
150
179
|
requirements: []
|
151
|
-
rubygems_version: 3.
|
180
|
+
rubygems_version: 3.2.32
|
152
181
|
signing_key:
|
153
182
|
specification_version: 4
|
154
183
|
summary: Code analysis for documentation generation.
|
metadata.gz.sig
ADDED
Binary file
|