synvert-core 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/synvert/core/node_ext.rb +2 -4
- data/lib/synvert/core/rewriter/action.rb +4 -5
- data/lib/synvert/core/rewriter/instance.rb +1 -10
- data/lib/synvert/core/version.rb +1 -1
- data/spec/synvert/core/node_ext_spec.rb +0 -15
- data/spec/synvert/core/rewriter/condition_spec.rb +2 -4
- data/spec/synvert/core/rewriter/scope_spec.rb +2 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2eacc4ed46475f1e8f697a68f0014a51f8652a6a
|
4
|
+
data.tar.gz: c2ca725e2348c8bb4cc4ee06fd05eb3d82b2eb53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ee88f43b7986394ed519e0e94364d9a603dac40bd61f25ec83f661beb52ace2036586e19df6ccf0e99e894b4dbe1c0f0123b83fd1bb52af7c8ff03a336f6875
|
7
|
+
data.tar.gz: 9c17ea44d83d5f885fbc1a6ad08bba5d9d8d551d2b163010d35c9e59127ce11db8472e7751cef67d7ab70cbb1ac0be7c6e79a99f62f8dd50d92c24b9386fae98
|
data/CHANGELOG.md
CHANGED
@@ -209,9 +209,8 @@ class Parser::AST::Node
|
|
209
209
|
#
|
210
210
|
# @return [String] source code.
|
211
211
|
def to_source
|
212
|
-
instance = Synvert::Rewriter::Instance.current
|
213
212
|
if self.loc.expression
|
214
|
-
|
213
|
+
self.loc.expression.source
|
215
214
|
end
|
216
215
|
end
|
217
216
|
|
@@ -271,8 +270,7 @@ class Parser::AST::Node
|
|
271
270
|
evaluated = self.instance_eval old_code
|
272
271
|
case evaluated
|
273
272
|
when Parser::AST::Node
|
274
|
-
|
275
|
-
source[evaluated.loc.expression.begin_pos...evaluated.loc.expression.end_pos]
|
273
|
+
evaluated.loc.expression.source
|
276
274
|
when Array
|
277
275
|
if evaluated.size > 0
|
278
276
|
source = evaluated.first.loc.expression.source_buffer.source
|
@@ -236,7 +236,7 @@ module Synvert::Core
|
|
236
236
|
# @return [Integer] begin position.
|
237
237
|
def begin_pos
|
238
238
|
node_begin_pos = @node.loc.expression.begin_pos
|
239
|
-
while @
|
239
|
+
while @node.loc.expression.source_buffer.source[node_begin_pos -= 1] == ' '
|
240
240
|
end
|
241
241
|
node_begin_pos - Engine::ERUBY_STMT_SPLITTER.length + 1
|
242
242
|
end
|
@@ -246,9 +246,8 @@ module Synvert::Core
|
|
246
246
|
# @return [Integer] end position.
|
247
247
|
def end_pos
|
248
248
|
node_begin_pos = @node.loc.expression.begin_pos
|
249
|
-
|
250
|
-
|
251
|
-
while @instance.current_source[node_begin_pos += 1] != '@'
|
249
|
+
node_begin_pos += @node.loc.expression.source.index "do"
|
250
|
+
while @node.loc.expression.source_buffer.source[node_begin_pos += 1] != '@'
|
252
251
|
end
|
253
252
|
node_begin_pos
|
254
253
|
end
|
@@ -257,7 +256,7 @@ module Synvert::Core
|
|
257
256
|
#
|
258
257
|
# @return [String] rewritten code.
|
259
258
|
def rewritten_code
|
260
|
-
@
|
259
|
+
@node.loc.expression.source_buffer.source[begin_pos...end_pos].sub(Engine::ERUBY_STMT_SPLITTER, "@output_buffer.append= ")
|
261
260
|
.sub(Engine::ERUBY_STMT_SPLITTER, Engine::ERUBY_EXPR_SPLITTER)
|
262
261
|
end
|
263
262
|
end
|
@@ -9,10 +9,6 @@ module Synvert::Core
|
|
9
9
|
include Rewriter::Helper
|
10
10
|
|
11
11
|
class <<self
|
12
|
-
# @!attribute [rw] current
|
13
|
-
# @return current instance
|
14
|
-
attr_accessor :current
|
15
|
-
|
16
12
|
# Cached file source.
|
17
13
|
#
|
18
14
|
# @param file_path [String] file path
|
@@ -64,11 +60,9 @@ module Synvert::Core
|
|
64
60
|
|
65
61
|
# @!attribute [rw] current_node
|
66
62
|
# @return current parsing node
|
67
|
-
# @!attribute [rw] current_source
|
68
|
-
# @return current source code of file
|
69
63
|
# @!attribute [rw] current_file
|
70
64
|
# @return current filename
|
71
|
-
attr_accessor :current_node, :
|
65
|
+
attr_accessor :current_node, :current_file
|
72
66
|
|
73
67
|
# Initialize an instance.
|
74
68
|
#
|
@@ -88,8 +82,6 @@ module Synvert::Core
|
|
88
82
|
# It finds all files, for each file, it executes the block code, gets all rewrite actions,
|
89
83
|
# and rewrite source code back to original file.
|
90
84
|
def process
|
91
|
-
self.class.current = self
|
92
|
-
|
93
85
|
file_pattern = File.join(Configuration.instance.get(:path), @file_pattern)
|
94
86
|
Dir.glob(file_pattern).each do |file_path|
|
95
87
|
unless Configuration.instance.get(:skip_files).include? file_path
|
@@ -99,7 +91,6 @@ module Synvert::Core
|
|
99
91
|
ast = self.class.file_ast(file_path)
|
100
92
|
|
101
93
|
@current_file = file_path
|
102
|
-
@current_source = source
|
103
94
|
|
104
95
|
self.process_with_node ast do
|
105
96
|
instance_eval &@block
|
data/lib/synvert/core/version.rb
CHANGED
@@ -56,8 +56,6 @@ describe Parser::AST::Node do
|
|
56
56
|
it 'gets for block node' do
|
57
57
|
source = 'RSpec.configure do |config|; end'
|
58
58
|
node = parse(source)
|
59
|
-
instance = double(current_source: source)
|
60
|
-
Synvert::Rewriter::Instance.current = instance
|
61
59
|
expect(node.arguments.map { |argument| argument.to_source }).to eq ['config']
|
62
60
|
end
|
63
61
|
|
@@ -192,8 +190,6 @@ describe Parser::AST::Node do
|
|
192
190
|
describe '#to_source' do
|
193
191
|
it 'gets for node' do
|
194
192
|
source = 'params[:user][:email]'
|
195
|
-
instance = double(current_source: source)
|
196
|
-
Synvert::Rewriter::Instance.current = instance
|
197
193
|
node = parse(source)
|
198
194
|
expect(node.to_source).to eq 'params[:user][:email]'
|
199
195
|
end
|
@@ -223,53 +219,45 @@ describe Parser::AST::Node do
|
|
223
219
|
rewriter = Synvert::Rewriter.new('foo', 'bar')
|
224
220
|
Synvert::Rewriter::Instance.new(rewriter, 'file pattern')
|
225
221
|
}
|
226
|
-
before { Synvert::Rewriter::Instance.current = instance }
|
227
222
|
|
228
223
|
it 'matches class name' do
|
229
224
|
source = 'class Synvert; end'
|
230
|
-
instance.current_source = source
|
231
225
|
node = parse(source)
|
232
226
|
expect(node).to be_match(type: 'class', name: 'Synvert')
|
233
227
|
end
|
234
228
|
|
235
229
|
it 'matches message with regexp' do
|
236
230
|
source = 'User.find_by_login(login)'
|
237
|
-
instance.current_source = source
|
238
231
|
node = parse(source)
|
239
232
|
expect(node).to be_match(type: 'send', message: /^find_by_/)
|
240
233
|
end
|
241
234
|
|
242
235
|
it 'matches arguments with symbol' do
|
243
236
|
source = 'params[:user]'
|
244
|
-
instance.current_source = source
|
245
237
|
node = parse(source)
|
246
238
|
expect(node).to be_match(type: 'send', receiver: 'params', message: '[]', arguments: [:user])
|
247
239
|
end
|
248
240
|
|
249
241
|
it 'matches assign number' do
|
250
242
|
source = 'at_least(0)'
|
251
|
-
instance.current_source = source
|
252
243
|
node = parse(source)
|
253
244
|
expect(node).to be_match(type: 'send', arguments: [0])
|
254
245
|
end
|
255
246
|
|
256
247
|
it 'matches arguments with string' do
|
257
248
|
source = 'params["user"]'
|
258
|
-
instance.current_source = source
|
259
249
|
node = parse(source)
|
260
250
|
expect(node).to be_match(type: 'send', receiver: 'params', message: '[]', arguments: ['user'])
|
261
251
|
end
|
262
252
|
|
263
253
|
it 'matches arguments any' do
|
264
254
|
source = 'config.middleware.insert_after ActiveRecord::QueryCache, Lifo::Cache, page_cache: false'
|
265
|
-
instance.current_source = source
|
266
255
|
node = parse(source)
|
267
256
|
expect(node).to be_match(type: 'send', arguments: {any: 'Lifo::Cache'})
|
268
257
|
end
|
269
258
|
|
270
259
|
it 'matches not' do
|
271
260
|
source = 'class Synvert; end'
|
272
|
-
instance.current_source = source
|
273
261
|
node = parse(source)
|
274
262
|
expect(node).not_to be_match(type: 'class', name: {not: 'Synvert'})
|
275
263
|
end
|
@@ -280,18 +268,15 @@ describe Parser::AST::Node do
|
|
280
268
|
rewriter = Synvert::Rewriter.new('foo', 'bar')
|
281
269
|
Synvert::Rewriter::Instance.new(rewriter, 'file pattern')
|
282
270
|
}
|
283
|
-
before { Synvert::Rewriter::Instance.current = instance }
|
284
271
|
|
285
272
|
it 'does not rewrite with unknown method' do
|
286
273
|
source = 'class Synvert; end'
|
287
|
-
instance.current_source = source
|
288
274
|
node = parse(source)
|
289
275
|
expect(node.rewritten_source('{{foobar}}')).to eq '{{foobar}}'
|
290
276
|
end
|
291
277
|
|
292
278
|
it 'rewrites with node known method' do
|
293
279
|
source = 'class Synvert; end'
|
294
|
-
instance.current_source = source
|
295
280
|
node = parse(source)
|
296
281
|
expect(node.rewritten_source('{{name}}')).to eq 'Synvert'
|
297
282
|
end
|
@@ -11,8 +11,7 @@ module Synvert::Core
|
|
11
11
|
"""
|
12
12
|
}
|
13
13
|
let(:node) { Parser::CurrentRuby.parse(source) }
|
14
|
-
let(:instance) { double(:current_node => node
|
15
|
-
before { Rewriter::Instance.current = instance }
|
14
|
+
let(:instance) { double(:current_node => node) }
|
16
15
|
|
17
16
|
describe Rewriter::IfExistCondition do
|
18
17
|
describe '#process' do
|
@@ -67,8 +66,7 @@ module Synvert::Core
|
|
67
66
|
end
|
68
67
|
"""
|
69
68
|
node = Parser::CurrentRuby.parse(source)
|
70
|
-
instance = double(:current_node => node
|
71
|
-
Rewriter::Instance.current = instance
|
69
|
+
instance = double(:current_node => node)
|
72
70
|
run = false
|
73
71
|
condition = Rewriter::IfOnlyExistCondition.new instance, type: 'send', message: 'include', arguments: ['EmailSpec::Helpers'] do
|
74
72
|
run = true
|
@@ -17,11 +17,8 @@ end
|
|
17
17
|
"""
|
18
18
|
}
|
19
19
|
let(:node) { Parser::CurrentRuby.parse(source) }
|
20
|
-
let(:instance) { double(:current_node => node, :current_node= => node
|
21
|
-
before
|
22
|
-
allow(instance).to receive(:process_with_node).and_yield
|
23
|
-
Rewriter::Instance.current = instance
|
24
|
-
end
|
20
|
+
let(:instance) { double(:current_node => node, :current_node= => node) }
|
21
|
+
before { allow(instance).to receive(:process_with_node).and_yield }
|
25
22
|
|
26
23
|
describe '#process' do
|
27
24
|
it 'not call block if no matching node' do
|
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.5.
|
4
|
+
version: 0.5.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: 2014-08-
|
11
|
+
date: 2014-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|