yake 0.5.6 → 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: 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: