hash_remapper 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -5
  3. data/lib/hash_remapper.rb +12 -5
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3929c1154c630edcdf0237da51662e03efddb6f222d5b67afb98e6a80313dc9
4
- data.tar.gz: 803ac91bfd04de4db2fbd46754d23e827d06c18906c508a1aca524e291aa936e
3
+ metadata.gz: bd1eb9b9c2a9a1ed5379213e72f50a3dc5dcbf93d4fd6deedb4e5a90c9cb4e7d
4
+ data.tar.gz: c565d0549390a2d4264e170aa74ef1d7e106201f8f38674a627d1c6aa4b3e6d1
5
5
  SHA512:
6
- metadata.gz: 718a7fa4670375daf3c8260dc2b8bd48050f51b3e1ad022c0a8112e98d8f72f2ff3d2b2ed52627b88af98b44f13b0429dddcea7c2befa7fb767c84ccb944b2dd
7
- data.tar.gz: b0715035503568d32c7213891973a39342924da1f5fd74d35abdad776227c5460468a461d3ba60477eeb3a3be7b617bd291e9114e95b3ba4509eb713bd3c19d1
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.2.1'
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
- # v0.1.0 backward compartability layer
77
- return [to.first, data.dig(*to.last)] if to.fetch(1).kind_of?(Array)
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: to.fetch(1) { '*' },
85
- strict: to.fetch(2) { true }
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.2.1
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-08 00:00:00.000000000 Z
11
+ date: 2019-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler