yake 0.6.1 → 0.6.2

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: ab366348807492835eeb4720413691046d71155071facf97fcb11cf8de960f71
4
- data.tar.gz: b4377e2e6e7a6259c7c98d8b37fff0d1f39d6c591fdb8390ce4b9cc70b96312c
3
+ metadata.gz: 929c35260f97e7e32df7cf490709d767df7a5c237a8e2afdb1c35f59b54ff2cd
4
+ data.tar.gz: 87153830a05af4508213e719f6bb95469b2188a08153c86df4b18308624ab3df
5
5
  SHA512:
6
- metadata.gz: 53ee3404d6fb1500242faf9718ac4c25c976534affee66d9b939f1d950b1e1c9bcdc3293de6d694e62b6aec545d5ae5701759ce267f5ca751ebb45d630b6813b
7
- data.tar.gz: f3088a7ad9f0ab9dc4e0f8b05d60b918a1b3568cfc8471dc9e08b5eea56d00223607fcde7e6ec8240a5013bd2d639be9a49b12e02674202583fccb22e221d320
6
+ metadata.gz: 75eca7fa2a5f62c87f95fa3c055f6a3d1b7c2fdf5a794fba5a10e603e4b4ed9bde291ecff18110beb5dc7b8680883d4ee51500cb407ad45a385d4ea22399e57c
7
+ data.tar.gz: c4510f71f02adbb03cc88f81abb4fe82df3ad085f184b4b593bde0d7d7715911d6ed88fa5f10219539ce0072441d40421f3c49ba4c9b2aafa41be46c75d76d85
data/README.md CHANGED
@@ -205,6 +205,16 @@ MyObject.new.try(:some_method)
205
205
  `Hash` helpers:
206
206
 
207
207
  ```ruby
208
+ { a: { b: 'c', d: 'e' }, f: 'g' }.deep_keys
209
+ # => [:a, :b, :d, :f]
210
+
211
+ { a: { b: 'c', d: 'e' }, f: 'g' }.deep_transform_keys(&:to_s)
212
+ # => { "a" => { "b" => "c", "d" => "e" }, "f" => "g" }
213
+
214
+ hash = { a: { b: 'c', d: 'e' }, f: 'g' }
215
+ hash.deep_transform_keys!(&:to_s)
216
+ # => { "a" => { "b" => "c", "d" => "e" }, "f" => "g" }
217
+
208
218
  { f: 'g', a: { d: 'e', b: 'c' } }.deep_sort
209
219
  # => { a: { b: 'c', d: 'e' }, f: 'g' }
210
220
 
data/lib/yake/support.rb CHANGED
@@ -4,14 +4,32 @@ require 'json'
4
4
  require 'time'
5
5
 
6
6
  class Hash
7
- def deep_sort() self.sort.map { |k,v| [ k, v.try(:deep_sort) { |x| x } ] }.to_h end
7
+ def deep_keys() map { |k,v| v.respond_to?(:deep_keys) ? [k] + v.deep_keys : k }.flatten end
8
+ def deep_sort() sort.map { |k,v| [ k, v.try(:deep_sort) { |x| x } ] }.to_h end
8
9
  def encode64() to_json.encode64 end
9
- def except(*keys) self.reject { |key,_| keys.include? key } end
10
+ def except(*keys) reject { |key,_| keys.include? key } end
10
11
  def strict_encode64() to_json.strict_encode64 end
11
- def stringify_names() JSON.parse(to_json) end
12
- def symbolize_names() JSON.parse(to_json, symbolize_names: true) end
12
+ def stringify_names() deep_transform_keys(&:to_s) end
13
+ def stringify_names!() deep_transform_keys!(&:to_s) end
14
+ def symbolize_names() deep_transform_keys(&:to_sym) end
15
+ def symbolize_names!() deep_transform_keys!(&:to_sym) end
13
16
  def to_form() URI.encode_www_form(self) end
14
17
  def to_json_sorted() deep_sort.to_json end
18
+
19
+
20
+ def deep_transform_keys(&block)
21
+ block_given? ? transform_keys(&block).map do |key, val|
22
+ val = val.deep_transform_keys(&block) if val.respond_to?(:deep_transform_keys)
23
+ [key, val]
24
+ end.to_h : self
25
+ end
26
+
27
+ def deep_transform_keys!(&block)
28
+ block_given? ? transform_keys!(&block).map do |key, val|
29
+ val = val.deep_transform_keys!(&block) if val.respond_to?(:deep_transform_keys!)
30
+ [key, val]
31
+ end.to_h : self
32
+ end
15
33
  end
16
34
 
17
35
  class Integer
data/lib/yake/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yake
4
- VERSION = '0.6.1'
4
+ VERSION = '0.6.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Mancevice
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-01 00:00:00.000000000 Z
11
+ date: 2022-07-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: