yake 0.4.3 → 0.5.2

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