remap 2.2.51 → 2.2.53
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/remap/path/output.rb +22 -1
- data/lib/remap/state/extension.rb +38 -42
- data/lib/remap/state.rb +0 -1
- metadata +11 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8321a7ce3b3551b961e63d2356ae3838479cdcdd4f2fb51f8c4f67b5887f12b3
|
4
|
+
data.tar.gz: 68217f949d43548ea387ce2e9884197d7daf36de134fac99a4f2b74b65cfc2cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f326c30a0f54ad76625f0a40112a92fee50677bfc72feb86189d14e820cb559d845da3876f025a532cb6c4d6f9b80d9f12a3bd1a3243a29f71078e7c256fb659
|
7
|
+
data.tar.gz: d51927615c82c036755ee5e4840baa001d3d46fdfa4dc607b5c38c59189ce9efe95d3513a7dce0b9965127d1327f83d3dd4cc4d2c49a21446c3ed241e91e6c21
|
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
|
data/lib/remap/state.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,35 @@
|
|
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.53
|
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-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 6.1.4.1
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '8.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: 6.1.4.1
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '8.0'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: dry-core
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -239,7 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
239
245
|
- !ruby/object:Gem::Version
|
240
246
|
version: '0'
|
241
247
|
requirements: []
|
242
|
-
rubygems_version: 3.
|
248
|
+
rubygems_version: 3.3.26
|
243
249
|
signing_key:
|
244
250
|
specification_version: 4
|
245
251
|
summary: An expressive and feature-complete data mapper with intuitive syntax thanks
|