yake 0.6.1 → 0.6.2

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