synvert-core 1.33.2 → 1.34.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/Gemfile.lock +1 -1
- data/README.md +3 -0
- data/lib/synvert/core/configuration.rb +26 -0
- data/lib/synvert/core/rewriter.rb +43 -8
- data/lib/synvert/core/version.rb +1 -1
- data/spec/synvert/core/configuration_spec.rb +25 -0
- data/spec/synvert/core/rewriter_spec.rb +12 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7407325ab10af6e8e90b2a2e10bc737686a555603f362319779a2a9868d8ba71
|
4
|
+
data.tar.gz: eb2f33a8ea48fc4836af3529ca4f684c7c8e1c98a797d55703ada5b60505878e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 70c762d52252e31200861d30d418f4f634ff4f9dfcacd1d11964865be664118a78a6a76362614232f5a1b465ad8862d974adfa1f3baed6395cac6dac000ebffc
|
7
|
+
data.tar.gz: df130135e5df9453b3f4d6847c68aaf0703fb31765b384ca86c31ca52c0d60c60f64717ac2b26457d872a5a523a640cb5f6a9b7715fefe2b3df2008f691e3b01
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 1.34.0 (2024-02-29)
|
4
|
+
|
5
|
+
* Add `with_configurations` dsl
|
6
|
+
* Add `save_data` dsl
|
7
|
+
* Add `load_data` dsl
|
8
|
+
|
9
|
+
## 1.33.3 (2024-02-28)
|
10
|
+
|
11
|
+
* Preserve current parser
|
12
|
+
|
3
13
|
## 1.33.2 (2024-02-24)
|
4
14
|
|
5
15
|
* Reset `@warnings`, `@affected_files`, and `@test_results`
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -70,6 +70,9 @@ DSLs are as follows
|
|
70
70
|
* [helper_method](https://xinminlabs.github.io/synvert-core-ruby/Synvert/Core/Rewriter.html#helper_method-instance_method) - define a helper method
|
71
71
|
* [add_snippet](https://xinminlabs.github.io/synvert-core-ruby/Synvert/Core/Rewriter.html#add_snippet-instance_method) - call another rewriter
|
72
72
|
* [call_helper](https://xinminlabs.github.io/synvert-core-ruby/Synvert/Core/Rewriter.html#call_helper-instance_method) - call a shared rewriter
|
73
|
+
* [with_configurations](https://xinminlabs.github.io/synvert-core-ruby/Synvert/Core/Rewriter.html#with_configurations-instance_method) - execute a block of code with temporary configurations
|
74
|
+
* [save_data](https://xinminlabs.github.io/synvert-core-ruby/Synvert/Core/Rewriter.html#save_data-instance_method) - save data
|
75
|
+
* [load_data](https://xinminlabs.github.io/synvert-core-ruby/Synvert/Core/Rewriter.html#load_data-instance_method) - load data
|
73
76
|
|
74
77
|
Scopes:
|
75
78
|
|
@@ -100,6 +100,32 @@ module Synvert::Core
|
|
100
100
|
def test_result
|
101
101
|
@test_result || 'actions'
|
102
102
|
end
|
103
|
+
|
104
|
+
# Temporarily sets the specified configurations, executes the given block, and then restores the original configurations.
|
105
|
+
#
|
106
|
+
# @param configurations [Hash] The configurations to be set temporarily.
|
107
|
+
# @yield The block of code to be executed.
|
108
|
+
#
|
109
|
+
# @example
|
110
|
+
# with_temporary_configurations({ number_of_workers: 1 }) do
|
111
|
+
# # Code to be executed with temporary configurations
|
112
|
+
# end
|
113
|
+
def with_temporary_configurations(configurations, &block)
|
114
|
+
old_instance_variables = instance_variables.reduce({}) do |hash, var|
|
115
|
+
hash[var] = instance_variable_get(var)
|
116
|
+
hash
|
117
|
+
end
|
118
|
+
|
119
|
+
configurations.each do |variable, value|
|
120
|
+
instance_variable_set("@#{variable}", value)
|
121
|
+
end
|
122
|
+
|
123
|
+
block.call
|
124
|
+
|
125
|
+
old_instance_variables.each do |var, value|
|
126
|
+
instance_variable_set(var, value)
|
127
|
+
end
|
128
|
+
end
|
103
129
|
end
|
104
130
|
end
|
105
131
|
end
|
@@ -361,13 +361,15 @@ module Synvert::Core
|
|
361
361
|
return unless rewriter && rewriter.is_a?(Rewriter)
|
362
362
|
|
363
363
|
rewriter.options = @options
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
rewriter.
|
369
|
-
|
370
|
-
|
364
|
+
preserve_current_parser do
|
365
|
+
if !rewriter.options[:write_to_file]
|
366
|
+
results = rewriter.test
|
367
|
+
merge_test_results(results)
|
368
|
+
elsif rewriter.options[:run_instance]
|
369
|
+
rewriter.process
|
370
|
+
else
|
371
|
+
rewriter.process_with_sandbox
|
372
|
+
end
|
371
373
|
end
|
372
374
|
@sub_snippets << rewriter
|
373
375
|
end
|
@@ -385,7 +387,9 @@ module Synvert::Core
|
|
385
387
|
helper = Synvert::Core::Helper.fetch(name) || Utils.eval_snippet(name)
|
386
388
|
return unless helper && helper.is_a?(Synvert::Core::Helper)
|
387
389
|
|
388
|
-
|
390
|
+
preserve_current_parser do
|
391
|
+
instance_exec(options, &helper.block)
|
392
|
+
end
|
389
393
|
end
|
390
394
|
|
391
395
|
# It defines helper method for {Synvert::Core::Rewriter::Instance}.
|
@@ -405,6 +409,30 @@ module Synvert::Core
|
|
405
409
|
@helpers << { name: name, block: block }
|
406
410
|
end
|
407
411
|
|
412
|
+
# Executes a block of code with temporary configurations.
|
413
|
+
#
|
414
|
+
# @param configurations [Hash] The temporary configurations to apply.
|
415
|
+
# @yield The block of code to execute.
|
416
|
+
def with_configurations(configurations, &block)
|
417
|
+
Configuration.with_temporary_configurations(configurations, &block)
|
418
|
+
end
|
419
|
+
|
420
|
+
# Saves data with a given key and value.
|
421
|
+
#
|
422
|
+
# @param key [Symbol] the key to identify the data
|
423
|
+
# @param value [Object] the value to be saved
|
424
|
+
def save_data(key, value)
|
425
|
+
Synvert::Core.instance_variable_set("@#{key}", value)
|
426
|
+
end
|
427
|
+
|
428
|
+
# Loads data with the given key.
|
429
|
+
#
|
430
|
+
# @param key [Symbol] the key of the data to be loaded
|
431
|
+
# @return [Object] the data loaded
|
432
|
+
def load_data(key)
|
433
|
+
Synvert::Core.instance_variable_get("@#{key}")
|
434
|
+
end
|
435
|
+
|
408
436
|
private
|
409
437
|
|
410
438
|
# Handle one file.
|
@@ -432,5 +460,12 @@ module Synvert::Core
|
|
432
460
|
def merge_test_result(result)
|
433
461
|
@test_results[result.file_path] << result
|
434
462
|
end
|
463
|
+
|
464
|
+
def preserve_current_parser
|
465
|
+
current_parser = @options[:parser]
|
466
|
+
yield
|
467
|
+
ensure
|
468
|
+
@options[:parser] = current_parser
|
469
|
+
end
|
435
470
|
end
|
436
471
|
end
|
data/lib/synvert/core/version.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Synvert::Core
|
4
|
+
RSpec.describe Configuration do
|
5
|
+
after do
|
6
|
+
Configuration.number_of_workers = nil
|
7
|
+
Configuration.strict = nil
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '.with_temporary_configurations' do
|
11
|
+
it 'temporarily sets instance variables and restores them after block execution' do
|
12
|
+
Configuration.number_of_workers = 4
|
13
|
+
Configuration.strict = true
|
14
|
+
|
15
|
+
Configuration.with_temporary_configurations(number_of_workers: 1, strict: false) do
|
16
|
+
expect(Configuration.number_of_workers).to eq(1)
|
17
|
+
expect(Configuration.strict).to eq(false)
|
18
|
+
end
|
19
|
+
|
20
|
+
expect(Configuration.number_of_workers).to eq(4)
|
21
|
+
expect(Configuration.strict).to eq(true)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -395,6 +395,18 @@ module Synvert::Core
|
|
395
395
|
expect(instance.dynamic_helper('arg1', 'arg2')).to eq 'dynamic result'
|
396
396
|
end
|
397
397
|
|
398
|
+
it 'parses save_data and load_data' do
|
399
|
+
data = nil
|
400
|
+
rewriter =
|
401
|
+
Rewriter.new 'group', 'name' do
|
402
|
+
hash = { foo: 'bar' }
|
403
|
+
save_data :object, hash
|
404
|
+
data = load_data :object
|
405
|
+
end
|
406
|
+
rewriter.process
|
407
|
+
expect(data).to eq({ foo: 'bar' })
|
408
|
+
end
|
409
|
+
|
398
410
|
describe 'class methods' do
|
399
411
|
before :each do
|
400
412
|
Rewriter.clear
|
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: 1.
|
4
|
+
version: 1.34.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: 2024-02-
|
11
|
+
date: 2024-02-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -196,6 +196,7 @@ files:
|
|
196
196
|
- lib/synvert/core/version.rb
|
197
197
|
- spec/spec_helper.rb
|
198
198
|
- spec/support/parser_helper.rb
|
199
|
+
- spec/synvert/core/configuration_spec.rb
|
199
200
|
- spec/synvert/core/engine/erb_spec.rb
|
200
201
|
- spec/synvert/core/engine/haml_spec.rb
|
201
202
|
- spec/synvert/core/engine/slim_spec.rb
|
@@ -242,6 +243,7 @@ summary: convert ruby code to better syntax.
|
|
242
243
|
test_files:
|
243
244
|
- spec/spec_helper.rb
|
244
245
|
- spec/support/parser_helper.rb
|
246
|
+
- spec/synvert/core/configuration_spec.rb
|
245
247
|
- spec/synvert/core/engine/erb_spec.rb
|
246
248
|
- spec/synvert/core/engine/haml_spec.rb
|
247
249
|
- spec/synvert/core/engine/slim_spec.rb
|