yake 0.5.6 → 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: aba47b876459cd693e66fd9920a01e381bb8ab2d697697c78d96f88459505bb9
4
- data.tar.gz: 583adb36b2bbd8183b7035616a64b13ae3acd33e04c5fdd68336af873047ddf0
3
+ metadata.gz: 929c35260f97e7e32df7cf490709d767df7a5c237a8e2afdb1c35f59b54ff2cd
4
+ data.tar.gz: 87153830a05af4508213e719f6bb95469b2188a08153c86df4b18308624ab3df
5
5
  SHA512:
6
- metadata.gz: 60093f85ac70f2dc1d3fe23e378b5bba428191be5cfe18035db864ad54ad640f7ddd007e539831bbd377953d3e30368b5ac85a4f7abf0e3d214f0909ba4a275e
7
- data.tar.gz: 42f019aa7400f97cc04e55892b3f1f4be312a539e8ea8f29f4596cbaf412ad4696c468d330ddbb0fd935e38aeb78062227aa4983d678f8131a6c78f1ff1925d0
6
+ metadata.gz: 75eca7fa2a5f62c87f95fa3c055f6a3d1b7c2fdf5a794fba5a10e603e4b4ed9bde291ecff18110beb5dc7b8680883d4ee51500cb407ad45a385d4ea22399e57c
7
+ data.tar.gz: c4510f71f02adbb03cc88f81abb4fe82df3ad085f184b4b593bde0d7d7715911d6ed88fa5f10219539ce0072441d40421f3c49ba4c9b2aafa41be46c75d76d85
data/README.md CHANGED
@@ -197,11 +197,27 @@ MyObject.new.some_method
197
197
 
198
198
  MyObject.new.try(:some_method)
199
199
  # => nil
200
+
201
+ 10.try(:some_method) { |x| x ** 2 }
202
+ # => 100
200
203
  ```
201
204
 
202
205
  `Hash` helpers:
203
206
 
204
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
+
218
+ { f: 'g', a: { d: 'e', b: 'c' } }.deep_sort
219
+ # => { a: { b: 'c', d: 'e' }, f: 'g' }
220
+
205
221
  { fizz: 'buzz' }.encode64
206
222
  # => "eyJmaXp6IjoiYnV6eiJ9\n"
207
223
 
@@ -219,6 +235,10 @@ MyObject.new.try(:some_method)
219
235
 
220
236
  { fizz: 'buzz' }.to_form
221
237
  # => "fizz=buzz"
238
+
239
+ { f: 'g', a: { d: 'e', b: 'c' } }.to_json_sorted
240
+ # => '{"a":{"b":"c","d":"e"},"f":"g"}'
241
+
222
242
  ```
223
243
 
224
244
  `Integer` helpers:
@@ -257,6 +277,12 @@ host / path
257
277
  'fizz'.encode64
258
278
  # => "Zml6eg==\n"
259
279
 
280
+ 'fizz'.md5sum
281
+ # => "b6bfa6c318811be022d4f73070597660"
282
+
283
+ 'fizz'.sha1sum
284
+ # => "c25f5985f2ab63baeb2408a2d7dbc79d8f29d02f"
285
+
260
286
  'CamelCaseString'.snake_case
261
287
  # => "camel_case_string"
262
288
 
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
@@ -1,14 +1,35 @@
1
1
  require 'base64'
2
+ require 'digest'
2
3
  require 'json'
3
4
  require 'time'
4
5
 
5
6
  class Hash
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
6
9
  def encode64() to_json.encode64 end
7
- def except(*keys) self.reject { |key,_| keys.include? key } end
10
+ def except(*keys) reject { |key,_| keys.include? key } end
8
11
  def strict_encode64() to_json.strict_encode64 end
9
- def stringify_names() JSON.parse(to_json) end
10
- 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
11
16
  def to_form() URI.encode_www_form(self) end
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
12
33
  end
13
34
 
14
35
  class Integer
@@ -27,10 +48,10 @@ class Integer
27
48
  end
28
49
 
29
50
  class Object
30
- def try(method, *args, **kwargs)
51
+ def try(method, *args, **kwargs, &block)
31
52
  send(method, *args, **kwargs)
32
53
  rescue
33
- nil
54
+ block_given? ? yield(self) : nil
34
55
  end
35
56
  end
36
57
 
@@ -39,6 +60,8 @@ class String
39
60
  def camel_case() split(/_/).map(&:capitalize).join end
40
61
  def decode64() Base64.decode64(self) end
41
62
  def encode64() Base64.encode64(self) end
63
+ def md5sum() Digest::MD5.hexdigest(self) end
64
+ def sha1sum() Digest::SHA1.hexdigest(self) end
42
65
  def snake_case() gsub(/([a-z])([A-Z])/, '\1_\2').downcase end
43
66
  def strict_decode64() Base64.strict_decode64(self) end
44
67
  def strict_encode64() Base64.strict_encode64(self) end
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.5.6'
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.5.6
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-05-24 00:00:00.000000000 Z
11
+ date: 2022-07-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: