node_mutation 1.12.3 → 1.13.1

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: 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