hash_remapper 0.2.1 → 0.3.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 +4 -4
- data/README.md +9 -5
- data/lib/hash_remapper.rb +12 -5
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd1eb9b9c2a9a1ed5379213e72f50a3dc5dcbf93d4fd6deedb4e5a90c9cb4e7d
|
4
|
+
data.tar.gz: c565d0549390a2d4264e170aa74ef1d7e106201f8f38674a627d1c6aa4b3e6d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ac29a074171eac2b77c34b00a703b800bfaa9e0ceb3a8d1c498a09d1c8db4ecd616cc298ee2cc4e5b52f01183c4d697be4857fd2e3fcd25580eeb6cd822576c
|
7
|
+
data.tar.gz: b8d7a86a12c5c375031bb3a9a42bc972f94f6d46bb4c0690f52177b1bf2215a496479783a877e069d9522f72346adde9827336fea3001714e69e4f0dbce8f5fc
|
data/README.md
CHANGED
@@ -56,8 +56,9 @@ original_hash = {
|
|
56
56
|
}
|
57
57
|
},
|
58
58
|
recursive: [
|
59
|
-
{number: 21},
|
60
|
-
{number: 42}
|
59
|
+
{ number: 21 },
|
60
|
+
{ number: 42 },
|
61
|
+
{ test: 13 }
|
61
62
|
]
|
62
63
|
}
|
63
64
|
```
|
@@ -91,6 +92,7 @@ HashRemapper.remap(
|
|
91
92
|
# data: [1, 2, 'string!'],
|
92
93
|
# dont_ignore: :me,
|
93
94
|
# internal: { hash: :data, really: { deep: true } },
|
95
|
+
# recursive: [ { number: 21 }, { number: 42 }, { test: 13 } ]
|
94
96
|
# }
|
95
97
|
```
|
96
98
|
|
@@ -119,6 +121,7 @@ HashRemapper.remap(
|
|
119
121
|
# :ignore => :me,
|
120
122
|
# :magic_number => 42,
|
121
123
|
# :nested => {:hash=>:data, :really=>{:deep=>true}}
|
124
|
+
# :recursive => [ { number: 21 }, { number: 42 }, { test: 13 } ]
|
122
125
|
# }
|
123
126
|
```
|
124
127
|
|
@@ -241,9 +244,10 @@ HashRemapper.remap(
|
|
241
244
|
## <a name="deep">11</a>: Remap to the deep values
|
242
245
|
|
243
246
|
```rb
|
247
|
+
# INFO: For advanced usage see the specs!
|
244
248
|
HashRemapper.remap(
|
245
249
|
original_hash,
|
246
|
-
test: [:magic_bool, 'nested.really.deep']]
|
250
|
+
test: [:magic_bool, { path: 'nested.really.deep' }]]
|
247
251
|
)
|
248
252
|
|
249
253
|
# =>
|
@@ -253,12 +257,12 @@ HashRemapper.remap(
|
|
253
257
|
|
254
258
|
HashRemapper.remap(
|
255
259
|
original_hash,
|
256
|
-
test: [:magic_numbers, 'recursive.*.number']]
|
260
|
+
test: [:magic_numbers, {path: 'recursive.*.number', strict: false}]]
|
257
261
|
)
|
258
262
|
|
259
263
|
# =>
|
260
264
|
# {
|
261
|
-
# magic_numbers: [21, 42]
|
265
|
+
# magic_numbers: [21, 42, nil]
|
262
266
|
# }
|
263
267
|
```
|
264
268
|
|
data/lib/hash_remapper.rb
CHANGED
@@ -6,7 +6,7 @@ require 'hash_digger'
|
|
6
6
|
# Utility class to map original Hash keys to the new ones
|
7
7
|
class HashRemapper
|
8
8
|
# Current Library Version
|
9
|
-
VERSION = '0.
|
9
|
+
VERSION = '0.3.0'
|
10
10
|
|
11
11
|
class << self
|
12
12
|
# Remaps `data` Hash by renaming keys, creating new ones and
|
@@ -73,16 +73,23 @@ class HashRemapper
|
|
73
73
|
def try_digging(to, data)
|
74
74
|
return unless to.respond_to?(:each)
|
75
75
|
|
76
|
-
|
77
|
-
|
76
|
+
digger_args = to.fetch(1)
|
77
|
+
|
78
|
+
# v0.1.0 backward compartability layer ([new_key, [:digg, :path, :keys]])
|
79
|
+
return [to.first, data.dig(*to.last)] if digger_args.kind_of?(Array)
|
80
|
+
|
81
|
+
lambda = digger_args.fetch(:lambda) { nil }
|
78
82
|
|
79
83
|
# @see https://github.com/DamirSvrtan/fasterer — fetch_with_argument_vs_block
|
84
|
+
# @see https://github.com/smileart/hash_digger — digger args
|
80
85
|
[
|
81
86
|
to.fetch(0),
|
82
87
|
HashDigger::Digger.dig(
|
83
88
|
data: data,
|
84
|
-
path:
|
85
|
-
strict:
|
89
|
+
path: digger_args.fetch(:path) { '*' },
|
90
|
+
strict: digger_args.fetch(:strict) { true },
|
91
|
+
default: digger_args.fetch(:default) { nil },
|
92
|
+
&lambda
|
86
93
|
)
|
87
94
|
]
|
88
95
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hash_remapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Serge Bedzhyk
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|