synvert-core 1.12.0 → 1.13.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: 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