yake 0.4.3 → 0.5.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: 2d64b926e9680f75a892e5de6c68062242801d184bdbd24595a10210fbc7f22a
4
- data.tar.gz: bf82c77421cec7c5b5d30020b15895ec111d8e53c0122ef6e62fa26856acb7ca
3
+ metadata.gz: 05423d5da13bfc7484b2cf3f8a0a5c71534480b9925183b813bb8bdbaf564b1d
4
+ data.tar.gz: 2ff53556d45a9dec3b909c4e711da615652127c9ce48f60516910944d44c3542
5
5
  SHA512:
6
- metadata.gz: a99122212c84d638874ebd25e07d9f7305568fbdd18f95d04c8d44df1c337b75a81b37c55840d2366adf8ea05fe2cff35fbf876c082ab82dbf5f98b3511d8293
7
- data.tar.gz: a76262d29fb1a173cb9293af7c5ce34e1089d181112aaf80d2d6a6b117141c89c63322b24074287d6b655d04e6d68d6499b51d46bae20555735ffd344b199761
6
+ metadata.gz: 8b467a4358d9d73b603e16470b737a0a3c9bed0f9a14246ec035fe6cf99dba694d621d72d517e6959b8a5788fbc7a6fad72e6630fcf817fd1ca1f606e5558d78
7
+ data.tar.gz: c9648172bae6dde99fad24d063670766d9722f428c51cc5e6e3aac034fb86050a1f5db17aae1d41243a6d6e368ff322076120a14da7926489eccc684ea907df7
data/README.md CHANGED
@@ -179,6 +179,99 @@ end
179
179
 
180
180
  Finally, `yake` does not depend on any other gems, using the Ruby stdlib only. This helps keep your Lambda packages slim & speedy.
181
181
 
182
+ ## Support Helpers
183
+
184
+ As of `~> 0.5`, `yake` comes with a support module for common transformations.
185
+
186
+ Enable the helpers by requiring the `support` submodule:
187
+
188
+ ```ruby
189
+ require 'yake/support'
190
+ ```
191
+
192
+ `Hash` transformations:
193
+
194
+ ```ruby
195
+ { fizz: 'buzz' }.encode64
196
+ # => "eyJmaXp6IjoiYnV6eiJ9\n"
197
+
198
+ { fizz: 'buzz' }.strict_encode64
199
+ # => "eyJmaXp6IjoiYnV6eiJ9"
200
+
201
+ { 'fizz' => { 'buzz' => %w[jazz fuzz] } }.symbolize_names
202
+ # => { :fizz => { :buzz => ["jazz", "fuzz"] } }
203
+
204
+ { fizz: 'buzz' }.to_form
205
+ # => "fizz=buzz"
206
+ ```
207
+
208
+ `Integer` transformations:
209
+
210
+ ```ruby
211
+ 7.weeks
212
+ # => 4_233_600
213
+
214
+ 7.days
215
+ # => 604_800
216
+
217
+ 7.hours
218
+ # => 25_200
219
+
220
+ 7.minutes
221
+ # => 420
222
+
223
+ 1234567890.utc
224
+ # => 2009-02-13 23:31:30 UTC
225
+ ```
226
+
227
+ `String` transformations:
228
+
229
+ ```ruby
230
+ 'snake_case_string'.camel_case
231
+ # => SnakeCaseString
232
+
233
+ "Zml6eg==\n".decode64
234
+ # => "fizz"
235
+
236
+ 'fizz'.encode64
237
+ # => "Zml6eg==\n"
238
+
239
+ 'CamelCaseString'.snake_case
240
+ # => 'camel_case_string'
241
+
242
+ 'Zml6eg=='.strict_decode64
243
+ # => "fizz"
244
+
245
+ 'fizz'.strict_encode64
246
+ # => "Zml6eg=="
247
+
248
+ '{"fizz":"buzz"}'.to_h_from_json
249
+ # => { "fizz" => "buzz" }
250
+
251
+ 'fizz=buzz'.to_h_from_form
252
+ # => { "fizz" => "buzz" }
253
+ ```
254
+
255
+ `Symbol` transformations
256
+
257
+ ```ruby
258
+ :snake_case_symbol.camel_case
259
+ # => :SnakeCaseSymbol
260
+
261
+ :CamelCaseSymbol.snake_case
262
+ # => 'camel_case_symbol'
263
+ ```
264
+
265
+ `UTC` Time helper
266
+
267
+ ```ruby
268
+ UTC.at 1234567890
269
+ # => 2009-02-13 23:31:30 UTC
270
+
271
+ UTC.now
272
+ # => 2022-02-26 13:57:07.860539 UTC
273
+ ```
274
+
182
275
  ## Datadog Integration
183
276
 
184
277
  As of `~> 0.4`, `yake` comes with a helper for writing Lambdas that integrate with Datadog's `datadog-ruby` gem.
@@ -0,0 +1,47 @@
1
+ require 'base64'
2
+ require 'json'
3
+ require 'time'
4
+
5
+ class Hash
6
+ def encode64() to_json.encode64 end
7
+ def strict_encode64() to_json.strict_encode64 end
8
+ def symbolize_names() JSON.parse(to_json, symbolize_names: true) end
9
+ def to_form() URI.encode_www_form(self) end
10
+ end
11
+
12
+ class Integer
13
+ def weeks() days * 7 end
14
+ def days() hours * 24 end
15
+ def hours() minutes * 60 end
16
+ def minutes() seconds * 60 end
17
+ def seconds() self end
18
+ def utc() UTC.at(self) end
19
+
20
+ alias :second :seconds
21
+ alias :minute :minutes
22
+ alias :hour :hours
23
+ alias :day :days
24
+ alias :week :weeks
25
+ end
26
+
27
+ class String
28
+ def /(path) File.join(self, path.to_s) end
29
+ def camel_case() split(/_/).map(&:capitalize).join end
30
+ def decode64() Base64.decode64(self) end
31
+ def encode64() Base64.encode64(self) end
32
+ def snake_case() gsub(/([a-z])([A-Z])/, '\1_\2').downcase end
33
+ def strict_decode64() Base64.strict_decode64(self) end
34
+ def strict_encode64() Base64.strict_encode64(self) end
35
+ def to_h_from_json(**params) JSON.parse(self, **params) end
36
+ def to_h_from_form() URI.decode_www_form(self).to_h end
37
+ end
38
+
39
+ class Symbol
40
+ def camel_case() to_s.camel_case.to_sym end
41
+ def snake_case() to_s.snake_case.to_sym end
42
+ end
43
+
44
+ class UTC < Time
45
+ def self.at(...) super.utc end
46
+ def self.now() super.utc end
47
+ 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.4.3'
4
+ VERSION = '0.5.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.4.3
4
+ version: 0.5.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: 2021-11-29 00:00:00.000000000 Z
11
+ date: 2022-03-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -25,6 +25,7 @@ files:
25
25
  - lib/yake/dsl.rb
26
26
  - lib/yake/errors.rb
27
27
  - lib/yake/logger.rb
28
+ - lib/yake/support.rb
28
29
  - lib/yake/version.rb
29
30
  homepage: https://github.com/amancevice/yake
30
31
  licenses:
@@ -38,14 +39,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
38
39
  requirements:
39
40
  - - ">="
40
41
  - !ruby/object:Gem::Version
41
- version: 2.2.0
42
+ version: 2.7.5
42
43
  required_rubygems_version: !ruby/object:Gem::Requirement
43
44
  requirements:
44
45
  - - ">="
45
46
  - !ruby/object:Gem::Version
46
47
  version: '0'
47
48
  requirements: []
48
- rubygems_version: 3.2.32
49
+ rubygems_version: 3.3.7
49
50
  signing_key:
50
51
  specification_version: 4
51
52
  summary: Rake-like DSL for declaring AWS Lambda function handlers