gelauto 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|