synvert-core 1.22.1 → 1.22.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 80a767738290801342257194e72b784fa8d1849f5a7a2098dabf5776cc33735b
4
- data.tar.gz: 7e6a0b109c9c281a3ead5e623107c30417288dc4ca694d0bdafcd71ccac67fc8
3
+ metadata.gz: 125adb6c7e7a82a3b03fa233fa0d43f9beabd1c46eb620323297689e7f47826f
4
+ data.tar.gz: 96118a021ba37a5723bc284b75163f7e897dc23b57d9bcc62c8203f0de9c6dbb
5
5
  SHA512:
6
- metadata.gz: 7abe8e7fbe261f1739974eb51b70cbf86a4a674bcdd8c2fcadce42962deb0a2be2532d28bdb808a211dd4e86c8bbd7150fb6d8def0ac263e9fcceba491f4b240
7
- data.tar.gz: 906b75c024ca0464d60bdadaf8dcf761f2e18d3df2704d66423eefcf1bdf98cae57804b368358ac0838053f76fee4a36c4989f774b630489291aaf5e05933f4a
6
+ metadata.gz: 7b1bd83e3d44bd056afb750005d27e3f03627f203c3d426ca7a1aca67343edb3184e46e32333532cbc0d953fd6ec56ed07985194cf6e7bf6cc3deeed20e7a91f
7
+ data.tar.gz: 70cd42406792039a01298a47fbd53451de86f66d955da83174d7ee81ae271c89e8a7e98c9a317c097eddf7cac837afa15206fdfdf6b499c623b6fb721fbe2f9f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.22.2 (2023-03-31)
4
+
5
+ * Do not replace white space characters in erb engine
6
+ * Check erb source in `ReplaceErbStmtWithExprAction`
7
+ * Update `node_mutation` to 1.13.1
8
+
3
9
  ## 1.22.1 (2023-03-31)
4
10
 
5
11
  * Fix indent when `insert_after` or `insert_before` to a child node
data/Gemfile.lock CHANGED
@@ -1,9 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- synvert-core (1.22.1)
4
+ synvert-core (1.22.2)
5
5
  activesupport (< 7.0.0)
6
- node_mutation (>= 1.13.0)
6
+ node_mutation (>= 1.13.1)
7
7
  node_query (>= 1.12.0)
8
8
  parallel
9
9
  parser
@@ -22,7 +22,6 @@ GEM
22
22
  coderay (1.1.3)
23
23
  concurrent-ruby (1.2.2)
24
24
  diff-lcs (1.5.0)
25
- erubis (2.7.0)
26
25
  fakefs (2.4.0)
27
26
  ffi (1.15.5)
28
27
  formatador (1.1.0)
@@ -49,8 +48,7 @@ GEM
49
48
  method_source (1.0.0)
50
49
  minitest (5.18.0)
51
50
  nenv (0.3.0)
52
- node_mutation (1.13.0)
53
- erubis
51
+ node_mutation (1.13.1)
54
52
  node_query (1.12.0)
55
53
  notiffany (0.1.3)
56
54
  nenv (~> 0.1)
@@ -9,9 +9,15 @@ module Synvert::Core
9
9
  # @param source [String] erb code.
10
10
  # @return [String] encoded ruby code.
11
11
  def encode(source)
12
- source.gsub(/%>.*?<%=?/m) { |str| ' ' * str.size }
13
- .sub(/^.*?<%=?/m) { |str| ' ' * str.size }
14
- .sub(/%>.*?$/m) { |str| ' ' * str.size }
12
+ source.gsub(/%>.*?<%=?/m) { |str| replace_all_code_but_white_space_characters(str) }
13
+ .sub(/^.*?<%=?/m) { |str| replace_all_code_but_white_space_characters(str) }
14
+ .sub(/%>.*?$/m) { |str| replace_all_code_but_white_space_characters(str) }
15
+ end
16
+
17
+ private
18
+
19
+ def replace_all_code_but_white_space_characters(source)
20
+ source.gsub(/\S/, ' ')
15
21
  end
16
22
  end
17
23
  end
@@ -8,8 +8,9 @@ module Synvert::Core
8
8
  # Initialize a ReplaceErbStmtWithExprAction.
9
9
  #
10
10
  # @param node [Synvert::Core::Rewriter::Node]
11
- def initialize(node)
11
+ def initialize(node, erb_source)
12
12
  super(node, nil)
13
+ @erb_source = erb_source
13
14
  end
14
15
 
15
16
  # The new erb expr code.
@@ -23,7 +24,12 @@ module Synvert::Core
23
24
 
24
25
  # Calculate the begin the end positions.
25
26
  def calculate_position
26
- @start = NodeMutation.adapter.get_start(@node) - 1
27
+ @start = NodeMutation.adapter.get_start(@node)
28
+ loop do
29
+ @start -= 1
30
+ break if @erb_source[@start] == '%'
31
+ end
32
+ @start += 1
27
33
  @end = @start
28
34
  end
29
35
  end
@@ -300,7 +300,9 @@ module Synvert::Core
300
300
  # replace_erb_stmt_with_expr
301
301
  # end
302
302
  def replace_erb_stmt_with_expr
303
- action = Rewriter::ReplaceErbStmtWithExprAction.new(@current_node)
303
+ absolute_file_path = File.join(Configuration.root_path, @file_path)
304
+ erb_source = read_source(absolute_file_path)
305
+ action = Rewriter::ReplaceErbStmtWithExprAction.new(@current_node, erb_source)
304
306
  add_action(action)
305
307
  end
306
308
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Synvert
4
4
  module Core
5
- VERSION = '1.22.1'
5
+ VERSION = '1.22.2'
6
6
  end
7
7
  end
data/lib/synvert/core.rb CHANGED
@@ -8,7 +8,6 @@ require 'parser_node_ext'
8
8
  require_relative './core/node_ext'
9
9
  require 'active_support'
10
10
  require 'active_support/core_ext'
11
- require 'erubis'
12
11
  require 'node_query'
13
12
  require 'node_mutation'
14
13
 
@@ -4,12 +4,33 @@ require 'spec_helper'
4
4
 
5
5
  module Synvert::Core
6
6
  RSpec.describe Rewriter::ReplaceErbStmtWithExprAction do
7
- context 'replace with single line' do
7
+ context 'replace with whitespace' do
8
8
  subject {
9
- source = "<% form_for post do |f| %>\n<% end %>"
10
- source = Engine::Erb.encode(source)
9
+ erb_source = "<% form_for post do |f| %>\n<% end %>"
10
+ source = Engine::Erb.encode(erb_source)
11
11
  node = Parser::CurrentRuby.parse(source).children.first
12
- described_class.new(node).process
12
+ described_class.new(node, erb_source).process
13
+ }
14
+
15
+ it 'gets start' do
16
+ expect(subject.start).to eq '<%'.length
17
+ end
18
+
19
+ it 'gets end' do
20
+ expect(subject.end).to eq '<%'.length
21
+ end
22
+
23
+ it 'gets new_code' do
24
+ expect(subject.new_code).to eq '='
25
+ end
26
+ end
27
+
28
+ context 'replace without whitespace' do
29
+ subject {
30
+ erb_source = "<%form_for post do |f|%>\n<%end%>"
31
+ source = Engine::Erb.encode(erb_source)
32
+ node = Parser::CurrentRuby.parse(source).children.first
33
+ described_class.new(node, erb_source).process
13
34
  }
14
35
 
15
36
  it 'gets start' do
@@ -179,8 +179,13 @@ module Synvert::Core
179
179
  instance.instance_variable_set(:@current_mutation, double)
180
180
  instance.current_node = double
181
181
  action = double
182
+ erb_source = '<% form_for @post do |f| %><% end %>'
183
+ allow(File).to receive(:read).and_return(erb_source)
182
184
  expect(instance.instance_variable_get(:@current_mutation)).to receive(:actions).and_return([])
183
- expect(Rewriter::ReplaceErbStmtWithExprAction).to receive(:new).with(instance.current_node).and_return(action)
185
+ expect(Rewriter::ReplaceErbStmtWithExprAction).to receive(:new).with(
186
+ instance.current_node,
187
+ erb_source
188
+ ).and_return(action)
184
189
  expect(action).to receive(:process)
185
190
  instance.replace_erb_stmt_with_expr
186
191
  end
@@ -356,7 +361,7 @@ module Synvert::Core
356
361
  <%= form_for @post do |f| %>
357
362
  <% end %>
358
363
  EOS
359
- expect(File).to receive(:read).with('./app/views/posts/_form.html.erb', encoding: 'UTF-8').and_return(input)
364
+ allow(File).to receive(:read).with('./app/views/posts/_form.html.erb', encoding: 'UTF-8').and_return(input)
360
365
  expect(File).to receive(:write).with('./app/views/posts/_form.html.erb', output)
361
366
  instance.process
362
367
  end
@@ -419,7 +424,7 @@ module Synvert::Core
419
424
  <% form_for @post do |f| %>
420
425
  <% end %>
421
426
  EOS
422
- expect(File).to receive(:read).with('./app/views/posts/_form.html.erb', encoding: 'UTF-8').and_return(input)
427
+ allow(File).to receive(:read).with('./app/views/posts/_form.html.erb', encoding: 'UTF-8').and_return(input)
423
428
  result = instance.test
424
429
  expect(result.file_path).to eq 'app/views/posts/_form.html.erb'
425
430
  expect(result.actions).to eq [NodeMutation::Struct::Action.new(2, 2, '=')]
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_runtime_dependency "activesupport", "< 7.0.0"
23
23
  spec.add_runtime_dependency "node_query", ">= 1.12.0"
24
- spec.add_runtime_dependency "node_mutation", ">= 1.13.0"
24
+ spec.add_runtime_dependency "node_mutation", ">= 1.13.1"
25
25
  spec.add_runtime_dependency "parser"
26
26
  spec.add_runtime_dependency "parser_node_ext", ">= 1.0.0"
27
27
  spec.add_runtime_dependency "parallel"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synvert-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.22.1
4
+ version: 1.22.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 1.13.0
47
+ version: 1.13.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 1.13.0
54
+ version: 1.13.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: parser
57
57
  requirement: !ruby/object:Gem::Requirement