remap 2.2.36 → 2.2.40

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: 62a912d9cf05fe7e0a31a96dbfb4e9a2fde2b9b041a4d904a86567700c9915f3
4
- data.tar.gz: 821fc290ea247af377338c4aa36c29b10dd1297d15073ea6a16404948fe15ce9
3
+ metadata.gz: 5237c926e4f9d2101746dedf0c6287cf81e1e757000f45ff80a346852474ca1c
4
+ data.tar.gz: 18e5bde7388e9cf14a518153f0d47271bf6d09ad9b09a6dd4da98a2a61169668
5
5
  SHA512:
6
- metadata.gz: 4935da680f0b328fae7c51abd9c7db2bf9d02805ffc28c1e611a4dede05306a1b6d094f434fda224888f6800e004b87b6f740d7807f56515594e27316cfd7dbe
7
- data.tar.gz: 4ce8a85d17fbcdcad1f9bb6d8225732f52b8b0af58602e9fb357110da6b711390663ce79e4f332f29123c877d9e1ae174eb31ca4fbba2149b43a189533232921
6
+ metadata.gz: 1f9b976bca1187592db2ae0370e8ef33064ace68e15353d55c8e1bf16ea3d4c30afdac56e487ce663dc0d12241329a4484e9ea72ec0b8700c93654678e70b465
7
+ data.tar.gz: d8b580437f7c42ab3578fdf14b8f902d27c084438668f8dfdc67f9fbc74a73e16b0712bca50450f62212650955b9f5f53a59edda15243acb130a0e77e9ee2417
@@ -176,12 +176,12 @@ module Remap
176
176
  # output.fetch(:value) # => { car: "Volvo" }
177
177
  #
178
178
  # @return [Rule::Embed]
179
- def embed(mapper)
179
+ def embed(mapper, backtrace: caller)
180
180
  if block_given?
181
181
  raise ArgumentError, "#embed does not take a block"
182
182
  end
183
183
 
184
- embeding = rule.add do |state, &error|
184
+ embeding = rule(backtrace: backtrace).add do |state, &error|
185
185
  mapper.call!(state.set(mapper: mapper)) do |failure|
186
186
  next error[failure]
187
187
  end.except(:mapper, :scope)
@@ -225,12 +225,12 @@ module Remap
225
225
  # @raise [ArgumentError]
226
226
  # if no path given
227
227
  # if path is not a Symbol or Array<Symbol>
228
- def set(*path, to:)
228
+ def set(*path, to:, backtrace: caller)
229
229
  if block_given?
230
230
  raise ArgumentError, "#set does not take a block"
231
231
  end
232
232
 
233
- add rule(to: path).add { to.call(_1) }
233
+ add rule(to: path, backtrace: backtrace).add { to.call(_1) }
234
234
  end
235
235
 
236
236
  # Maps to path from map with block in between
@@ -280,8 +280,8 @@ module Remap
280
280
  # @see #to
281
281
  #
282
282
  # @return [Rule::Map::Optional]
283
- def to?(*path, map: EMPTY_ARRAY, &block)
284
- add rule?(*map, to: path, &block)
283
+ def to?(*path, map: EMPTY_ARRAY, backtrace: caller, &block)
284
+ add rule?(*map, to: path, backtrace: backtrace, &block)
285
285
  end
286
286
 
287
287
  # Iterates over the input value, passes each value
@@ -308,12 +308,12 @@ module Remap
308
308
  #
309
309
  # @return [Rule::Each]]
310
310
  # @raise [ArgumentError] if no block given
311
- def each(&block)
311
+ def each(backtrace: caller, &block)
312
312
  unless block_given?
313
313
  raise ArgumentError, "#each requires a block"
314
314
  end
315
315
 
316
- add rule(all, &block)
316
+ add rule(all, backtrace: backtrace, &block)
317
317
  end
318
318
 
319
319
  # Wraps output in type
@@ -341,12 +341,12 @@ module Remap
341
341
  #
342
342
  # @return [Rule::Wrap]
343
343
  # @raise [ArgumentError] if type is not :array
344
- def wrap(type, &block)
344
+ def wrap(type, backtrace: caller, &block)
345
345
  unless block_given?
346
346
  raise ArgumentError, "#wrap requires a block"
347
347
  end
348
348
 
349
- add rule(&block).then { Array.wrap(_1) }
349
+ add rule(backtrace: backtrace, &block).then { Array.wrap(_1) }
350
350
  end
