synvert-core 0.26.1 → 0.27.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: e3f85c5eb0a82ffb3447ad72ac9f901883a074b1f16c244176008a333b3e90cc
4
- data.tar.gz: c13b895edc3ef7f9d126795933e2bf01267b0b912e2904a4481baff175eebca4
3
+ metadata.gz: 49f00515f034212fb244c270b4d9815e51e5a4d2eb1e91c1cd8c3ddc402fca28
4
+ data.tar.gz: 8de939c1e2834259e1aa8af2b17e540221a5e7d0d3f936ad526081db408e994f
5
5
  SHA512:
6
- metadata.gz: 16ceb23eaf30909e4950cefbaae20b650f90320a496fee4a095a054dc7996fe91bfbcb79fc6252caa38f09b5998c687d4171bee050fc605cf2c8ee8ddac93c61
7
- data.tar.gz: fc0202a47909b7bcffdd0e235c198419afcf2653f89bcd9abce626b412ab3c4a92a0bfbc71be8971873d15aeac85e4e2d0f80575ee44f75374d7c755af281c12
6
+ metadata.gz: 12236d2c862b82798e3865755394362e50773ff27505b1ddf08e7308dd51ca0a791b604e8e3cafd768e8d3b957c76bb18ff5d5bd8daded14eef0e2a788c51c36
7
+ data.tar.gz: 42b67fd980a096a5d8bffe78ba023c47b18bca34ac3957a631da16bd722b979e8cb9523eaf97e8ca42b870091e4ec81922b866ff8359325f0144766cb9ceb3db
data/CHANGELOG.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
- ## 0.26.1 (2021-03-31)
3
+ ## 0.27.0 (2021-03-31)
4
4
 
5
5
  * Support `:class` in `child_node_range`
6
+ * Add `delete` action
6
7
 
7
8
  ## 0.26.0 (2021-03-30)
8
9
 
@@ -334,6 +334,8 @@ module Parser::AST
334
334
  case child_name
335
335
  when :receiver
336
336
  receiver&.loc&.expression
337
+ when :dot
338
+ loc.dot
337
339
  when :message
338
340
  loc.selector
339
341
  when :arguments
@@ -24,6 +24,7 @@ module Synvert::Core
24
24
  autoload :ReplaceAction, 'synvert/core/rewriter/action/replace_action'
25
25
  autoload :ReplaceErbStmtWithExprAction, 'synvert/core/rewriter/action/replace_erb_stmt_with_expr_action'
26
26
  autoload :RemoveAction, 'synvert/core/rewriter/action/remove_action'
27
+ autoload :DeleteAction, 'synvert/core/rewriter/action/delete_action'
27
28
 
28
29
  autoload :Warning, 'synvert/core/rewriter/warning'
29
30
 
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Synvert::Core
4
+ # RemoveAction to delete code.
5
+ class Rewriter::DeleteAction < Rewriter::Action
6
+ def initialize(instance, *selectors)
7
+ super(instance, nil)
8
+ @selectors = selectors
9
+ end
10
+
11
+ # Begin position of code to replace.
12
+ #
13
+ # @return [Integer] begin position.
14
+ def begin_pos
15
+ @selectors.map { |selector| @node.child_node_range(selector).begin_pos }.min
16
+ end
17
+
18
+ # End position of code to replace.
19
+ #
20
+ # @return [Integer] end position.
21
+ def end_pos
22
+ @selectors.map { |selector| @node.child_node_range(selector).end_pos }.max
23
+ end
24
+
25
+ # The rewritten code, always empty string.
26
+ def rewritten_code
27
+ ''
28
+ end
29
+ end
30
+ end
@@ -266,11 +266,16 @@ module Synvert::Core
266
266
  @actions << Rewriter::ReplaceErbStmtWithExprAction.new(self)
267
267
  end
268
268
 
269
- # Parse remove dsl, it creates a [Synvert::Core::Rewriter::RemoveAction] to current node.
269
+ # Parse remove dsl, it creates a [Synvert::Core::Rewriter::RemoveAction] to remove current node.
270
270
  def remove
271
271
  @actions << Rewriter::RemoveAction.new(self)
272
272
  end
273
273
 
274
+ # Parse delete dsl, it creates a [Synvert::Core::Rewriter::DeleteAction] to delete child nodes.
275
+ def delete
276
+ @actions << Rewriter::DeleteAction.new(self, *selectors)
277
+ end
278
+
274
279
  # Parse warn dsl, it creates a [Synvert::Core::Rewriter::Warning] to save warning message.
275
280
  #
276
281
  # @param message [String] warning message.
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Synvert
4
4
  module Core
5
- VERSION = '0.26.1'
5
+ VERSION = '0.27.0'
6
6
  end
7
7
  end
@@ -406,6 +406,16 @@ describe Parser::AST::Node do
406
406
  expect(range).to be_nil
407
407
  end
408
408
 
409
+ it 'checks dot' do
410
+ node = parse('foo.bar(test)')
411
+ range = node.child_node_range(:dot)
412
+ expect(range.to_range).to eq(3...4)
413
+
414
+ node = parse('foobar(test)')
415
+ range = node.child_node_range(:dot)
416
+ expect(range).to be_nil
417
+ end
418
+
409
419
  it 'checks message' do
410
420
  node = parse('foo.bar(test)')
411
421
  range = node.child_node_range(:message)
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ module Synvert::Core
6
+ describe Rewriter::DeleteAction do
7
+ subject {
8
+ source = "arr.map {}.flatten"
9
+ node = Parser::CurrentRuby.parse(source)
10
+ instance = double(current_node: node)
11
+ Rewriter::DeleteAction.new(instance, :dot, :message)
12
+ }
13
+
14
+ it 'gets begin_pos' do
15
+ expect(subject.begin_pos).to eq "arr.map {}".length
16
+ end
17
+
18
+ it 'gets end_pos' do
19
+ expect(subject.end_pos).to eq "arr.map {}.flatten".length
20
+ end
21
+
22
+ it 'gets rewritten_code' do
23
+ expect(subject.rewritten_code).to eq ''
24
+ end
25
+ end
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synvert-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.1
4
+ version: 0.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
@@ -147,6 +147,7 @@ files:
147
147
  - lib/synvert/core/rewriter.rb
148
148
  - lib/synvert/core/rewriter/action.rb
149
149
  - lib/synvert/core/rewriter/action/append_action.rb
150
+ - lib/synvert/core/rewriter/action/delete_action.rb
150
151
  - lib/synvert/core/rewriter/action/insert_action.rb
151
152
  - lib/synvert/core/rewriter/action/insert_after_action.rb
152
153
  - lib/synvert/core/rewriter/action/remove_action.rb
@@ -171,6 +172,7 @@ files:
171
172
  - spec/synvert/core/engine/erb_spec.rb
172
173
  - spec/synvert/core/node_ext_spec.rb
173
174
  - spec/synvert/core/rewriter/action/append_action_spec.rb
175
+ - spec/synvert/core/rewriter/action/delete_action_spec.rb
174
176
  - spec/synvert/core/rewriter/action/insert_action_spec.rb
175
177
  - spec/synvert/core/rewriter/action/insert_after_action_spec.rb
176
178
  - spec/synvert/core/rewriter/action/remove_action_spec.rb
@@ -221,6 +223,7 @@ test_files:
221
223
  - spec/synvert/core/engine/erb_spec.rb
222
224
  - spec/synvert/core/node_ext_spec.rb
223
225
  - spec/synvert/core/rewriter/action/append_action_spec.rb
226
+ - spec/synvert/core/rewriter/action/delete_action_spec.rb
224
227
  - spec/synvert/core/rewriter/action/insert_action_spec.rb
225
228
  - spec/synvert/core/rewriter/action/insert_after_action_spec.rb
226
229
  - spec/synvert/core/rewriter/action/remove_action_spec.rb