lowkey 0.4.2 → 0.5.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/factories/proxy_factory.rb +1 -1
- data/lib/interfaces/proxy.rb +1 -1
- data/lib/lowkey.rb +1 -1
- data/lib/models/source.rb +0 -2
- data/lib/proxies/method_proxy.rb +9 -0
- data/lib/proxies/param_proxy.rb +35 -0
- data/lib/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fd25e18e0f7e9ac24928debd9bc635a507c84a77b4d886700880f148f8d9febe
|
|
4
|
+
data.tar.gz: f68b425284d49b6bb44dce7b8a5a4b3ee027c21328ef9324d4818bc3b47248c1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 634b34cf1ba74385da15584bda2d67baecc0c6fef232036782d937a7364fcc8b4afd6c354c476e2e66f0dcbe3a1b07b05c08cdf444e2e2a11bc213b032205ace
|
|
7
|
+
data.tar.gz: '09a61d7464ce1c35b59a21f97d2295d7f631e5a6ba6704612f0432b089c7122a6f1a64c3f30b1b77f654447ed326062fc0829ed286345f578287481a253fb2b7'
|
|
@@ -57,7 +57,7 @@ module Lowkey
|
|
|
57
57
|
name = param.name
|
|
58
58
|
source = SourceFactory.param_source(param_node: param, file_path:, lines: source.lines)
|
|
59
59
|
type = param_types[param.class]
|
|
60
|
-
value = param.respond_to?(:value) ? param.value.slice :
|
|
60
|
+
value = param.respond_to?(:value) ? param.value.slice : :LOWKEY_UNDEFINED
|
|
61
61
|
|
|
62
62
|
ParamProxy.new(name:, source:, type:, position:, value:)
|
|
63
63
|
end
|
data/lib/interfaces/proxy.rb
CHANGED
|
@@ -10,7 +10,7 @@ module Lowkey
|
|
|
10
10
|
|
|
11
11
|
attr_reader :name
|
|
12
12
|
|
|
13
|
-
def_delegators :@source, :file_path, :lines, :lines=, :start_line, :end_line, :scope
|
|
13
|
+
def_delegators :@source, :file_path, :lines, :lines=, :start_line, :end_line, :start_index, :scope
|
|
14
14
|
def_delegators :@source, :wrap, :export
|
|
15
15
|
|
|
16
16
|
def initialize(name:, source:)
|
data/lib/lowkey.rb
CHANGED
|
@@ -19,7 +19,7 @@ module Lowkey
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def load(file_path, cache: true)
|
|
22
|
-
root_node = Prism.
|
|
22
|
+
root_node = Prism.parse(File.read(file_path), filepath: file_path).value
|
|
23
23
|
file_proxy = ProxyFactory.file_proxy(root_node:, file_path:)
|
|
24
24
|
|
|
25
25
|
parent_map = ParentMap.new(root_node:)
|
data/lib/models/source.rb
CHANGED
data/lib/proxies/method_proxy.rb
CHANGED
|
@@ -29,6 +29,15 @@ module Lowkey
|
|
|
29
29
|
@tagged_params[tag] || []
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
+
def rewrite_signature
|
|
33
|
+
old_line = lines[start_index]
|
|
34
|
+
scope_prefix = old_line.match?(/def self\./) ? 'def self.' : 'def '
|
|
35
|
+
all_params = @params.map { |p| p.expression ? p.export(typed: false) : p.name.to_s }
|
|
36
|
+
return_suffix = @return_proxy ? " #{@return_proxy.export}" : ''
|
|
37
|
+
indent = old_line[/^\s*/]
|
|
38
|
+
lines[start_index] = "#{indent}#{scope_prefix}#{@name}(#{all_params.join(', ')})#{return_suffix}\n"
|
|
39
|
+
end
|
|
40
|
+
|
|
32
41
|
def expressions?
|
|
33
42
|
@params.any?(&:expression) || @return_proxy
|
|
34
43
|
end
|
data/lib/proxies/param_proxy.rb
CHANGED
|
@@ -20,5 +20,40 @@ module Lowkey
|
|
|
20
20
|
def required?
|
|
21
21
|
@value == :LOWKEY_UNDEFINED
|
|
22
22
|
end
|
|
23
|
+
|
|
24
|
+
def export(typed: true)
|
|
25
|
+
return @source.export if typed
|
|
26
|
+
return untyped_keyword_param if %i[key_req key_opt].include?(@type)
|
|
27
|
+
|
|
28
|
+
untyped_positional_param
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def untyped_keyword_param
|
|
34
|
+
default = resolved_default
|
|
35
|
+
default.nil? ? "#{@name}:" : "#{@name}: #{default}"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def untyped_positional_param
|
|
39
|
+
default = resolved_default
|
|
40
|
+
default.nil? ? @name.to_s : "#{@name} = #{default}"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def resolved_default
|
|
44
|
+
if @expression
|
|
45
|
+
return nil if @expression.default_value == :LOWTYPE_UNDEFINED
|
|
46
|
+
return nil if @expression.default_value.nil? && required?
|
|
47
|
+
|
|
48
|
+
value = @expression.default_value
|
|
49
|
+
return value.value.inspect if value.class.name == 'ValueExpression' # rubocop:disable Style/ClassEqualityComparison
|
|
50
|
+
|
|
51
|
+
return value.inspect
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
return nil if @value == :LOWKEY_UNDEFINED
|
|
55
|
+
|
|
56
|
+
@value
|
|
57
|
+
end
|
|
23
58
|
end
|
|
24
59
|
end
|
data/lib/version.rb
CHANGED