node_mutation 1.13.2 → 1.14.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: dc332fd8345dc642414853ebc7f92ddf3f4d364c2bd5f5076d5de3a17368ce50
4
- data.tar.gz: 4a5018954b0094f1dea13c4b4f7ce0237e368564b892a57cd680ec88fb062eb1
3
+ metadata.gz: c5f41eba8034d3565eeda68905e0d6f8efff2a5ad56f0523f3aca6e57b334239
4
+ data.tar.gz: eb115a375da1d2e17ca62df7089ae22b243fc94e273b1a37378cc8ff215be6e9
5
5
  SHA512:
6
- metadata.gz: f2329f07950c9a97b1cb2729ffc9b617e146a56607476f03c8cb78e3047ebc52358e59ff4e80916e8bf521f4d8ff9e7e5801e2452b414f81ac447590e39ac9e6
7
- data.tar.gz: b97de612f89f6d7e23a20e2bfaed7aa1c0ead95ba868c3535e9575161feb18a35b13a0a75623a814855ce149d7f56676ad1fc76836235ce5e4d8a503dc0147bb
6
+ metadata.gz: f0bb8b60c6c9a822a883c2219303ba39bc649adade357ea82074cea9c4da8f0a33b6305bd45dc3e8b094a420b7f450dbd90fab80b498331e87c1a5fed8c68404
7
+ data.tar.gz: 69eab44d9cc1282ce4c7afb09a3ea80573728562538cbe75fde02458d915c5f8479c87098171d4421e5d157fac92a85f8ecce8b8c61bf29bd63dd6fd44a6128d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # NodeMutation
2
2
 
3
+ ## 1.14.0 (2023-04-04)
4
+
5
+ * Add `transform_proc` to transform the actions
6
+ * Allow to write `Action` `start` and `end` attributes
7
+
3
8
  ## 1.13.2 (2023-04-01)
4
9
 
5
10
  * Support `cvar`, `gvar`, `ivar`, and `lvar` name in `child_node_range`
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- node_mutation (1.13.2)
4
+ node_mutation (1.14.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -2,11 +2,11 @@
2
2
 
3
3
  # Action defines rewriter action, insert, replace or delete code.
4
4
  class NodeMutation::Action
5
- # @!attribute [r] start
5
+ # @!attribute [rw] start
6
6
  # @return [Integer] start position
7
- # @!attribute [r] end
7
+ # @!attribute [rw] end
8
8
  # @return [Integer] end position
9
- attr_reader :start, :end
9
+ attr_accessor :start, :end
10
10
 
11
11
  # Initialize an action.
12
12
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class NodeMutation
4
- VERSION = "1.13.2"
4
+ VERSION = "1.14.0"
5
5
  end
data/lib/node_mutation.rb CHANGED
@@ -22,8 +22,14 @@ class NodeMutation
22
22
  autoload :Strategy, 'node_mutation/strategy'
23
23
  autoload :Struct, 'node_mutation/struct'
24
24
 
25
+ # @!attribute [r] actions
26
+ # @return [Array<NodeMutation::Struct::Action>]
25
27
  attr_reader :actions
26
28
 
29
+ # @!attribute [rw] transform_proc
30
+ # @return [Proc] proc to transfor the actions
31
+ attr_accessor :transform_proc
32
+
27
33
  class << self
28
34
  # Configure NodeMutation
29
35
  # @param [Hash] options options to configure
@@ -219,6 +225,7 @@ class NodeMutation
219
225
  end
220
226
 
221
227
  source = +@source
228
+ @transform_proc.call(@actions) if @transform_proc
222
229
  @actions.sort_by! { |action| [action.start, action.end] }
223
230
  conflict_actions = get_conflict_actions
224
231
  if conflict_actions.size > 0 && strategy?(Strategy::THROW_ERROR)
@@ -245,6 +252,7 @@ class NodeMutation
245
252
  return NodeMutation::Result.new(affected: false, conflicted: false)
246
253
  end
247
254
 
255
+ @transform_proc.call(@actions) if @transform_proc
248
256
  @actions.sort_by! { |action| [action.start, action.end] }
249
257
  conflict_actions = get_conflict_actions
250
258
  if conflict_actions.size > 0 && strategy?(Strategy::THROW_ERROR)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: node_mutation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.2
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang