yake 0.5.4 → 0.6.0

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