yake 0.6.0 → 0.6.3

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