remap 2.2.50 → 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 -73
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
|
@@ -150,76 +150,6 @@ dependencies:
|
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 2.5.1
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: rake
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - ">="
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '0'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - ">="
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '0'
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: rspec-collection_matchers
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - ">="
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - ">="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
181
|
-
- !ruby/object:Gem::Dependency
|
182
|
-
name: rubocop
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
184
|
-
requirements:
|
185
|
-
- - "~>"
|
186
|
-
- !ruby/object:Gem::Version
|
187
|
-
version: 1.23.0
|
188
|
-
type: :development
|
189
|
-
prerelease: false
|
190
|
-
version_requirements: !ruby/object:Gem::Requirement
|
191
|
-
requirements:
|
192
|
-
- - "~>"
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: 1.23.0
|
195
|
-
- !ruby/object:Gem::Dependency
|
196
|
-
name: rubocop-performance
|
197
|
-
requirement: !ruby/object:Gem::Requirement
|
198
|
-
requirements:
|
199
|
-
- - ">="
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
version: '0'
|
202
|
-
type: :development
|
203
|
-
prerelease: false
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - ">="
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: '0'
|
209
|
-
- !ruby/object:Gem::Dependency
|
210
|
-
name: rubocop-rake
|
211
|
-
requirement: !ruby/object:Gem::Requirement
|
212
|
-
requirements:
|
213
|
-
- - ">="
|
214
|
-
- !ruby/object:Gem::Version
|
215
|
-
version: '0'
|
216
|
-
type: :development
|
217
|
-
prerelease: false
|
218
|
-
version_requirements: !ruby/object:Gem::Requirement
|
219
|
-
requirements:
|
220
|
-
- - ">="
|
221
|
-
- !ruby/object:Gem::Version
|
222
|
-
version: '0'
|
223
153
|
description: |
|
224
154
|
Re:map; an expressive and feature-rich data transformation mapper for Ruby 3.
|
225
155
|
It gives the developer the expressive power of JSONPath, without the hassle of
|
@@ -309,7 +239,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
309
239
|
- !ruby/object:Gem::Version
|
310
240
|
version: '0'
|
311
241
|
requirements: []
|
312
|
-
rubygems_version: 3.
|
242
|
+
rubygems_version: 3.3.7
|
313
243
|
signing_key:
|
314
244
|
specification_version: 4
|
315
245
|
summary: An expressive and feature-complete data mapper with intuitive syntax thanks
|