yake 0.6.0 → 0.6.3

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: 608f4f31563bbda1db8213273eada195baa5ce02add9853a13f07904ace788f5
4
- data.tar.gz: a91dc710313eefb17c11f6fd3e4887324260f715e059148cb9063565487e8222
3
+ metadata.gz: 116618d14560cfc7f806d13c82a7dc6351717332b1ad82519599e62243a5e7a6
4
+ data.tar.gz: 6230b5daaeeb799ba06ddf807ebb176bf692d9dd5fdb7c1beb235394d7087626
5
5
  SHA512:
6
- metadata.gz: 385cba84bca2c7992ec6072857a344f3a02ad191f0f3004cce9364e5738875a027fc7a264aba371e285d3a1ddd7a868de99b1058b38277d9205500c4c96fd1c7
7
- data.tar.gz: 4b658f2d67d823cd59d02775e06de9de8f6f0593ecdb7eabc7d97bdfe966924b89c46598cd230f7656c01e42056c2f57370f17b8d6ec83293ef99fa57a936cd3
6
+ metadata.gz: b40d42582e140d752fd3f6756d67ab023fc149b4606a23901461558384bd99569409e33d8330820eecbb15bc44fbedf65459300a93593245dc9402e0e8fee430
7
+ data.tar.gz: 3c4dd2fb9c4c02172643a52e8dfa996607c4be5c69d1a93599b11b21d931a4d2c4402f7254e7ce3e3d1e2a79b4daa001dd7016f3d266aee1b60e245d22675acd
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/logger.rb CHANGED
@@ -12,7 +12,7 @@ module Yake
12
12
  end
13
13
 
14
14
  class << self
15
- def new(logdev = $stdout, **params)
15
+ def new(logdev = $stderr, **params)
16
16
  ::Logger.new(logdev, formatter: Formatter.new, **params)
17
17
  end
18
18
  end
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
+ def deep_transform_keys(&block)
20
+ deep_transform(:transform_keys, &block)
21
+ end
22
+
23
+ def deep_transform_keys!(&block)
24
+ deep_transform(:transform_keys!, &block)
25
+ end
26
+
27
+ private def deep_transform(method, &block)
28
+ f = -> (x) { x.respond_to?(:"deep_#{method}") ? x.send(:"deep_#{method}", &block) : x }
29
+ block_given? ? send(method, &block).map do |key, val|
30
+ [key, val.is_a?(Array) ? val.map(&f) : val.then(&f)]
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.0'
4
+ VERSION = '0.6.3'
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.0
4
+ version: 0.6.3
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-05-29 00:00:00.000000000 Z
11
+ date: 2022-08-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: