synvert-core 1.12.0 → 1.13.0

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: e526dbe6f12418da40df7cb5b945f7ed957820573455b575f2a609c334b58e72
4
- data.tar.gz: 1f22528b636b548c9ddb05466d366e62dce813794d173c11b8de11ef522b97a8
3
+ metadata.gz: d3d907ab2e51c1861a28d12934cf453f63df79fc23e072c1005013c5f9b137be
4
+ data.tar.gz: 16e8425a70a74b779b36265eec12aacca4b6073e5911052b0114726a740f6e99
5
5
  SHA512:
6
- metadata.gz: 46f29de95717e764a33c0303c20086fb3fc3dcc43c7548c174b4eb46f368e2b0cec6b1ea6ff88eed04654f58cf9dad3066aa679ece8d7a6cfb2a7676095fe4aa
7
- data.tar.gz: 7622e84c396751bd49b57464424efee84ba3f45d727c5653528fb11a5da7d26e856c0008ea1dc5967e7ee3afe8f238a8dbb6c67bc5071970312523a426a98dd3
6
+ metadata.gz: 3a73e71ccb24cbdf40fe515fcb732e242e27e5dbac5b130bc9e88d19b8c3ef315cc7c3e00195d3d4e15f6a24bd4fb89336686ae379451e3fa7433548bd3402c8
7
+ data.tar.gz: c6e026527d96e8766a330626c330d280c6ab650834e71b56c64c4cf81a4dd7d0911d89919c16e0f651208e0d0ce1c9c3b36f6c08f4c9f5f7d04d0af4849a713d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.13.0 (2022-10-17)
4
+
5
+ * Add `insert_before` dsl
6
+ * Update `insert_after` to reuse `NodeMutation#insert`
7
+
3
8
  ## 1.12.0 (2022-10-14)
4
9
 
5
10
  * Condition accepts both nql and rules
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- synvert-core (1.12.0)
4
+ synvert-core (1.13.0)
5
5
  activesupport (< 7.0.0)
6
6
  erubis
7
7
  node_mutation
@@ -50,10 +50,10 @@ GEM
50
50
  method_source (1.0.0)
51
51
  minitest (5.16.3)
52
52
  nenv (0.3.0)
53
- node_mutation (1.4.4)
53
+ node_mutation (1.5.0)
54
54
  activesupport (< 7.0.0)
55
55
  erubis
56
- node_query (1.7.0)
56
+ node_query (1.8.1)
57
57
  activesupport (< 7.0.0)
58
58
  notiffany (0.1.3)
59
59
  nenv (~> 0.1)
