yake 0.5.4 → 0.6.0

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: 1c140a121e6c40b6342e4b69a30eea098b2ab53008b2b2e7b315d1d0db794dc5
4
- data.tar.gz: a10c028d45ce96b4680f2caec4b031064c8f9737c09f4f82ac974ae8e077940d
3
+ metadata.gz: 608f4f31563bbda1db8213273eada195baa5ce02add9853a13f07904ace788f5
4
+ data.tar.gz: a91dc710313eefb17c11f6fd3e4887324260f715e059148cb9063565487e8222
5
5
  SHA512:
6
- metadata.gz: 47a790dbc53bbf1af9c6504f4bddba3a3759c237164f8ff466c876b6fe21c8c22d9e5f3d2d271ec489d25709223e9605f5b4bb4737463bc8dc67a5ea472f0ed9
7
- data.tar.gz: 50e642a1e4f7c5fa3d611c0d54811e91391d2a8df7e6796e723694a4db116db050d7e69cd91d041e37073d4efe6a77d34b1509fbb9a5a086d7543642ee1f836d
6
+ metadata.gz: 385cba84bca2c7992ec6072857a344f3a02ad191f0f3004cce9364e5738875a027fc7a264aba371e285d3a1ddd7a868de99b1058b38277d9205500c4c96fd1c7
7
+ data.tar.gz: 4b658f2d67d823cd59d02775e06de9de8f6f0593ecdb7eabc7d97bdfe966924b89c46598cd230f7656c01e42056c2f57370f17b8d6ec83293ef99fa57a936cd3
data/README.md CHANGED
@@ -189,23 +189,49 @@ Enable the helpers by requiring the `support` submodule:
189
189
  require 'yake/support'
190
190
  ```
191
191
 
192
- `Hash` transformations:
192
+ `Object` helpers:
193
193
 
194
194
  ```ruby
195
+ MyObject.new.some_method
196
+ # => NoMethodError
197
+
198
+ MyObject.new.try(:some_method)
199
+ # => nil
200
+
201
+ 10.try(:some_method) { |x| x ** 2 }
202
+ # => 100
203
+ ```
204
+
205
+ `Hash` helpers:
206
+
207
+ ```ruby
208
+ { f: 'g', a: { d: 'e', b: 'c' } }.deep_sort
209
+ # => { a: { b: 'c', d: 'e' }, f: 'g' }
210
+
195
211
  { fizz: 'buzz' }.encode64
196
212
  # => "eyJmaXp6IjoiYnV6eiJ9\n"
197
213
 
214
+ { fizz: 'buzz', jazz: 'fuzz' }.except(:buzz)
215
+ # => { :fizz => 'buzz' }
216
+
198
217
  { fizz: 'buzz' }.strict_encode64
199
218
  # => "eyJmaXp6IjoiYnV6eiJ9"
200
219
 
220
+ { fizz: { buzz: %w[jazz fuzz] } }.stringify_names
221
+ # => { "fizz" => { "buzz" => ["jazz", "fuzz"] } }
222
+
201
223
  { 'fizz' => { 'buzz' => %w[jazz fuzz] } }.symbolize_names
202
224
  # => { :fizz => { :buzz => ["jazz", "fuzz"] } }
203
225
 
204
226
  { fizz: 'buzz' }.to_form
205
227
  # => "fizz=buzz"
228
+
229
+ { f: 'g', a: { d: 'e', b: 'c' } }.to_json_sorted
230
+ # => '{"a":{"b":"c","d":"e"},"f":"g"}'
231
+
206
232
  ```
207
233
 
208
- `Integer` transformations:
234
+ `Integer` helpers:
209
235
 
210
236
  ```ruby
211
237
  7.weeks
@@ -224,7 +250,7 @@ require 'yake/support'
224
250
  # => 2009-02-13 23:31:30 UTC
225
251
  ```
226
252
 
227
- `String` transformations:
253
+ `String` helpers:
228
254
 
229
255
  ```ruby
230
256
  host = 'https://example.com/'
@@ -241,6 +267,12 @@ host / path
241
267
  'fizz'.encode64
242
268
  # => "Zml6eg==\n"
243
269
 
270
+ 'fizz'.md5sum
271
+ # => "b6bfa6c318811be022d4f73070597660"
272
+
273
+ 'fizz'.sha1sum
274
+ # => "c25f5985f2ab63baeb2408a2d7dbc79d8f29d02f"
275
+
244
276
  'CamelCaseString'.snake_case
245
277
  # => "camel_case_string"
246
278
 
@@ -257,7 +289,7 @@ host / path
257
289
  # => { "fizz" => "buzz" }
258
290
  ```
259
291
 
260
- `Symbol` transformations
292
+ `Symbol` helpers
261
293
 
262
294
  ```ruby
263
295
  :snake_case_symbol.camel_case
@@ -267,7 +299,7 @@ host / path
267
299
  # => :camel_case_symbol
268
300
  ```
269
301
 
270
- `UTC` Time helper
302
+ `UTC` Time helpers
271
303
 
272
304
  ```ruby
273
305
  UTC.at 1234567890
data/lib/yake/support.rb CHANGED
@@ -1,14 +1,17 @@
1
1
  require 'base64'
2
+ require 'digest'
2
3
  require 'json'
3
4
  require 'time'
4
5
 
5
6
  class Hash
7
+ def deep_sort() self.sort.map { |k,v| [ k, v.try(:deep_sort) { |x| x } ] }.to_h end
6
8
  def encode64() to_json.encode64 end
7
9
  def except(*keys) self.reject { |key,_| keys.include? key } end
8
10
  def strict_encode64() to_json.strict_encode64 end
9
11
  def stringify_names() JSON.parse(to_json) end
10
12
  def symbolize_names() JSON.parse(to_json, symbolize_names: true) end
11
13
  def to_form() URI.encode_www_form(self) end
14
+ def to_json_sorted() deep_sort.to_json end
12
15
  end
13
16
 
14
17
  class Integer
@@ -26,11 +29,21 @@ class Integer
26
29
  alias :week :weeks
27
30
  end
28
31
 
32
+ class Object
33
+ def try(method, *args, **kwargs, &block)
34
+ send(method, *args, **kwargs)
35
+ rescue
36
+ block_given? ? yield(self) : nil
37
+ end
38
+ end
39
+
29
40
  class String
30
41
  def /(path) File.join(self, path.to_s) end
31
42
  def camel_case() split(/_/).map(&:capitalize).join end
32
43
  def decode64() Base64.decode64(self) end
33
44
  def encode64() Base64.encode64(self) end
45
+ def md5sum() Digest::MD5.hexdigest(self) end
46
+ def sha1sum() Digest::SHA1.hexdigest(self) end
34
47
  def snake_case() gsub(/([a-z])([A-Z])/, '\1_\2').downcase end
35
48
  def strict_decode64() Base64.strict_decode64(self) end
36
49
  def strict_encode64() Base64.strict_encode64(self) end
@@ -44,6 +57,7 @@ class Symbol
44
57
  end
45
58
 
46
59
  class UTC < Time
60
+ def initialize(...) super.utc end
47
61
  def self.at(...) super.utc end
48
62
  def self.now() super.utc end
49
63
  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.4'
4
+ VERSION = '0.6.0'
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.4
4
+ version: 0.6.0
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-04-12 00:00:00.000000000 Z
11
+ date: 2022-05-29 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: