synvert-core 0.19.0 → 0.20.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: e1248f2c7c2721ea6135b6adb3a5d40afc95497c63d91e8b1b508febb6e7d4b1
4
- data.tar.gz: 9e7f64e254dc25e1bf9894559c7586eb6fb96f3aea07bedd09d71a17d930e0fc
3
+ metadata.gz: 43a4d413d049428517fba9bfe79d57aadec0fa3b98d72a377170888005fe8e50
4
+ data.tar.gz: c0efe87cdfcbac1e837126f6525c45bfaba5213fee0688ca774666a60ba62851
5
5
  SHA512:
6
- metadata.gz: a940b5ea3029c9cbc7b10034e3e6eca05370d4015a4c98af28a1eb8b2a825133627f1d25da20e8986d89f52da00c7056893eb9946aff5a017979bc720d097755
7
- data.tar.gz: 37a51398a51fec8cac11b2b3aae8353f5483bfbd7e9485d1b644b8000dea5186036438f1a01b9f4c0d4ce8b940ab6b40261673eb309a663c6f61df45afcf1b45
6
+ metadata.gz: 8b81c56d7e16caf4d1409e896dd405a6b6c242df8512da45ca83b43040e74edb34a11b1197e90d6d58e05c5225ff695992d52bbaae0862c45e68ad151791e29b
7
+ data.tar.gz: 56f14b2292823f227193faf06c727c819b0adcb684f6d3db2429b2cb8cc01cc7a0f9a2147eb98e7c2ea8c23297dcf415a9c27a59ba5ad02b2dbd187b1d08a393
data/.travis.yml CHANGED
@@ -1,3 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.3.1
3
+ - 2.3
4
+ - 2.4
5
+ - 2.5
6
+ - 2.6
7
+ - 2.7
8
+ - 3.0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.20.0 (2021-02-15)
4
+
5
+ * Call snippet in sandbox mode
6
+
3
7
  ## 0.19.0 (2021-02-07)
4
8
 
5
9
  * Simplify `Configuration`
@@ -80,13 +80,18 @@ module Synvert::Core
80
80
  #
81
81
  # @param group [String] the rewriter group.
82
82
  # @param name [String] the rewriter name.
83
+ # @param sandbox [Boolean] if run in sandbox mode, default is false.
83
84
  # @return [Synvert::Core::Rewriter] the registered rewriter.
84
85
  # @raise [Synvert::Core::RewriterNotFound] if the registered rewriter is not found.
85
- def call(group, name)
86
+ def call(group, name, sandbox = false)
86
87
  group, name = group.to_s, name.to_s
87
88
  if exist? group, name
88
89
  rewriter = rewriters[group][name]
89
- rewriter.process
90
+ if sandbox
91
+ rewriter.process_with_sandbox
92
+ else
93
+ rewriter.process
94
+ end
90
95
  rewriter
91
96
  else
92
97
  raise RewriterNotFound, "Rewriter #{group}/#{name} not found"
@@ -165,8 +170,11 @@ module Synvert::Core
165
170
  # It will call the block but doesn't change any file.
166
171
  def process_with_sandbox
167
172
  @sandbox = true
168
- process
169
- @sandbox = false
173
+ begin
174
+ process
175
+ ensure
176
+ @sandbox = false
177
+ end
170
178
  end
171
179
 
172
180
  # Add a warning.
@@ -260,7 +268,7 @@ module Synvert::Core
260
268
  # @param group [String] group of another rewriter.
261
269
  # @param name [String] name of another rewriter.
262
270
  def add_snippet(group, name)
263
- @sub_snippets << self.class.call(group.to_s, name.to_s)
271
+ @sub_snippets << self.class.call(group.to_s, name.to_s, @sandbox)
264
272
  end
265
273
 
266
274
  # Parse helper_method dsl, it defines helper method for [Synvert::Core::Rewriter::Instance].
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Synvert
4
4
  module Core
5
- VERSION = '0.19.0'
5
+ VERSION = '0.20.0'
6
6
  end
7
7
  end
@@ -230,6 +230,12 @@ module Synvert::Core
230
230
  Rewriter.call 'group', 'rewriter'
231
231
  end
232
232
 
233
+ it 'registers and calls rewriter in sandbox mode' do
234
+ rewriter = Rewriter.new 'group', 'rewriter'
235
+ expect(rewriter).to receive(:process_with_sandbox)
236
+ Rewriter.call 'group', 'rewriter', true
237
+ end
238
+
233
239
  it 'raises RewriterNotFound if rewriter not found' do
234
240
  expect { Rewriter.call 'group', 'rewriter' }.to raise_error(RewriterNotFound)
235
241
  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.19.0
4
+ version: 0.20.0
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-02-07 00:00:00.000000000 Z
11
+ date: 2021-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser