node_mutation 1.12.3 → 1.13.1

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: 3c09d8d3b9a1b4185382f7117d766d6220d9f9cbe4851f86af6c99e32af2ba88
4
- data.tar.gz: e392926a8e647d85028c5d41c3890bea801f47dae425b885ff1892aaf8b396b2
3
+ metadata.gz: fe41a31b811d16da282f8945f61004449dee3aedead1b7e8daabc864918d8a68
4
+ data.tar.gz: 5a7940724edbb66def2ec4bc0c355bbbeaa87a12eadeddf0c9647bab2efb3b3b
5
5
  SHA512:
6
- metadata.gz: 6bb3a9d27929b69bba72947e39160163d671a7ac493d0b861057b1e08fd651e4bbcadc90f56d9b4ae8a7ee825aa1c207af7136f1b2afb11a7533b0c9898d211d
7
- data.tar.gz: '0943c3dfd903a6b9e789cfcb7289bbe2fed18f37a1176210ceff267233383c879813b67e3ff2e915e8c179f6144afe9c5ba5fb8baf3055845a93dd2885a58fce'
6
+ metadata.gz: 8b1fdbce0a2a34d0135199937e619b14e51b0b5e75ceaa2e8adb0fe3b044aa7f70abe0d8b954cd112437d7e52437727e4967f1b01b62b67aeff7c2711a66b8f3
7
+ data.tar.gz: be6a5cc15c2206ae661e33c47228610637bb0d2ee4db8a2e87606e3f9d34ca5fcaf4c83e7a94c9a5380915034a7d9d52a6c4a5b4a9cc93a1ea7040c09cbb8733
data/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # NodeMutation
2
2
 
3
+ ## 1.13.1 (2023-03-31)
4
+
5
+ * Remove both whitespaces only when next char is nil
6
+
7
+ ## 1.13.0 (2023-03-31)
8
+
9
+ * Adapter `get_start` and `get_end` can parse child node
10
+ * Adapter `get_start_loc` and `get_end_loc` can parse child node
11
+
3
12
  ## 1.12.3 (2023-03-30)
4
13
 
5
14
  * `remove_whitespace` for both before and after whitespace
data/Gemfile.lock CHANGED
@@ -1,8 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- node_mutation (1.12.3)
5
- erubis
4
+ node_mutation (1.13.1)
6
5
 
7
6
  GEM
8
7
  remote: https://rubygems.org/
@@ -10,7 +9,6 @@ GEM
10
9
  ast (2.4.2)
11
10
  coderay (1.1.3)
12
11
  diff-lcs (1.5.0)
13
- erubis (2.7.0)
14
12
  ffi (1.15.5)
15
13
  formatador (1.1.0)
16
14
  guard (2.18.0)
@@ -57,9 +57,9 @@ class NodeMutation::Action
57
57
  # e.g. `%i[foo bar]`, if we remove `foo`, the whitespace should also be removed,
58
58
  # the code should be changed to `%i[bar]`.
59
59
  def remove_whitespace
60
- if file_source[@end] == ' ' && file_source[@start - 1] == ' '
60
+ if file_source[@start - 1] == ' ' && file_source[@end] == ' '
61
61
  @start -= 1
62
- @end += 1
62
+ @end += 1 if file_source[@end + 1].nil?
63
63
  return
64
64
  end
65
65
 
@@ -35,29 +35,33 @@ class NodeMutation::Adapter
35
35
 
36
36
  # Get start position of ast node
37
37
  # @param node [Node] ast node
38
- # @return [Number] start position
39
- def get_start(node)
38
+ # @param child_name [String] child name selector
39
+ # @return [Number] start position of node or child node
40
+ def get_start(node, child_name = nil)
40
41
  raise NotImplementedError, "get_start is not implemented"
41
42
  end
42
43
 
43
44
  # Get end position of ast node
44
45
  # @param node [Node] ast node
45
- # @return [Number] end position
46
- def get_end(node)
46
+ # @param child_name [String] child name selector
47
+ # @return [Number] end position of node or child node
48
+ def get_end(node, child_name = nil)
47
49
  raise NotImplementedError, "get_end is not implemented"
48
50
  end
49
51
 
50
52
  # Get start location of ast node
51
53
  # @param node [Node] ast node
52
- # @return [{ line: Number, column: Number }] start location
53
- def get_start_loc(node)
54
+ # @param child_name [String] child name selector
55
+ # @return [{ line: Number, column: Number }] start location of node or child node
56
+ def get_start_loc(node, child_name = nil)
54
57
  raise NotImplementedError, "get_start_loc is not implemented"
55
58
  end
56
59
 
57
60
  # Get end location of ast node
58
61
  # @param node [Node] ast node
59
- # @return [{ line: Number, column: Number }] end location
60
- def get_end_loc(node)
62
+ # @param child_name [String] child name selector
63
+ # @return [{ line: Number, column: Number }] end location of node or child node
64
+ def get_end_loc(node, child_name = nil)
61
65
  raise NotImplementedError, "get_end_loc is not implemented"
62
66
  end
63
67
 
@@ -145,20 +145,24 @@ class NodeMutation::ParserAdapter < NodeMutation::Adapter
145
145
  end
146
146
  end
147
147
 
148
- def get_start(node)
148
+ def get_start(node, child_name = nil)
149
+ node = child_node_by_name(node, child_name) if child_name
149
150
  node.loc.expression.begin_pos
150
151
  end
151
152
 
152
- def get_end(node)
153
+ def get_end(node, child_name = nil)
154
+ node = child_node_by_name(node, child_name) if child_name
153
155
  node.loc.expression.end_pos
154
156
  end
155
157
 
156
- def get_start_loc(node)
158
+ def get_start_loc(node, child_name = nil)
159
+ node = child_node_by_name(node, child_name) if child_name
157
160
  begin_loc = node.loc.expression.begin
158
161
  NodeMutation::Struct::Location.new(begin_loc.line, begin_loc.column)
159
162
  end
160
163
 
161
- def get_end_loc(node)
164
+ def get_end_loc(node, child_name = nil)
165
+ node = child_node_by_name(node, child_name) if child_name
162
166
  end_loc = node.loc.expression.end
163
167
  NodeMutation::Struct::Location.new(end_loc.line, end_loc.column)
164
168
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class NodeMutation
4
- VERSION = "1.12.3"
4
+ VERSION = "1.13.1"
5
5
  end
@@ -29,9 +29,6 @@ Gem::Specification.new do |spec|
29
29
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
31
 
32
- # Uncomment to register a new dependency of your gem
33
- spec.add_dependency "erubis"
34
-
35
32
  # For more information and examples about making a new gem, check out our
36
33
  # guide at: https://bundler.io/guides/creating_gem.html
37
34
  end
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: node_mutation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.3
4
+ version: 1.13.1
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-03-30 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: erubis
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
11
+ date: 2023-03-31 00:00:00.000000000 Z
12
+ dependencies: []
27
13
  description: ast node mutation apis
28
14
  email:
29
15
  - flyerhzm@gmail.com