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.
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