node_mutation 1.15.3 → 1.16.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e184fa98da9cbfac3645ec4e89ac2201cdbbfd958c511a03050443a66c79b322
4
- data.tar.gz: 7c7693df11e9cd74df33d5ef6949bc800ab3a6c4367836c799b76073800586d5
3
+ metadata.gz: 14e76d23c3a0be62554de359db928e7f0e70fe75b6c13ecb0655add5af735333
4
+ data.tar.gz: 1777be0d1e8c4044fa175dcc8f9f9e3431283fdf039392cba9f8fe4fd656c676
5
5
  SHA512:
6
- metadata.gz: 17c9a5065bb703331ccf1996bb3895ff833336b768aca74751c52b885c0651c9c4bb19b989d026aa39b10cdf03b61ab43ddf3e5e1fe742aa837527b8e680279e
7
- data.tar.gz: ba34afa52b6dacf07f5a9b736a31e2b1ad0c37e3a0717690d302f1a1e91ab366705d7ac840a903ada796d182731731823a7cf438e3d1de6c07ee1fcdb2ae5861
6
+ metadata.gz: ef64c7156966a2d80c4bf823e0c3330d8934cf52306a9f179bac7105b52c82e78bb9b0d958510165a541fd1fe550b3eec7c7e78eaf3aa7f3207a5b0df1f9e4e3
7
+ data.tar.gz: 969399df03dc8e3f5c15e55f37a3664bf0945a41e5ff244542319b8a2c20d6afff54dc3aee72b6b4e6c90c6ce84428b6008d14d3dc81e343c68296e78b387218
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # NodeMutation
2
2
 
3
+ ## 1.16.0 (2023-05-10)
4
+
5
+ * Support {key}_value for a hash node
6
+
3
7
  ## 1.15.3 (2023-04-18)
4
8
 
5
9
  * Add `type` to `Action`
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- node_mutation (1.15.3)
4
+ node_mutation (1.16.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -120,6 +120,15 @@ class NodeMutation::ParserAdapter < NodeMutation::Adapter
120
120
  return NodeMutation::Struct::Range.new(pair_node.loc.expression.begin_pos, pair_node.loc.expression.end_pos)
121
121
  end
122
122
 
123
+ if node.type == :hash && child_name.to_s.end_with?('_value')
124
+ pair_node = node.pairs.find { |pair| pair.key.to_value.to_s == child_name.to_s[0..-7] }
125
+ raise NodeMutation::MethodNotSupported,
126
+ "#{direct_child_name} is not supported for #{get_source(node)}" unless pair_node
127
+ return child_node_range(pair.value, nested_child_name) if nested_child_name
128
+
129
+ return NodeMutation::Struct::Range.new(pair_node.value.loc.expression.begin_pos, pair_node.value.loc.expression.end_pos)
130
+ end
131
+
123
132
  raise NodeMutation::MethodNotSupported,
124
133
  "#{direct_child_name} is not supported for #{get_source(node)}" unless node.respond_to?(direct_child_name)
125
134
 
@@ -206,6 +215,15 @@ class NodeMutation::ParserAdapter < NodeMutation::Adapter
206
215
  return pair_node
207
216
  end
208
217
 
218
+ if node.is_a?(Parser::AST::Node) && node.type == :hash && direct_child_name.end_with?('_value')
219
+ pair_node = node.pairs.find { |pair| pair.key.to_value.to_s == direct_child_name[0..-7] }
220
+ raise NodeMutation::MethodNotSupported,
221
+ "#{direct_child_name} is not supported for #{get_source(node)}" unless pair_node
222
+ return child_node_by_name(pair_node.value, nested_child_name) if nested_child_name
223
+
224
+ return pair_node.value
225
+ end
226
+
209
227
  if node.respond_to?(direct_child_name)
210
228
  child_node = node.send(direct_child_name)
211
229
  elsif direct_child_name.include?('(') && direct_child_name.include?(')')
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class NodeMutation
4
- VERSION = "1.15.3"
4
+ VERSION = "1.16.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: node_mutation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.3
4
+ version: 1.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-18 00:00:00.000000000 Z
11
+ date: 2023-05-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ast node mutation apis
14
14
  email: