synvert-core 0.38.0 → 0.41.2
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 +4 -4
- data/CHANGELOG.md +13 -0
- data/lib/synvert/core/node_ext.rb +3 -1
- data/lib/synvert/core/rewriter.rb +1 -0
- data/lib/synvert/core/rewriter/action.rb +1 -4
- data/lib/synvert/core/rewriter/action/insert_action.rb +14 -23
- data/lib/synvert/core/rewriter/action/prepend_action.rb +47 -0
- data/lib/synvert/core/rewriter/action/replace_with_action.rb +4 -4
- data/lib/synvert/core/rewriter/instance.rb +17 -12
- data/lib/synvert/core/version.rb +1 -1
- data/spec/synvert/core/rewriter/action/insert_action_spec.rb +16 -58
- data/spec/synvert/core/rewriter/action/prepend_action_spec.rb +91 -0
- data/spec/synvert/core/rewriter/action/replace_with_action_spec.rb +12 -12
- data/spec/synvert/core/rewriter/instance_spec.rb +17 -9
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e9e29097976ca69f755a698d9a3a78769105c4043b07c96a7ac1e714ae659a0
|
4
|
+
data.tar.gz: 12d45e30a5de2ffc03bb440b503ff1a230e7baa55eb6a69e43518023e7d24f08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28802dbdd2f53b267c621f811b959a0041064f97ff4f54ee009f75d230eeb2a1ff3fbb9b1c3cee524d990f53b8e7447105fa57e86cb4ee2b042cd4e17ef63c9e
|
7
|
+
data.tar.gz: 8c0f5604e24d9ea0034214aa2b4d36f26d6c5f181d7d0d70f75a78fe71b0cab1868379953b2d071ea3ab922e62855a51ee5a0cb14ed7b4e26ebb8cc57adcb396
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.41.0 (2021-06-24)
|
4
|
+
|
5
|
+
* Remove unused autoindent option
|
6
|
+
* Add `insert 'xxx', at: 'beginning'`
|
7
|
+
|
8
|
+
## 0.40.0 (2021-06-23)
|
9
|
+
|
10
|
+
* Rewrite `insert` action
|
11
|
+
|
12
|
+
## 0.39.0 (2021-06-23)
|
13
|
+
|
14
|
+
* Add `prepend` action instead of `insert`
|
15
|
+
|
3
16
|
## 0.38.0 (2021-06-21)
|
4
17
|
|
5
18
|
* Add `xxx_source` for `hash` node
|
@@ -388,7 +388,7 @@ module Parser::AST
|
|
388
388
|
end
|
389
389
|
|
390
390
|
raise Synvert::Core::MethodNotSupported,
|
391
|
-
"child_node_range is not handled for #{
|
391
|
+
"child_node_range is not handled for #{debug_info}, child_name: #{child_name}"
|
392
392
|
end
|
393
393
|
end
|
394
394
|
|
@@ -493,6 +493,8 @@ module Parser::AST
|
|
493
493
|
# @return [Integer] -1, 0 or 1.
|
494
494
|
# @raise [Synvert::Core::MethodNotSupported] if expected class is not supported.
|
495
495
|
def match_value?(actual, expected)
|
496
|
+
return true if actual == expected
|
497
|
+
|
496
498
|
case expected
|
497
499
|
when Symbol
|
498
500
|
if actual.is_a?(Parser::AST::Node)
|
@@ -18,6 +18,7 @@ module Synvert::Core
|
|
18
18
|
class Rewriter
|
19
19
|
autoload :Action, 'synvert/core/rewriter/action'
|
20
20
|
autoload :AppendAction, 'synvert/core/rewriter/action/append_action'
|
21
|
+
autoload :PrependAction, 'synvert/core/rewriter/action/prepend_action'
|
21
22
|
autoload :InsertAction, 'synvert/core/rewriter/action/insert_action'
|
22
23
|
autoload :InsertAfterAction, 'synvert/core/rewriter/action/insert_after_action'
|
23
24
|
autoload :ReplaceWithAction, 'synvert/core/rewriter/action/replace_with_action'
|
@@ -3,18 +3,15 @@
|
|
3
3
|
module Synvert::Core
|
4
4
|
# Action defines rewriter action, add, replace or remove code.
|
5
5
|
class Rewriter::Action
|
6
|
-
DEFAULT_OPTIONS = { autoindent: true }.freeze
|
7
6
|
DEFAULT_INDENT = 2
|
8
7
|
|
9
8
|
# Initialize an action.
|
10
9
|
#
|
11
10
|
# @param instance [Synvert::Core::Rewriter::Instance]
|
12
11
|
# @param code [String] new code to add, replace or remove.
|
13
|
-
|
14
|
-
def initialize(instance, code, options = {})
|
12
|
+
def initialize(instance, code)
|
15
13
|
@instance = instance
|
16
14
|
@code = code
|
17
|
-
@options = DEFAULT_OPTIONS.merge(options)
|
18
15
|
@node = @instance.current_node
|
19
16
|
end
|
20
17
|
|
@@ -1,25 +1,23 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Synvert::Core
|
4
|
-
#
|
4
|
+
# AddAction to add code to the node.
|
5
5
|
class Rewriter::InsertAction < Rewriter::Action
|
6
|
-
|
6
|
+
def initialize(instance, code, at:)
|
7
|
+
@instance = instance
|
8
|
+
@code = code
|
9
|
+
@at = at
|
10
|
+
@node = @instance.current_node
|
11
|
+
end
|
7
12
|
|
8
13
|
# Begin position to insert code.
|
9
14
|
#
|
10
15
|
# @return [Integer] begin position.
|
11
16
|
def begin_pos
|
12
|
-
|
13
|
-
|
14
|
-
if @node.children[1].children.empty?
|
15
|
-
@node.children[0].loc.expression.end_pos + DO_LENGTH
|
16
|
-
else
|
17
|
-
@node.children[1].loc.expression.end_pos
|
18
|
-
end
|
19
|
-
when :class
|
20
|
-
@node.children[1] ? @node.children[1].loc.expression.end_pos : @node.children[0].loc.expression.end_pos
|
17
|
+
if @at == 'end'
|
18
|
+
@node.loc.expression.end_pos
|
21
19
|
else
|
22
|
-
@node.
|
20
|
+
@node.loc.expression.begin_pos
|
23
21
|
end
|
24
22
|
end
|
25
23
|
|
@@ -30,18 +28,11 @@ module Synvert::Core
|
|
30
28
|
begin_pos
|
31
29
|
end
|
32
30
|
|
33
|
-
|
34
|
-
|
35
|
-
# Indent of the node.
|
31
|
+
# The rewritten source code.
|
36
32
|
#
|
37
|
-
# @
|
38
|
-
|
39
|
-
|
40
|
-
if %i[block class].include? node.type
|
41
|
-
' ' * (node.indent + DEFAULT_INDENT)
|
42
|
-
else
|
43
|
-
' ' * node.indent
|
44
|
-
end
|
33
|
+
# @return [String] rewritten code.
|
34
|
+
def rewritten_code
|
35
|
+
rewritten_source
|
45
36
|
end
|
46
37
|
end
|
47
38
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Synvert::Core
|
4
|
+
# PrependAction to prepend code to the top of node body.
|
5
|
+
class Rewriter::PrependAction < Rewriter::Action
|
6
|
+
DO_LENGTH = ' do'.length
|
7
|
+
|
8
|
+
# Begin position to prepend code.
|
9
|
+
#
|
10
|
+
# @return [Integer] begin position.
|
11
|
+
def begin_pos
|
12
|
+
case @node.type
|
13
|
+
when :block
|
14
|
+
if @node.children[1].children.empty?
|
15
|
+
@node.children[0].loc.expression.end_pos + DO_LENGTH
|
16
|
+
else
|
17
|
+
@node.children[1].loc.expression.end_pos
|
18
|
+
end
|
19
|
+
when :class
|
20
|
+
@node.children[1] ? @node.children[1].loc.expression.end_pos : @node.children[0].loc.expression.end_pos
|
21
|
+
else
|
22
|
+
@node.children.last.loc.expression.end_pos
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# End position, always same to begin position.
|
27
|
+
#
|
28
|
+
# @return [Integer] end position.
|
29
|
+
def end_pos
|
30
|
+
begin_pos
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
# Indent of the node.
|
36
|
+
#
|
37
|
+
# @param node [Parser::AST::Node]
|
38
|
+
# @return [String] n times whitesphace
|
39
|
+
def indent(node)
|
40
|
+
if %i[block class].include? node.type
|
41
|
+
' ' * (node.indent + DEFAULT_INDENT)
|
42
|
+
else
|
43
|
+
' ' * node.indent
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -21,11 +21,11 @@ module Synvert::Core
|
|
21
21
|
#
|
22
22
|
# @return [String] rewritten code.
|
23
23
|
def rewritten_code
|
24
|
-
if rewritten_source.
|
24
|
+
if rewritten_source.include?("\n")
|
25
25
|
new_code = []
|
26
|
-
rewritten_source.split("\n").each_with_index
|
27
|
-
new_code << (index == 0
|
28
|
-
|
26
|
+
rewritten_source.split("\n").each_with_index do |line, index|
|
27
|
+
new_code << (index == 0 ? line : indent(@node) + line)
|
28
|
+
end
|
29
29
|
new_code.join("\n")
|
30
30
|
else
|
31
31
|
rewritten_source
|
@@ -219,36 +219,41 @@ module Synvert::Core
|
|
219
219
|
# append the code to the bottom of current node body.
|
220
220
|
#
|
221
221
|
# @param code [String] code need to be appended.
|
222
|
-
|
223
|
-
|
224
|
-
|
222
|
+
def append(code)
|
223
|
+
@actions << Rewriter::AppendAction.new(self, code)
|
224
|
+
end
|
225
|
+
|
226
|
+
# Parse prepend dsl, it creates a [Synvert::Core::Rewriter::PrependAction] to
|
227
|
+
# prepend the code to the top of current node body.
|
228
|
+
#
|
229
|
+
# @param code [String] code need to be prepended.
|
230
|
+
def prepend(code)
|
231
|
+
@actions << Rewriter::PrependAction.new(self, code)
|
225
232
|
end
|
226
233
|
|
227
234
|
# Parse insert dsl, it creates a [Synvert::Core::Rewriter::InsertAction] to
|
228
235
|
# insert the code to the top of current node body.
|
229
236
|
#
|
230
237
|
# @param code [String] code need to be inserted.
|
231
|
-
# @param
|
232
|
-
def insert(code,
|
233
|
-
@actions << Rewriter::InsertAction.new(self, code,
|
238
|
+
# @param at [String] insert position, beginning or end, end is the default.
|
239
|
+
def insert(code, at: 'end')
|
240
|
+
@actions << Rewriter::InsertAction.new(self, code, at: at)
|
234
241
|
end
|
235
242
|
|
236
243
|
# Parse insert_after dsl, it creates a [Synvert::Core::Rewriter::InsertAfterAction] to
|
237
244
|
# insert the code next to the current node.
|
238
245
|
#
|
239
246
|
# @param code [String] code need to be inserted.
|
240
|
-
|
241
|
-
|
242
|
-
@actions << Rewriter::InsertAfterAction.new(self, node, options)
|
247
|
+
def insert_after(node)
|
248
|
+
@actions << Rewriter::InsertAfterAction.new(self, node)
|
243
249
|
end
|
244
250
|
|
245
251
|
# Parse replace_with dsl, it creates a [Synvert::Core::Rewriter::ReplaceWithAction] to
|
246
252
|
# replace current node with code.
|
247
253
|
#
|
248
254
|
# @param code [String] code need to be replaced with.
|
249
|
-
|
250
|
-
|
251
|
-
@actions << Rewriter::ReplaceWithAction.new(self, code, options)
|
255
|
+
def replace_with(code)
|
256
|
+
@actions << Rewriter::ReplaceWithAction.new(self, code)
|
252
257
|
end
|
253
258
|
|
254
259
|
# Parse replace with dsl, it creates a [Synvert::Core::Rewriter::ReplaceAction] to
|
data/lib/synvert/core/version.rb
CHANGED
@@ -4,87 +4,45 @@ require 'spec_helper'
|
|
4
4
|
|
5
5
|
module Synvert::Core
|
6
6
|
describe Rewriter::InsertAction do
|
7
|
-
|
7
|
+
context 'at end' do
|
8
8
|
subject {
|
9
|
-
source = "
|
10
|
-
|
11
|
-
instance = double(current_node:
|
12
|
-
Rewriter::InsertAction.new(instance, '
|
9
|
+
source = " User.where(username: 'Richard')"
|
10
|
+
node = Parser::CurrentRuby.parse(source)
|
11
|
+
instance = double(current_node: node)
|
12
|
+
Rewriter::InsertAction.new(instance, '.first', at: 'end')
|
13
13
|
}
|
14
14
|
|
15
15
|
it 'gets begin_pos' do
|
16
|
-
expect(subject.begin_pos).to eq
|
16
|
+
expect(subject.begin_pos).to eq " User.where(username: 'Richard')".length
|
17
17
|
end
|
18
18
|
|
19
19
|
it 'gets end_pos' do
|
20
|
-
expect(subject.end_pos).to eq
|
20
|
+
expect(subject.end_pos).to eq " User.where(username: 'Richard')".length
|
21
21
|
end
|
22
22
|
|
23
23
|
it 'gets rewritten_code' do
|
24
|
-
expect(subject.rewritten_code).to eq
|
24
|
+
expect(subject.rewritten_code).to eq '.first'
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
|
28
|
+
context 'at beginning' do
|
29
29
|
subject {
|
30
|
-
source = "
|
31
|
-
|
32
|
-
instance = double(current_node:
|
33
|
-
Rewriter::InsertAction.new(instance, '
|
30
|
+
source = " open('http://test.com')"
|
31
|
+
node = Parser::CurrentRuby.parse(source)
|
32
|
+
instance = double(current_node: node)
|
33
|
+
Rewriter::InsertAction.new(instance, 'URI.', at: 'beginning')
|
34
34
|
}
|
35
35
|
|
36
36
|
it 'gets begin_pos' do
|
37
|
-
expect(subject.begin_pos).to eq
|
37
|
+
expect(subject.begin_pos).to eq 2
|
38
38
|
end
|
39
39
|
|
40
40
|
it 'gets end_pos' do
|
41
|
-
expect(subject.end_pos).to eq
|
41
|
+
expect(subject.end_pos).to eq 2
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'gets rewritten_code' do
|
45
|
-
expect(subject.rewritten_code).to eq
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe 'class node without superclass' do
|
50
|
-
subject {
|
51
|
-
source = "class User\n has_many :posts\nend"
|
52
|
-
class_node = Parser::CurrentRuby.parse(source)
|
53
|
-
instance = double(current_node: class_node)
|
54
|
-
Rewriter::InsertAction.new(instance, 'include Deletable')
|
55
|
-
}
|
56
|
-
|
57
|
-
it 'gets begin_pos' do
|
58
|
-
expect(subject.begin_pos).to eq 'class User'.length
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'gets end_pos' do
|
62
|
-
expect(subject.end_pos).to eq 'class User'.length
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'gets rewritten_code' do
|
66
|
-
expect(subject.rewritten_code).to eq "\n include Deletable"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe 'class node with superclass' do
|
71
|
-
subject {
|
72
|
-
source = "class User < ActiveRecord::Base\n has_many :posts\nend"
|
73
|
-
class_node = Parser::CurrentRuby.parse(source)
|
74
|
-
instance = double(current_node: class_node)
|
75
|
-
Rewriter::InsertAction.new(instance, 'include Deletable')
|
76
|
-
}
|
77
|
-
|
78
|
-
it 'gets begin_pos' do
|
79
|
-
expect(subject.begin_pos).to eq 'class User < ActionRecord::Base'.length
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'gets end_pos' do
|
83
|
-
expect(subject.end_pos).to eq 'class User < ActionRecord::Base'.length
|
84
|
-
end
|
85
|
-
|
86
|
-
it 'gets rewritten_code' do
|
87
|
-
expect(subject.rewritten_code).to eq "\n include Deletable"
|
45
|
+
expect(subject.rewritten_code).to eq 'URI.'
|
88
46
|
end
|
89
47
|
end
|
90
48
|
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module Synvert::Core
|
6
|
+
describe Rewriter::PrependAction do
|
7
|
+
describe 'block node without args' do
|
8
|
+
subject {
|
9
|
+
source = "Synvert::Application.configure do\nend"
|
10
|
+
block_node = Parser::CurrentRuby.parse(source)
|
11
|
+
instance = double(current_node: block_node)
|
12
|
+
Rewriter::PrependAction.new(instance, 'config.eager_load = true')
|
13
|
+
}
|
14
|
+
|
15
|
+
it 'gets begin_pos' do
|
16
|
+
expect(subject.begin_pos).to eq 'Synvert::Application.configure do'.length
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'gets end_pos' do
|
20
|
+
expect(subject.end_pos).to eq 'Synvert::Application.configure do'.length
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'gets rewritten_code' do
|
24
|
+
expect(subject.rewritten_code).to eq "\n config.eager_load = true"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'block node with args' do
|
29
|
+
subject {
|
30
|
+
source = "RSpec.configure do |config|\nend"
|
31
|
+
block_node = Parser::CurrentRuby.parse(source)
|
32
|
+
instance = double(current_node: block_node)
|
33
|
+
Rewriter::PrependAction.new(instance, '{{arguments.first}}.include FactoryGirl::Syntax::Methods')
|
34
|
+
}
|
35
|
+
|
36
|
+
it 'gets begin_pos' do
|
37
|
+
expect(subject.begin_pos).to eq 'RSpec.configure do |config|'.length
|
38
|
+
end
|
39
|
+
|
40
|
+
it 'gets end_pos' do
|
41
|
+
expect(subject.end_pos).to eq 'RSpec.configure do |config|'.length
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'gets rewritten_code' do
|
45
|
+
expect(subject.rewritten_code).to eq "\n config.include FactoryGirl::Syntax::Methods"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe 'class node without superclass' do
|
50
|
+
subject {
|
51
|
+
source = "class User\n has_many :posts\nend"
|
52
|
+
class_node = Parser::CurrentRuby.parse(source)
|
53
|
+
instance = double(current_node: class_node)
|
54
|
+
Rewriter::PrependAction.new(instance, 'include Deletable')
|
55
|
+
}
|
56
|
+
|
57
|
+
it 'gets begin_pos' do
|
58
|
+
expect(subject.begin_pos).to eq 'class User'.length
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'gets end_pos' do
|
62
|
+
expect(subject.end_pos).to eq 'class User'.length
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'gets rewritten_code' do
|
66
|
+
expect(subject.rewritten_code).to eq "\n include Deletable"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe 'class node with superclass' do
|
71
|
+
subject {
|
72
|
+
source = "class User < ActiveRecord::Base\n has_many :posts\nend"
|
73
|
+
class_node = Parser::CurrentRuby.parse(source)
|
74
|
+
instance = double(current_node: class_node)
|
75
|
+
Rewriter::PrependAction.new(instance, 'include Deletable')
|
76
|
+
}
|
77
|
+
|
78
|
+
it 'gets begin_pos' do
|
79
|
+
expect(subject.begin_pos).to eq 'class User < ActionRecord::Base'.length
|
80
|
+
end
|
81
|
+
|
82
|
+
it 'gets end_pos' do
|
83
|
+
expect(subject.end_pos).to eq 'class User < ActionRecord::Base'.length
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'gets rewritten_code' do
|
87
|
+
expect(subject.rewritten_code).to eq "\n include Deletable"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -30,14 +30,12 @@ module Synvert::Core
|
|
30
30
|
source = ' its(:size) { should == 1 }'
|
31
31
|
send_node = Parser::CurrentRuby.parse(source)
|
32
32
|
instance = double(current_node: send_node)
|
33
|
-
Rewriter::ReplaceWithAction.new(
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
autoindent: false
|
40
|
-
)
|
33
|
+
Rewriter::ReplaceWithAction.new(instance, <<~EOS)
|
34
|
+
describe '#size' do
|
35
|
+
subject { super().size }
|
36
|
+
it { {{body}} }
|
37
|
+
end
|
38
|
+
EOS
|
41
39
|
}
|
42
40
|
|
43
41
|
it 'gets begin_pos' do
|
@@ -49,10 +47,12 @@ end",
|
|
49
47
|
end
|
50
48
|
|
51
49
|
it 'gets rewritten_code' do
|
52
|
-
expect(subject.rewritten_code).to eq
|
53
|
-
|
54
|
-
|
55
|
-
|
50
|
+
expect(subject.rewritten_code).to eq <<~EOS.strip
|
51
|
+
describe '#size' do
|
52
|
+
subject { super().size }
|
53
|
+
it { should == 1 }
|
54
|
+
end
|
55
|
+
EOS
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -90,30 +90,38 @@ module Synvert::Core
|
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'parses append' do
|
93
|
-
expect(Rewriter::AppendAction).to receive(:new).with(instance, 'include FactoryGirl::Syntax::Methods'
|
93
|
+
expect(Rewriter::AppendAction).to receive(:new).with(instance, 'include FactoryGirl::Syntax::Methods')
|
94
94
|
instance.append 'include FactoryGirl::Syntax::Methods'
|
95
95
|
end
|
96
96
|
|
97
|
-
it 'parses
|
98
|
-
expect(Rewriter::
|
97
|
+
it 'parses prepend' do
|
98
|
+
expect(Rewriter::PrependAction).to receive(:new).with(
|
99
99
|
instance,
|
100
|
-
'{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
101
|
-
{}
|
100
|
+
'{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
102
101
|
)
|
103
|
-
instance.
|
102
|
+
instance.prepend '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'parses insert' do
|
106
|
+
expect(Rewriter::InsertAction).to receive(:new).with(instance, '.first', at: 'end')
|
107
|
+
instance.insert '.first'
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'parses insert' do
|
111
|
+
expect(Rewriter::InsertAction).to receive(:new).with(instance, 'URI.', at: 'beginning')
|
112
|
+
instance.insert 'URI.', at: 'beginning'
|
104
113
|
end
|
105
114
|
|
106
115
|
it 'parses insert_after' do
|
107
116
|
expect(Rewriter::InsertAfterAction).to receive(:new).with(
|
108
117
|
instance,
|
109
|
-
'{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
110
|
-
{}
|
118
|
+
'{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
111
119
|
)
|
112
120
|
instance.insert_after '{{arguments.first}}.include FactoryGirl::Syntax::Methods'
|
113
121
|
end
|
114
122
|
|
115
123
|
it 'parses replace_with' do
|
116
|
-
expect(Rewriter::ReplaceWithAction).to receive(:new).with(instance, 'create {{arguments}}'
|
124
|
+
expect(Rewriter::ReplaceWithAction).to receive(:new).with(instance, 'create {{arguments}}')
|
117
125
|
instance.replace_with 'create {{arguments}}'
|
118
126
|
end
|
119
127
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: synvert-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.41.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Huang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-06
|
11
|
+
date: 2021-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -150,6 +150,7 @@ files:
|
|
150
150
|
- lib/synvert/core/rewriter/action/delete_action.rb
|
151
151
|
- lib/synvert/core/rewriter/action/insert_action.rb
|
152
152
|
- lib/synvert/core/rewriter/action/insert_after_action.rb
|
153
|
+
- lib/synvert/core/rewriter/action/prepend_action.rb
|
153
154
|
- lib/synvert/core/rewriter/action/remove_action.rb
|
154
155
|
- lib/synvert/core/rewriter/action/replace_action.rb
|
155
156
|
- lib/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action.rb
|
@@ -176,6 +177,7 @@ files:
|
|
176
177
|
- spec/synvert/core/rewriter/action/delete_action_spec.rb
|
177
178
|
- spec/synvert/core/rewriter/action/insert_action_spec.rb
|
178
179
|
- spec/synvert/core/rewriter/action/insert_after_action_spec.rb
|
180
|
+
- spec/synvert/core/rewriter/action/prepend_action_spec.rb
|
179
181
|
- spec/synvert/core/rewriter/action/remove_action_spec.rb
|
180
182
|
- spec/synvert/core/rewriter/action/replace_action_spec.rb
|
181
183
|
- spec/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action_spec.rb
|
@@ -227,6 +229,7 @@ test_files:
|
|
227
229
|
- spec/synvert/core/rewriter/action/delete_action_spec.rb
|
228
230
|
- spec/synvert/core/rewriter/action/insert_action_spec.rb
|
229
231
|
- spec/synvert/core/rewriter/action/insert_after_action_spec.rb
|
232
|
+
- spec/synvert/core/rewriter/action/prepend_action_spec.rb
|
230
233
|
- spec/synvert/core/rewriter/action/remove_action_spec.rb
|
231
234
|
- spec/synvert/core/rewriter/action/replace_action_spec.rb
|
232
235
|
- spec/synvert/core/rewriter/action/replace_erb_stmt_with_expr_action_spec.rb
|