lowkey 0.4.3 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23f484029089a05bd14c027fdd8f8282afd3264c18e45c1c7cfe18237f09bf7a
4
- data.tar.gz: 432014f7350e077fdf38610deb9cd76b6ae8f35d08b6128e2a3bafa543f019d0
3
+ metadata.gz: fd25e18e0f7e9ac24928debd9bc635a507c84a77b4d886700880f148f8d9febe
4
+ data.tar.gz: f68b425284d49b6bb44dce7b8a5a4b3ee027c21328ef9324d4818bc3b47248c1
5
5
  SHA512:
6
- metadata.gz: a4012dbb3d72a2ff26984a1347f4c7465d1fc12bab6faf1cb7f95ed089d2eccc254832653d69f1fe7faf73812770f5717ab1fcd2eb642db941169091a968b89d
7
- data.tar.gz: c6c5f289593a2bb2ff626649d4a36e3bb71bd4ff19607ea3ba417e5188c64d5e125d6bdca133cab2275b952dd5820a646262844f57b8f77fbd89bc7302b6d077
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 : ':LOWKEY_UNDEFINED'
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
@@ -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.parse_file(file_path).value
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
@@ -38,8 +38,6 @@ module Lowkey
38
38
  lines[start_index..end_index].join
39
39
  end
40
40
 
41
- private
42
-
43
41
  def start_index
44
42
  start_line - 1
45
43
  end
@@ -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
@@ -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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Lowkey
4
- VERSION = '0.4.3'
4
+ VERSION = '0.5.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lowkey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - maedi
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
75
  requirements: []
76
- rubygems_version: 4.0.6
76
+ rubygems_version: 3.7.2
77
77
  specification_version: 4
78
78
  summary: An API for accessing PRISM metadata easily and efficiently
79
79
  test_files: []