synvert-core 0.36.0 → 0.41.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 +4 -4
- data/CHANGELOG.md +17 -0
- data/lib/synvert/core/node_ext.rb +10 -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/node_ext_spec.rb +12 -0
- 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: 1b8def453eb2f8303d70dc014780f247e3d2e5e53e7cb9fc2a8d772f4e405dbe
|
4
|
+
data.tar.gz: f5eac07008781607e399ba690871e4ea1e090db6da122068afad282181b6310f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dda7113a207fa2f5e615c298a4d93344eee9fcca9f4634ff8b99192ef0d27b33d14735b0446fb5649d2100c8aba41e7067d6168a91d9e712fd634d160dce3701
|
7
|
+
data.tar.gz: 144b8bb301190c6382737961cd13b1340ef676c40214ced7dc8705f49034accde152c5b16ddc3f692697779cdd5c760f2cf79de77c09b09f4c890dee25969d5d
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,22 @@
|
|
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
|
+
|
16
|
+
## 0.38.0 (2021-06-21)
|
17
|
+
|
18
|
+
* Add `xxx_source` for `hash` node
|
19
|
+
|
3
20
|
## 0.36.0 (2021-06-21)
|
4
21
|
|
5
22
|
* Require `active_support/core_ext/array`
|
@@ -269,6 +269,12 @@ module Parser::AST
|
|
269
269
|
return hash_value(key.to_sym)&.to_value if key?(key.to_sym)
|
270
270
|
return hash_value(key.to_s)&.to_value if key?(key.to_s)
|
271
271
|
|
272
|
+
return nil
|
273
|
+
elsif :hash == type && method_name.to_s.include?('_source')
|
274
|
+
key = method_name.to_s.sub('_source', '')
|
275
|
+
return hash_value(key.to_sym)&.to_source if key?(key.to_sym)
|
276
|
+
return hash_value(key.to_s)&.to_source if key?(key.to_s)
|
277
|
+
|
272
278
|
return nil
|
273
279
|
end
|
274
280
|
|
@@ -281,6 +287,9 @@ module Parser::AST
|
|
281
287
|
elsif :hash == type && method_name.to_s.include?('_value')
|
282
288
|
key = method_name.to_s.sub('_value', '')
|
283
289
|
return true if key?(key.to_sym) || key?(key.to_s)
|
290
|
+
elsif :hash == type && method_name.to_s.include?('_source')
|
291
|
+
key = method_name.to_s.sub('_source', '')
|
292
|
+
return true if key?(key.to_sym) || key?(key.to_s)
|
284
293
|
end
|
285
294
|
|
286
295
|
super
|
@@ -379,7 +388,7 @@ module Parser::AST
|
|
379
388
|
end
|
380
389
|
|
381
390
|
raise Synvert::Core::MethodNotSupported,
|
382
|
-
"child_node_range is not handled for #{
|
391
|
+
"child_node_range is not handled for #{debug_info}, child_name: #{child_name}"
|
383
392
|
end
|
384
393
|
end
|
385
394
|
|
@@ -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
@@ -360,6 +360,18 @@ describe Parser::AST::Node do
|
|
360
360
|
end
|
361
361
|
end
|
362
362
|
|
363
|
+
describe 'key value source by method_missing' do
|
364
|
+
it 'gets for key value source' do
|
365
|
+
node = parse('{:foo => :bar}')
|
366
|
+
expect(node.foo_source).to eq ':bar'
|
367
|
+
|
368
|
+
node = parse("{'foo' => 'bar'}")
|
369
|
+
expect(node.foo_source).to eq "'bar'"
|
370
|
+
|
371
|
+
expect(node.bar_source).to be_nil
|
372
|
+
end
|
373
|
+
end
|
374
|
+
|
363
375
|
describe '#recursive_children' do
|
364
376
|
it 'iterates all children recursively' do
|
365
377
|
node = parse('class Synvert; def current_node; @node; end; end')
|
@@ -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.1
|
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-
|
11
|
+
date: 2021-07-04 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
|