synvert-core 0.6.2 → 0.6.3
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 +4 -0
- data/lib/synvert/core/rewriter.rb +13 -8
- data/lib/synvert/core/rewriter/helper.rb +0 -21
- data/lib/synvert/core/rewriter/instance.rb +21 -0
- data/lib/synvert/core/version.rb +1 -1
- data/spec/synvert/core/rewriter/helper_spec.rb +0 -26
- data/spec/synvert/core/rewriter/instance_spec.rb +26 -0
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bccfebdd70bca3e49d4fd8cf7ca2fb766cdc8d2c
|
4
|
+
data.tar.gz: 40b8ff41f248de2a48a289ceaaf00303d3f78c14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1724274f0715e0a0b523ed0f4985c7665c6a8deee24244378eabd5b934d1a895742a3fc3bc0bc33ba637ad5110d75afae77091857df895f5aacc0d3721c978df
|
7
|
+
data.tar.gz: 2578b1a620f8798376fcf4868e2cfce426b6552426dd28ae3fd34bcc157d0223fed65ad7eb7966b2ad19f037ff527bd25f49eca4182c1594f276786f5de6df5e
|
data/CHANGELOG.md
CHANGED
@@ -49,9 +49,8 @@ module Synvert::Core
|
|
49
49
|
# @param rewriter [Synvert::Core::Rewriter] the rewriter to register.
|
50
50
|
def register(group, name, rewriter)
|
51
51
|
group, name = group.to_s, name.to_s
|
52
|
-
|
53
|
-
|
54
|
-
@rewriters[group][name] = rewriter
|
52
|
+
rewriters[group] ||= {}
|
53
|
+
rewriters[group][name] = rewriter
|
55
54
|
end
|
56
55
|
|
57
56
|
# Fetch a rewriter by group and name.
|
@@ -63,7 +62,7 @@ module Synvert::Core
|
|
63
62
|
def fetch(group, name)
|
64
63
|
group, name = group.to_s, name.to_s
|
65
64
|
if exist? group, name
|
66
|
-
|
65
|
+
rewriters[group][name]
|
67
66
|
else
|
68
67
|
raise RewriterNotFound.new "Rewriter #{group} #{name} not found"
|
69
68
|
end
|
@@ -78,7 +77,7 @@ module Synvert::Core
|
|
78
77
|
def call(group, name)
|
79
78
|
group, name = group.to_s, name.to_s
|
80
79
|
if exist? group, name
|
81
|
-
rewriter =
|
80
|
+
rewriter = rewriters[group][name]
|
82
81
|
rewriter.process
|
83
82
|
rewriter
|
84
83
|
else
|
@@ -93,7 +92,7 @@ module Synvert::Core
|
|
93
92
|
# @return [Boolean] true if the rewriter exist.
|
94
93
|
def exist?(group, name)
|
95
94
|
group, name = group.to_s, name.to_s
|
96
|
-
if
|
95
|
+
if rewriters[group] && rewriters[group][name]
|
97
96
|
true
|
98
97
|
else
|
99
98
|
false
|
@@ -104,12 +103,18 @@ module Synvert::Core
|
|
104
103
|
#
|
105
104
|
# @return [Hash<String, Hash<String, Rewriter>>]
|
106
105
|
def availables
|
107
|
-
|
106
|
+
rewriters
|
108
107
|
end
|
109
108
|
|
110
109
|
# Clear all registered rewriters.
|
111
110
|
def clear
|
112
|
-
|
111
|
+
rewriters.clear
|
112
|
+
end
|
113
|
+
|
114
|
+
private
|
115
|
+
|
116
|
+
def rewriters
|
117
|
+
@rewriters ||= {}
|
113
118
|
end
|
114
119
|
end
|
115
120
|
|
@@ -35,26 +35,5 @@ module Synvert::Core
|
|
35
35
|
.sub(/^\[(.*)\]$/) { $1 }
|
36
36
|
.sub(/^{(.*)}$/) { $1 }
|
37
37
|
end
|
38
|
-
|
39
|
-
# Set current_node to node and process.
|
40
|
-
#
|
41
|
-
# @param node [Parser::AST::Node] node set to current_node
|
42
|
-
# @yield process
|
43
|
-
def process_with_node(node)
|
44
|
-
self.current_node = node
|
45
|
-
yield
|
46
|
-
self.current_node = node
|
47
|
-
end
|
48
|
-
|
49
|
-
# Set current_node properly, process and set current_node back to original current_node.
|
50
|
-
#
|
51
|
-
# @param node [Parser::AST::Node] node set to current_node
|
52
|
-
# @yield process
|
53
|
-
def process_with_other_node(node)
|
54
|
-
original_node = self.current_node
|
55
|
-
self.current_node = node
|
56
|
-
yield
|
57
|
-
self.current_node = original_node
|
58
|
-
end
|
59
38
|
end
|
60
39
|
end
|
@@ -119,6 +119,27 @@ module Synvert::Core
|
|
119
119
|
@current_node
|
120
120
|
end
|
121
121
|
|
122
|
+
# Set current_node to node and process.
|
123
|
+
#
|
124
|
+
# @param node [Parser::AST::Node] node set to current_node
|
125
|
+
# @yield process
|
126
|
+
def process_with_node(node)
|
127
|
+
self.current_node = node
|
128
|
+
yield
|
129
|
+
self.current_node = node
|
130
|
+
end
|
131
|
+
|
132
|
+
# Set current_node properly, process and set current_node back to original current_node.
|
133
|
+
#
|
134
|
+
# @param node [Parser::AST::Node] node set to current_node
|
135
|
+
# @yield process
|
136
|
+
def process_with_other_node(node)
|
137
|
+
original_node = self.current_node
|
138
|
+
self.current_node = node
|
139
|
+
yield
|
140
|
+
self.current_node = original_node
|
141
|
+
end
|
142
|
+
|
122
143
|
#######
|
123
144
|
# DSL #
|
124
145
|
#######
|
data/lib/synvert/core/version.rb
CHANGED
@@ -45,31 +45,5 @@ module Synvert::Core
|
|
45
45
|
expect(dummy_instance.strip_brackets("(123]")).to eq "(123]"
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
49
|
-
describe '#process_with_node' do
|
50
|
-
it 'resets current_node' do
|
51
|
-
node1 = double()
|
52
|
-
node2 = double()
|
53
|
-
instance.process_with_node(node1) do
|
54
|
-
instance.current_node = node2
|
55
|
-
expect(instance.current_node).to eq node2
|
56
|
-
end
|
57
|
-
expect(instance.current_node).to eq node1
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
describe '#process_with_other_node' do
|
62
|
-
it 'resets current_node' do
|
63
|
-
node1 = double()
|
64
|
-
node2 = double()
|
65
|
-
node3 = double()
|
66
|
-
instance.current_node = node1
|
67
|
-
instance.process_with_other_node(node2) do
|
68
|
-
instance.current_node = node3
|
69
|
-
expect(instance.current_node).to eq node3
|
70
|
-
end
|
71
|
-
expect(instance.current_node).to eq node1
|
72
|
-
end
|
73
|
-
end
|
74
48
|
end
|
75
49
|
end
|
@@ -219,5 +219,31 @@ end
|
|
219
219
|
expect(instance.instance_variable_get :@actions).to eq [action3]
|
220
220
|
end
|
221
221
|
end
|
222
|
+
|
223
|
+
describe '#process_with_node' do
|
224
|
+
it 'resets current_node' do
|
225
|
+
node1 = double()
|
226
|
+
node2 = double()
|
227
|
+
instance.process_with_node(node1) do
|
228
|
+
instance.current_node = node2
|
229
|
+
expect(instance.current_node).to eq node2
|
230
|
+
end
|
231
|
+
expect(instance.current_node).to eq node1
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
describe '#process_with_other_node' do
|
236
|
+
it 'resets current_node' do
|
237
|
+
node1 = double()
|
238
|
+
node2 = double()
|
239
|
+
node3 = double()
|
240
|
+
instance.current_node = node1
|
241
|
+
instance.process_with_other_node(node2) do
|
242
|
+
instance.current_node = node3
|
243
|
+
expect(instance.current_node).to eq node3
|
244
|
+
end
|
245
|
+
expect(instance.current_node).to eq node1
|
246
|
+
end
|
247
|
+
end
|
222
248
|
end
|
223
249
|
end
|
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.6.
|
4
|
+
version: 0.6.3
|
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-09-
|
11
|
+
date: 2014-09-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|
@@ -176,4 +176,3 @@ test_files:
|
|
176
176
|
- spec/synvert/core/rewriter/scope_spec.rb
|
177
177
|
- spec/synvert/core/rewriter/warning_spec.rb
|
178
178
|
- spec/synvert/core/rewriter_spec.rb
|
179
|
-
has_rdoc:
|