gelauto 2.0.0 → 2.1.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/Gemfile +2 -0
- data/lib/gelauto/method_index.rb +8 -2
- data/lib/gelauto/version.rb +1 -1
- data/spec/gelauto_spec.rb +21 -0
- data/spec/spec_helper.rb +5 -0
- data/spec/support/annotated.rb +17 -0
- data/spec/support/client.rb +2 -0
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b432e7c9cde4f686b0f5dfe56b1e535c8cbec893552ca72e3881de7c7736d189
|
4
|
+
data.tar.gz: 18e9c1edbf6fbdbe624c8e05153250aa1f7d2581d91f8131fc9c6bbbfeb52886
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9a6c22c6d79c023f3e03af57fe46af222379217527cfcb115d2aa10d946052f5f5d635ae9557093bfa2d9281958be1270291fae02b3983e9c7da2c35a2d0228
|
7
|
+
data.tar.gz: 6fe764a27342f40aea149cc01a2e92d93ddc9eb79d6e8d343c6685e64d28145a76cb42db2e3f1da60a7e00d54d1eeafecf299062327006f57d1d5ed4c1fbaefc
|
data/Gemfile
CHANGED
data/lib/gelauto/method_index.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
module Gelauto
|
2
2
|
class MethodIndex
|
3
|
-
attr_reader :index
|
3
|
+
attr_reader :index, :sig_index
|
4
4
|
|
5
5
|
def initialize
|
6
6
|
@index = Hash.new { |h, k| h[k] = {} }
|
7
|
+
@sig_index = Hash.new { |h, k| h[k] = {} }
|
7
8
|
end
|
8
9
|
|
9
10
|
def index_methods_in(path, ast, nesting = [])
|
@@ -31,6 +32,10 @@ module Gelauto
|
|
31
32
|
when :class, :module
|
32
33
|
const_name = ast.children.first.children.last
|
33
34
|
return visit_children(path, ast, nesting + [Namespace.new(const_name, ast.type)])
|
35
|
+
when :block
|
36
|
+
if ast.children.first.children.last == :sig
|
37
|
+
sig_index[path][ast.location.line] = true
|
38
|
+
end
|
34
39
|
end
|
35
40
|
|
36
41
|
visit_children(path, ast, nesting)
|
@@ -66,13 +71,14 @@ module Gelauto
|
|
66
71
|
def annotate(path, code)
|
67
72
|
lines = code.split(/\r?\n/)
|
68
73
|
mds = index[path]
|
74
|
+
sigs = sig_index[path]
|
69
75
|
|
70
76
|
[].tap do |annotated|
|
71
77
|
lines.each_with_index do |line, idx|
|
72
78
|
lineno = idx + 1
|
73
79
|
md = mds[lineno]
|
74
80
|
|
75
|
-
if md.is_a?(MethodDef)
|
81
|
+
if md.is_a?(MethodDef) && !sigs[idx]
|
76
82
|
indent = line[0...line.index(/[^\s]/)]
|
77
83
|
annotated << "#{indent}#{md.to_sig}"
|
78
84
|
end
|
data/lib/gelauto/version.rb
CHANGED
data/spec/gelauto_spec.rb
CHANGED
@@ -80,6 +80,27 @@ describe Gelauto do
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
+
context 'with existing signatures' do
|
84
|
+
before do
|
85
|
+
Gelauto.discover do
|
86
|
+
@request = GelautoSpecs::Request.new
|
87
|
+
@request.to_a('Hello', 'World')
|
88
|
+
@request.to_s(100)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
it 'skips existing sig, adds missing sig' do
|
93
|
+
file = File.read('spec/support/annotated.rb')
|
94
|
+
expect(file.lines.count).to eq(17)
|
95
|
+
# does not add a signature to the method with an existing signature
|
96
|
+
annotated = annotate(@request, :to_a, file)
|
97
|
+
expect(annotated.lines.count).to eq(17)
|
98
|
+
# does add a signature to the method without a signature
|
99
|
+
annotated = annotate(@request, :to_s, file)
|
100
|
+
expect(annotated.lines.count).to eq(18)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
83
104
|
context 'with nested generic types' do
|
84
105
|
before do
|
85
106
|
Gelauto.discover do
|
data/spec/spec_helper.rb
CHANGED
@@ -20,6 +20,11 @@ RSpec.configure do |config|
|
|
20
20
|
path, lineno = obj.method(method_name).source_location
|
21
21
|
Gelauto.method_index.find(path, lineno)
|
22
22
|
end
|
23
|
+
|
24
|
+
def annotate(obj, method_name, code)
|
25
|
+
path, _lineno = obj.method(method_name).source_location
|
26
|
+
Gelauto.method_index.annotate(path, code)
|
27
|
+
end
|
23
28
|
end
|
24
29
|
)
|
25
30
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'sorbet-runtime'
|
2
|
+
|
3
|
+
module GelautoSpecs
|
4
|
+
class Request
|
5
|
+
extend T::Sig
|
6
|
+
sig { params(status: String, body: String).returns(T::Array[String]) }
|
7
|
+
def to_a(status, body)
|
8
|
+
[status, body]
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_s(number)
|
12
|
+
number&.to_s
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
Gelauto.paths << __FILE__
|
data/spec/support/client.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gelauto
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Dutro
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- lib/gelauto/version.rb
|
73
73
|
- spec/gelauto_spec.rb
|
74
74
|
- spec/spec_helper.rb
|
75
|
+
- spec/support/annotated.rb
|
75
76
|
- spec/support/client.rb
|
76
77
|
- spec/support/config.yml
|
77
78
|
- spec/support/image.rb
|