351
351
 
352
352
  # Selects all elements
@@ -394,12 +394,12 @@ module Remap
394
394
  # output.fetch(:value) # => { api_key: "<SECRET>" }
395
395
  #
396
396
  # @return [Rule::Static::Fixed]
397
- def value(value)
397
+ def value(value, backtrace: caller)
398
398
  if block_given?
399
399
  raise ArgumentError, "option selector does not take a block"
400
400
  end
401
401
 
402
- Static::Fixed.new(value: value)
402
+ Static::Fixed.new(value: value, backtrace: backtrace)
403
403
  end
404
404
 
405
405
  # Static option to be selected
@@ -25,8 +25,13 @@ module Remap
25
25
  end
26
26
 
27
27
  def traced(backtrace)
28
- tap { _1.set_backtrace(backtrace) }
28
+ e = Traced.new(notice: notice)
29
+ e.set_backtrace(backtrace)
30
+ e
29
31
  end
30
32
  end
33
+
34
+ class Traced < Error
35
+ end
31
36
  end
32
37
  end
@@ -23,11 +23,15 @@ module Remap
23
23
  return state.except(:value)
24
24
  end
25
25
 
26
- rules.map do |rule|
27
- rule.call(state) do |failure|
26
+ rules.reduce(state.except(:value)) do |s1, rule|
27
+ result = rule.call(state) do |failure|
28
28
  return error[failure]
29
29
  end
30
- end.reduce(&:combine)
30
+
31
+ s1.combine(result)
32
+ rescue Notice::Fatal => e
33
+ raise e.traced(rule.backtrace)
34
+ end
31
35
  end
32
36
  end
33
37
  end
@@ -39,17 +39,6 @@ module Remap
39
39
  rescue Notice::Ignore => e
40
40
  e.undefined(state)
41
41
  end
42
-
43
- private
44
-
45
- # Catches :ignore exceptions and re-package them as a state
46
- #
47
- # @param state [State]
48
- #
49
- # @return [State]
50
- def ignore(state, &block)
51
- state.set(notice: catch(:ignore, &block).traced(backtrace)).except(:value)
52
- end
53
42
  end
54
43
  end
55
44
  end
@@ -209,30 +209,6 @@ module Remap
209
209
  end
210
210
  end
211
211
  end
212
-
213
- # Catches :fatal and raises {Notice::Error}
214
- #
215
- # @param state [State]
216
- # @param id (:fatal) [:fatal, :notice, :ignore]
217
- #
218
- # raise [Notice::Error]
219
- def fatal(state, id: :fatal, &block)
220
- raise catch(id, &block).traced(backtrace).exception
221
- end
222
-
223
- # Catches :notice exceptions and repackages them as a state
224
- #
225
- # @param state [State]
226
- #
227
- # @return [State]
228
- def notice(state, &block)
229
- state.set(notice: catch(:notice, &block).traced(backtrace)).except(:value)
230
- end
231
-
232
- # @abstract
233
- def ignore(...)
234
- raise NotImplementedError, "#{self.class}#ignore"
235
- end
236
212
  end
237
213
  end
238
214
  end
@@ -41,7 +41,7 @@ module Remap
41
41
  end
42
42
 
43
43
  element = array.fetch(index) do
44
- s.ignore!("Index %s not found", index)
44
+ s.ignore!("Index not found")
45
45
  end
46
46
 
47
47
  state.set(element, index: index).then(&block)
@@ -132,7 +132,7 @@ module Remap
132
132
  list1 + list2
133
133
  in [:value, left, right]
134
134
  fatal!(
135
- "Could not merge [%p] (%s) with [%p] (%s)",
135
+ "Could not merge [%s] (%s) with [%s] (%s)",
136
136
  left.formatted,
137
137
  left.class,
138
138
  right.formatted,
@@ -26,11 +26,11 @@ module Remap
26
26
  #
27
27
  # @return [State]
28
28
  def call(state)
29
- state.set(state.options.fetch(name))
30
- rescue KeyError => e
31
- raise ArgumentError, e.exception("Option [%s] not found in input [%p]" % [
32
- name, state.options
33
- ])
29
+ value = state.options.fetch(name) do
30
+ raise ArgumentError, "Option [%s] not found" % [name], backtrace
31
+ end
32
+
33
+ state.set(value)
34
34
  end
35
35
  end
36
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: remap
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.36
4
+ version: 2.2.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - Linus Oleander