data/README.md CHANGED
@@ -90,6 +90,7 @@ Actions:
90
90
  * [prepend](./Synvert/Core/Rewriter/Instance.html#prepend-instance_method) - prepend the code to the bottom of current node body
91
91
  * [insert](./Synvert/Core/Rewriter/Instance.html#insert-instance_method) - insert code
92
92
  * [insert_after](./Synvert/Core/Rewriter/Instance.html#insert_after-instance_method) - insert the code next to the current node
93
+ * [insert_before](./Synvert/Core/Rewriter/Instance.html#insert_before-instance_method) - insert the code previous to the current node
93
94
  * [replace](./Synvert/Core/Rewriter/Instance.html#replace-instance_method) - replace the code of specified child nodes
94
95
  * [delete](./Synvert/Core/Rewriter/Instance.html#delete-instance_method) - delete the code specified child nodes
95
96
  * [wrap](./Synvert/Core/Rewriter/Instance.html#wrap-instance_method) - wrap the current node with code
@@ -166,8 +166,7 @@ module Synvert::Core
166
166
  Rewriter::IfOnlyExistCondition.new(self, nql_or_rules, &block).process
167
167
  end
168
168
 
169
- # Parse +append+ dsl, it creates a {Synvert::Core::Rewriter::AppendAction} to
170
- # append the code to the bottom of current node body.
169
+ # Parse +append+ dsl, it appends the code to the bottom of current node body.
171
170
  # @example
172
171
  # # def teardown
173
172
  # # clean_something
@@ -185,8 +184,7 @@ module Synvert::Core
185
184
  @current_mutation.append(@current_node, code)
186
185
  end
187
186
 
188
- # Parse +prepend+ dsl, it creates a {Synvert::Core::Rewriter::PrependAction} to
189
- # prepend the code to the top of current node body.
187
+ # Parse +prepend+ dsl, it prepends the code to the top of current node body.
190
188
  # @example
191
189
  # # def setup
192
190
  # # do_something
@@ -204,7 +202,7 @@ module Synvert::Core
204
202
  @current_mutation.prepend(@current_node, code)
205
203
  end
206
204
 
207
- # Parse +insert+ dsl, it creates a {Synvert::Core::Rewriter::InsertAction} to insert code.
205
+ # Parse +insert+ dsl, it inserts code.
208
206
  # @example
209
207
  # # open('http://test.com')
210
208
  # # =>
@@ -219,8 +217,7 @@ module Synvert::Core
219
217
  @current_mutation.insert(@current_node, code, at: at, to: to)
220
218
  end
221
219
 
222
- # Parse +insert_after+ dsl, it creates a {Synvert::Core::Rewriter::InsertAfterAction} to
223
- # insert the code next to the current node.
220
+ # Parse +insert_after+ dsl, it inserts the code next to the current node.
224
221
  # @example
225
222
  # # Synvert::Application.config.secret_token = "0447aa931d42918bfb934750bb78257088fb671186b5d1b6f9fddf126fc8a14d34f1d045cefab3900751c3da121a8dd929aec9bafe975f1cabb48232b4002e4e"
226
223
  # # =>
@@ -231,11 +228,26 @@ module Synvert::Core
231
228
  # end
232
229
  # @param code [String] code need to be inserted.
233
230
  def insert_after(code)
234
- @current_mutation.insert_after(@current_node, code)
231
+ column = ' ' * NodeMutation.adapter.get_start_loc(@current_node).column
232
+ @current_mutation.insert(@current_node, "\n#{column}#{code}", { at: 'end' })
235
233
  end
236
234
 
237
- # Parse +replace_erb_stmt_with_expr+ dsl, it creates a {Synvert::Core::Rewriter::ReplaceErbStmtWithExprAction} to
238
- # replace erb stmt code to expr code.
235
+ # Parse +insert_before+ dsl, it inserts the code previous to the current node.
236
+ # @example
237
+ # # Synvert::Application.config.secret_token = "0447aa931d42918bfb934750bb78257088fb671186b5d1b6f9fddf126fc8a14d34f1d045cefab3900751c3da121a8dd929aec9bafe975f1cabb48232b4002e4e"
238
+ # # =>
239
+ # # Synvert::Application.config.secret_key_base = "bf4f3f46924ecd9adcb6515681c78144545bba454420973a274d7021ff946b8ef043a95ca1a15a9d1b75f9fbdf85d1a3afaf22f4e3c2f3f78e24a0a188b581df"
240
+ # # Synvert::Application.config.secret_token = "0447aa931d42918bfb934750bb78257088fb671186b5d1b6f9fddf126fc8a14d34f1d045cefab3900751c3da121a8dd929aec9bafe975f1cabb48232b4002e4e"
241
+ # with_node type: 'send', message: 'secret_token=' do
242
+ # insert_before "{{receiver}}.secret_key_base = \"#{SecureRandom.hex(64)}\""
243
+ # end
244
+ # @param code [String] code need to be inserted.
245
+ def insert_before(code)
246
+ column = ' ' * NodeMutation.adapter.get_start_loc(@current_node).column
247
+ @current_mutation.insert(@current_node, "#{code}\n#{column}", { at: 'beginning' })
248
+ end
249
+
250
+ # Parse +replace_erb_stmt_with_expr+ dsl, it replaces erb stmt code to expr code.
239
251
  # @example
240
252
  # # <% form_for post do |f| %>
241
253
  # # <% end %>
@@ -249,8 +261,7 @@ module Synvert::Core
249
261
  @current_mutation.actions << Rewriter::ReplaceErbStmtWithExprAction.new(@current_node).process
250
262
  end
251
263
 
252
- # Parse +replace_with+ dsl, it creates a {Synvert::Core::Rewriter::ReplaceWithAction} to
253
- # replace the whole code of current node.
264
+ # Parse +replace_with+ dsl, it replaces the whole code of current node.
254
265
  # @example
255
266
  # # obj.stub(:foo => 1, :bar => 2)
256
267
  # # =>
@@ -263,8 +274,7 @@ module Synvert::Core
263
274
  @current_mutation.replace_with(@current_node, code)
264
275
  end
265
276
 
266
- # Parse +replace+ dsl, it creates a {Synvert::Core::Rewriter::ReplaceAction} to
267
- # replace the code of specified child nodes.
277
+ # Parse +replace+ dsl, it replaces the code of specified child nodes.
268
278
  # @example
269
279
  # # assert(object.empty?)
270
280
  # # =>
@@ -279,7 +289,7 @@ module Synvert::Core
279
289
  @current_mutation.replace(@current_node, *selectors, with: with)
280
290
  end
281
291
 
282
- # Parse +remove+ dsl, it creates a {Synvert::Core::Rewriter::RemoveAction} to remove current node.
292
+ # Parse +remove+ dsl, it removes current node.
283
293
  # @example
284
294
  # with_node type: 'send', message: { in: %w[puts p] } do
285
295
  # remove
@@ -290,7 +300,7 @@ module Synvert::Core
290
300
  @current_mutation.remove(@current_node, **options)
291
301
  end
292
302
 
293
- # Parse +delete+ dsl, it creates a {Synvert::Core::Rewriter::DeleteAction} to delete child nodes.
303
+ # Parse +delete+ dsl, it deletes child nodes.
294
304
  # @example
295
305
  # # FactoryBot.create(...)
296
306
  # # =>
@@ -305,8 +315,7 @@ module Synvert::Core
305
315
  @current_mutation.delete(@current_node, *selectors, **options)
306
316
  end
307
317
 
308
- # Parse +wrap+ dsl, it creates a {Synvert::Core::Rewriter::WrapAction} to
309
- # wrap current node with code.
318
+ # Parse +wrap+ dsl, it wraps current node with code.
310
319
  # @example
311
320
  # # class Foobar
312
321
  # # end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Synvert
4
4
  module Core
5
- VERSION = '1.12.0'
5
+ VERSION = '1.13.0'
6
6
  end
7
7
  end
@@ -127,10 +127,19 @@ module Synvert::Core
127
127
  it 'parses insert_after' do
128
128
  instance.current_mutation = double
129
129
  instance.current_node = double
130
- expect(instance.current_mutation).to receive(:insert_after).with(instance.current_node, 'Foobar')
130
+ expect(NodeMutation).to receive_message_chain(:adapter, :get_start_loc, :column).and_return(2)
131
+ expect(instance.current_mutation).to receive(:insert).with(instance.current_node, "\n Foobar", at: 'end')
131
132
  instance.insert_after 'Foobar'
132
133
  end
133
134
 
135
+ it 'parses insert_before' do
136
+ instance.current_mutation = double
137
+ instance.current_node = double
138
+ expect(NodeMutation).to receive_message_chain(:adapter, :get_start_loc, :column).and_return(2)
139
+ expect(instance.current_mutation).to receive(:insert).with(instance.current_node, "Foobar\n ", at: 'beginning')
140
+ instance.insert_before 'Foobar'
141
+ end
142
+
134
143
  it 'parses replace_erb_stmt_with_expr' do
135
144
  instance.current_mutation = double
136
145
  instance.current_node = double
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.12.0
4
+ version: 1.13.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: 2022-10-14 00:00:00.000000000 Z
11
+ date: 2022-10-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport