nice_hash 1.9.1 → 1.10.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 249b566696d5318f1d0c705386ab26fc6361a343da30b82a5a877d55e9c580de
4
- data.tar.gz: a13077bb28217ed4869e14a4d2369029409fef58cdaeb582d7762ff030f7cbf3
3
+ metadata.gz: 6531cb144b11a3373a25dbb6e091a7477db13577dbfce6270da65376c578b843
4
+ data.tar.gz: 794d8a95f00d82661307c2d3c25d6cd62278101c03c69c9213f2156463c59ec3
5
5
  SHA512:
6
- metadata.gz: d757b6dfac4d65498fe47d5ea46b2a4a04ae65b9f3ef82c788a9722d588444bf582db7ff467290e19d187f810282f843568d1d4245656973e96489d9548dcd67
7
- data.tar.gz: 1fac5fa164636d5d4a8019fd82305845c64facfdc5b3d0b02945d19231374aabcebea058ef4e8281d48df558158dee36540e580180e927ce971532b8755a8356
6
+ metadata.gz: 81a602fbbdaacf401a39c28152f3af1191d485bfa3b0da94bb58a64747c52fed7539ea443a5ead5568f01162dc154d3424cff238b082f1df005bdfaf8fb2fa74
7
+ data.tar.gz: deb1f88a222d9d3c13d35c6abd5836baef49c4cd1a09e2a24ad02179a76a5d0cb4d641fd2d48f1db5718dbb5bbce22b6483a91d3a7fae94a14d0e2edb1eb0c96
data/README.md CHANGED
@@ -166,6 +166,41 @@ new_hash = my_hash.generate
166
166
  puts new_hash.get_values(:address) #> {:address=>"21 Doom Av"}
167
167
  puts new_hash.get_values(:address, :zip) #> {:zip=>{:default=>"00000", :correct=>"42782"}, :address=>"21 Doom Av"}
168
168
  puts new_hash.get_values(:drawId) #> {:drawId=>["84914", "21158"]}
169
+ ```
170
+ ### Change all values on the keys we specified
171
+
172
+ Supply a hash with all the keys and the values you want to change on the hash, then it will return the hash/array with the values modified at any level.
173
+
174
+ ```ruby
175
+ my_hash = {
176
+ path: "/api/users",
177
+ data: {
178
+ name: "morpheus",
179
+ job: "leader",
180
+ lab: {
181
+ doom: 'one',
182
+ beep: true,
183
+ name:'mario',
184
+ products: [
185
+ {
186
+ name: 'game',
187
+ price: 30
188
+ },
189
+ {
190
+ name: 'chair',
191
+ price: 130
192
+ }
193
+ ]
194
+ }
195
+ }
196
+ }
197
+
198
+ # using NiceHash class
199
+ pp NiceHash.set_values(my_hash, { price: 75, beep: false } )
200
+
201
+ # using the Hash class
202
+ pp my_hash.set_values({ price: 75, beep: false })
203
+
169
204
  ```
170
205
 
171
206
  ### Filtering / Selecting an specific key on the hash and subhashes
@@ -26,39 +26,38 @@ class String
26
26
  # if no json string or wrong json string, an empty hash.
27
27
  ###########################################################################
28
28
  def json(*keys)
29
- require 'json'
29
+ require "json"
30
30
  result = {}
31
31
  begin
32
- feed_symbols = JSON.parse(self, symbolize_names: true)
33
- if !keys.empty?
34
- result_tmp = if keys[0].is_a?(Symbol)
35
- NiceHash.get_values(feed_symbols, keys)
32
+ feed_symbols = JSON.parse(self, symbolize_names: true)
33
+ if !keys.empty?
34
+ result_tmp = if keys[0].is_a?(Symbol)
35
+ NiceHash.get_values(feed_symbols, keys)
36
+ else
37
+ {}
38
+ end
39
+
40
+ if result_tmp.size == 1
41
+ result = if result_tmp.values.is_a?(Array) && (result_tmp.values.size == 1)
42
+ result_tmp.values[0]
36
43
  else
37
- {}
44
+ result_tmp.values
38
45
  end
39
-
40
- if result_tmp.size == 1
41
- result = if result_tmp.values.is_a?(Array) && (result_tmp.values.size == 1)
42
- result_tmp.values[0]
43
- else
44
- result_tmp.values
45
- end
46
- else
47
- result_tmp.each do |key, value|
48
- result[key] = if (value.is_a?(Array) || value.is_a?(Hash)) && (value.size == 1)
49
- value[0]
50
- else
51
- value
52
- end
46
+ else
47
+ result_tmp.each do |key, value|
48
+ result[key] = if (value.is_a?(Array) || value.is_a?(Hash)) && (value.size == 1)
49
+ value[0]
50
+ else
51
+ value
52
+ end
53
+ end
53
54
  end
55
+ else
56
+ result = feed_symbols
54
57
  end
55
-
56
- else
57
- result = feed_symbols
58
- end
59
58
  rescue StandardError => stack
60
59
  puts stack.to_s
61
- end
60
+ end
62
61
  result
63
62
  end
64
63
  end
@@ -92,12 +91,13 @@ class Array
92
91
  # if no keys given, an empty hash
93
92
  ###########################################################################
94
93
  def json(*keys)
95
- json_string = "[#{join(',')}]"
94
+ json_string = "[#{join(",")}]"
96
95
  json_string.json(*keys)
97
96
  end
98
97
  end
99
98
 
100
- require 'date'
99
+ require "date"
100
+
101
101
  class Date
102
102
  ###########################################################################
103
103
  # It will generate a random date
@@ -124,7 +124,7 @@ class Time
124
124
  # It will return in the format: '%Y-%m-%dT%H:%M:%S.%LZ'
125
125
  # Example: puts Time.now.stamp
126
126
  def stamp
127
- strftime('%Y-%m-%dT%H:%M:%S.%LZ')
127
+ strftime("%Y-%m-%dT%H:%M:%S.%LZ")
128
128
  end
129
129
  end
130
130
 
@@ -142,10 +142,10 @@ class Hash
142
142
  # my_hash.products[1].price.wrong="AAAAA"
143
143
  ###########################################################################
144
144
  def method_missing(m, *arguments, &block)
145
- m = m[1..-1].to_sym if m[0] == '_'
145
+ m = m[1..-1].to_sym if m[0] == "_"
146
146
  if key?(m)
147
147
  self[m]
148
- elsif m.to_s[-1] == '='
148
+ elsif m.to_s[-1] == "="
149
149
  self[m.to_s.chop.to_sym] = arguments[0]
150
150
  else
151
151
  super
@@ -234,12 +234,19 @@ class Hash
234
234
  NiceHash.get_values(self, keys)
235
235
  end
236
236
 
237
+ ###########################################################################
238
+ # It will search for the keys supplied and it will set the value specified
239
+ # More info: NiceHash.set_values
240
+ ###########################################################################
241
+ def set_values(hash_values)
242
+ NiceHash.set_values(self, hash_values)
243
+ end
244
+
237
245
  alias gen generate
238
246
  alias val validate
239
247
  alias patterns pattern_fields
240
248
  end
241
249
 
242
-
243
250
  ###########################################################################
244
251
  # symbolize hash of arrays and array of hashes
245
252
  # Taken from gist https://gist.github.com/Integralist/9503099
@@ -249,14 +256,14 @@ class Object
249
256
  def deep_symbolize_keys
250
257
  if is_a? Hash
251
258
  return reduce({}) do |memo, (k, v)|
252
- memo.tap { |m| m[k.to_sym] = v.deep_symbolize_keys }
253
- end
259
+ memo.tap { |m| m[k.to_sym] = v.deep_symbolize_keys }
260
+ end
254
261
  end
255
262
 
256
263
  if is_a? Array
257
264
  return each_with_object([]) do |v, memo|
258
- memo << v.deep_symbolize_keys
259
- end
265
+ memo << v.deep_symbolize_keys
266
+ end
260
267
  end
261
268
  self
262
269
  end
data/lib/nice_hash.rb CHANGED
@@ -86,6 +86,45 @@ class NiceHash
86
86
  return hashv
87
87
  end
88
88
 
89
+ ###########################################################################
90
+ # It will search for the keys supplied and it will set the value specified
91
+ #
92
+ # input:
93
+ # hash_array: (Hash/Array) Hash/Array we want to search on
94
+ # hash_values: (Hash) Hash that contains the keys and values to set
95
+ # output: (Hash/Array)
96
+ # The same hash/array but with the values we specifed changed
97
+ # example:
98
+ # new_hash = NiceHash.set_values(my_hash, {city: 'London', price: '1000'})
99
+ # #> {:name=>"Peter", :address=>"\#$$$$$", :city=>"London", :products=> [{:name=>:"10:Ln", :price=>"1000"}, {:name=>:"10:Ln", :price=>"1000"}]}
100
+ # Using it directly on Hash class, set_values(hash_values):
101
+ # new_hash = my_hash.set_values({city: 'London', price: '1000'})
102
+ ###########################################################################
103
+ def NiceHash.set_values(hash_array, hash_values)
104
+ hashv = Hash.new()
105
+
106
+ if hash_array.is_a?(Hash) and hash_array.size > 0
107
+ hash_array.each do |k, v|
108
+ if hash_values.keys.include?(k)
109
+ hashv[k] = hash_values[k]
110
+ elsif v.is_a?(Array) or v.is_a?(Hash)
111
+ hashv[k] = NiceHash.set_values(v, hash_values)
112
+ else
113
+ hashv[k] = v
114
+ end
115
+ end
116
+ return hashv
117
+ elsif hash_array.is_a?(Array) and hash_array.size > 0
118
+ hashv = Array.new
119
+ hash_array.each do |r|
120
+ hashv << NiceHash.set_values(r, hash_values)
121
+ end
122
+ return hashv
123
+ else
124
+ return hash_array
125
+ end
126
+ end
127
+
89
128
  ###########################################################################
90
129
  # It will return an array of the keys where we are using string patterns.
91
130
  #
metadata CHANGED
@@ -1,19 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nice_hash
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.1
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mario Ruiz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-22 00:00:00.000000000 Z
11
+ date: 2019-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: string_pattern
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
17
20
  - - ">="
18
21
  - !ruby/object:Gem::Version
19
22
  version: 2.0.0
@@ -21,6 +24,9 @@ dependencies:
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '2.0'
24
30
  - - ">="
25
31
  - !ruby/object:Gem::Version
26
32
  version: 2.0.0