yake 0.6.1 → 0.6.4

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: ab366348807492835eeb4720413691046d71155071facf97fcb11cf8de960f71
4
- data.tar.gz: b4377e2e6e7a6259c7c98d8b37fff0d1f39d6c591fdb8390ce4b9cc70b96312c
3
+ metadata.gz: e96eec76402a33ac4b0b57846ebfb90fcf22dd0adf3416cbd5acdf4b065f4675
4
+ data.tar.gz: 057c08011065fd17236d85d5327be67204af2c17e94c5c4af65de4fd4ed61941
5
5
  SHA512:
6
- metadata.gz: 53ee3404d6fb1500242faf9718ac4c25c976534affee66d9b939f1d950b1e1c9bcdc3293de6d694e62b6aec545d5ae5701759ce267f5ca751ebb45d630b6813b
7
- data.tar.gz: f3088a7ad9f0ab9dc4e0f8b05d60b918a1b3568cfc8471dc9e08b5eea56d00223607fcde7e6ec8240a5013bd2d639be9a49b12e02674202583fccb22e221d320
6
+ metadata.gz: 41435fce4006498e59c12939eb0b02a4b2c43ac2de2c892930ab38b0b5736c83a96922b28fb04b1a14530ed8deb35b849cfcb46ea38a90de71eb555e848897d7
7
+ data.tar.gz: 8ff001c1440a29f90440e120187c2df33f0f9fd72c693587b07654a6543a1d1bef585e0b03483100df5002b302d7bcf03874ce16a0380bd85b00e397d5992e18
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/errors.rb CHANGED
@@ -29,7 +29,7 @@ module Yake
29
29
  class RequestTimeout < Error; end # HTTP 408
30
30
  class Conflict < Error; end # HTTP 409
31
31
  class Gone < Error; end # HTTP 410
32
- class LengthRequired < Error; end # HTTP 410
32
+ class LengthRequired < Error; end # HTTP 411
33
33
  class PreconditionFailed < Error; end # HTTP 412
34
34
  class PayloadTooLarge < Error; end # HTTP 413
35
35
  class UriTooLong < Error; end # HTTP 414
@@ -58,6 +58,54 @@ module Yake
58
58
  class InsufficientStorage < Error; end # HTTP 507
59
59
  class LoopDetected < Error; end # HTTP 508
60
60
  class NotExtended < Error; end # HTTP 510
61
- class NetworkAuthenticationRequired < Error; end # HTTP 507
61
+ class NetworkAuthenticationRequired < Error; end # HTTP 511
62
+
63
+ ERRORS = {
64
+ '400' => BadRequest,
65
+ '401' => Unauthorized,
66
+ '402' => PaymentRequired,
67
+ '403' => Forbidden,
68
+ '404' => NotFound,
69
+ '405' => MethodNotAllowed,
70
+ '406' => NotAcceptable,
71
+ '407' => ProxyAuthenticationRequired,
72
+ '408' => RequestTimeout,
73
+ '409' => Conflict,
74
+ '410' => Gone,
75
+ '411' => LengthRequired,
76
+ '412' => PreconditionFailed,
77
+ '413' => PayloadTooLarge,
78
+ '414' => UriTooLong,
79
+ '415' => UnsupportedMediaType,
80
+ '416' => RangeNotSatisfiable,
81
+ '417' => ExpectationFailed,
82
+ '418' => ImATeapot,
83
+ '420' => EnhanceYourCalm,
84
+ '421' => MisdirectedRequest,
85
+ '422' => UnprocessableEntity,
86
+ '423' => Locked,
87
+ '424' => FailedDependency,
88
+ '425' => TooEarly,
89
+ '426' => UpgradeRequired,
90
+ '428' => PreconditionRequired,
91
+ '429' => TooManyRequests,
92
+ '431' => RequestHeaderFieldsTooLarge,
93
+ '451' => UnavailableForLegalReasons,
94
+ '500' => InternalServerError,
95
+ '501' => NotImplemented,
96
+ '502' => BadGateway,
97
+ '503' => ServiceUnavailable,
98
+ '504' => GatewayTimeout,
99
+ '505' => HttpVersionNotSupported,
100
+ '506' => VariantAlsoNegotiates,
101
+ '507' => InsufficientStorage,
102
+ '508' => LoopDetected,
103
+ '510' => NotExtended,
104
+ '511' => NetworkAuthenticationRequired,
105
+ }
106
+
107
+ def self.[](code)
108
+ ERRORS.fetch(code.to_s)
109
+ end
62
110
  end
63
111
  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.1'
4
+ VERSION = '0.6.4'
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.4
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-08-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: