node_mutation 1.13.2 → 1.14.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: 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