remap 2.2.51 → 2.2.52
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 +4 -4
- data/lib/remap/path/output.rb +22 -1
- data/lib/remap/state/extension.rb +38 -42
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0399e47c927d5179a2a969ffa5feb480c7c9f39c32eb4973c2fe2f3ed11226f8'
|
4
|
+
data.tar.gz: be2ba0c49c8bf13a1a6d6879a9a7ee34770a7990f2f6e04debff24040be71c14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61cdc42f2748d22bdddc4c7972346ba085bbeb7a6a4846f0bad0d9d076a513aa83623315bc3885987dbf509400d5be7387873a63fc5f1b612446fd04daf8ecd2
|
7
|
+
data.tar.gz: 67567c687729a65225d679758b58371ac0480ce77cc19bb8c24c984a36866f3cd2e4b666ee1f73d3ddf9b45286b7a6231dba8ff246037d3e86099777bc2198a2
|
data/lib/remap/path/output.rb
CHANGED
@@ -5,6 +5,21 @@ module Remap
|
|
5
5
|
using Extensions::Enumerable
|
6
6
|
using State::Extension
|
7
7
|
|
8
|
+
# TODO: Move & Test
|
9
|
+
module Dispatch
|
10
|
+
refine Static::Option do
|
11
|
+
def call(...)
|
12
|
+
super.value
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
refine Object do
|
17
|
+
def call(_)
|
18
|
+
self
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
8
23
|
# Sets the value to a given path
|
9
24
|
#
|
10
25
|
# @example Maps "A" to { a: { b: { c: "A" } } }
|
@@ -13,12 +28,18 @@ module Remap
|
|
13
28
|
#
|
14
29
|
# result.fetch(:value) # => { a: { b: { c: "A" } } }
|
15
30
|
class Output < Unit
|
31
|
+
using Dispatch
|
32
|
+
|
16
33
|
attribute :selectors, [Types::Key]
|
17
34
|
|
18
35
|
# @return [State]
|
19
36
|
def call(state)
|
37
|
+
mapped = selectors.map do |selector|
|
38
|
+
selector.call(state)
|
39
|
+
end
|
40
|
+
|
20
41
|
state.fmap do |value|
|
21
|
-
|
42
|
+
mapped.hide(value)
|
22
43
|
end
|
23
44
|
end
|
24
45
|
end
|
@@ -109,27 +109,27 @@ module Remap
|
|
109
109
|
# @return [State]
|
110
110
|
def map(&block)
|
111
111
|
result = case self
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
112
|
+
in { value: Array => array }
|
113
|
+
array.each_with_index.each_with_object([]) do |(value, index), array|
|
114
|
+
s1 = block[set(value, index: index)]
|
115
|
+
|
116
|
+
if s1.key?(:value)
|
117
|
+
array << s1[:value]
|
118
|
+
end
|
119
|
+
end
|
120
|
+
in { value: Hash => hash }
|
121
|
+
hash.each_with_object({}) do |(key, value), acc|
|
122
|
+
s1 = block[set(value, key: key)]
|
123
|
+
|
124
|
+
if s1.key?(:value)
|
125
|
+
acc[key] = s1[:value]
|
126
|
+
end
|
127
|
+
end
|
128
|
+
in { value: }
|
129
|
+
fatal!("Expected an enumerable got %s", value.class)
|
130
|
+
else
|
131
|
+
return self
|
132
|
+
end
|
133
133
|
|
134
134
|
set(result)
|
135
135
|
end
|
@@ -402,27 +402,23 @@ module Remap
|
|
402
402
|
# @return [Failure]
|
403
403
|
def failure(reason = Undefined)
|
404
404
|
failures = case [path, reason]
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
)
|
423
|
-
end
|
424
|
-
end
|
425
|
-
end
|
405
|
+
in [_, Undefined]
|
406
|
+
return Failure.new(failures: notices)
|
407
|
+
in [_, Notice => notice]
|
408
|
+
[notice]
|
409
|
+
in [path, Array => reasons]
|
410
|
+
reasons.map do |inner_reason|
|
411
|
+
Notice.call(path: path, reason: inner_reason, **only(:value))
|
412
|
+
end
|
413
|
+
in [path, String => reason]
|
414
|
+
[Notice.call(path: path, reason: reason, **only(:value))]
|
415
|
+
in [path, Hash => errors]
|
416
|
+
errors.paths.flat_map do |sufix|
|
417
|
+
Array.wrap(errors.dig(*sufix)).map do |inner_reason|
|
418
|
+
Notice.call(reason: inner_reason, path: path + sufix, **only(:value))
|
419
|
+
end
|
420
|
+
end
|
421
|
+
end
|
426
422
|
|
427
423
|
Failure.new(failures: failures, notices: notices)
|
428
424
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: remap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.52
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Linus Oleander
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -239,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
239
239
|
- !ruby/object:Gem::Version
|
240
240
|
version: '0'
|
241
241
|
requirements: []
|
242
|
-
rubygems_version: 3.
|
242
|
+
rubygems_version: 3.3.7
|
243
243
|
signing_key:
|
244
244
|
specification_version: 4
|
245
245
|
summary: An expressive and feature-complete data mapper with intuitive syntax thanks
|