yake 0.4.3 → 0.5.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: 2d64b926e9680f75a892e5de6c68062242801d184bdbd24595a10210fbc7f22a
4
- data.tar.gz: bf82c77421cec7c5b5d30020b15895ec111d8e53c0122ef6e62fa26856acb7ca
3
+ metadata.gz: 6688bf834975490165ca48ff259e22402ec5dc417099c8c2291b4796eb76b5b2
4
+ data.tar.gz: d92d5faec4b6bd8b60a65962af51493176a4184a87a52de188f84367bce4002b
5
5
  SHA512:
6
- metadata.gz: a99122212c84d638874ebd25e07d9f7305568fbdd18f95d04c8d44df1c337b75a81b37c55840d2366adf8ea05fe2cff35fbf876c082ab82dbf5f98b3511d8293
7
- data.tar.gz: a76262d29fb1a173cb9293af7c5ce34e1089d181112aaf80d2d6a6b117141c89c63322b24074287d6b655d04e6d68d6499b51d46bae20555735ffd344b199761
6
+ metadata.gz: 2cf319bba7cd22f2c5f58a66c401dd77dfc2d050214d39d755748d9dc78baed88c603dbfdbbe3d233385e35270c73ec19ab9d3edae394ef9e6dbc2c89c9c1a34
7
+ data.tar.gz: 2221a9a8108091b59c9e0eeeb7959c675faee09385847ed5fbf9a75ebbc788be6a734c13eec4a948af883ce1210d9d7fe45401c1e0f3b0cba2efceab03a88df5
data/README.md CHANGED
@@ -179,6 +179,92 @@ 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 `v0.5`, `yake` comes with a support module for common transformations.
185
+
186
+ `Hash` transformations:
187
+
188
+ ```ruby
189
+ require 'yake/support'
190
+
191
+ { fizz: 'buzz' }.encode64
192
+ # => "eyJmaXp6IjoiYnV6eiJ9\n"
193
+
194
+ { fizz: 'buzz' }.strict_encode64
195
+ # => "eyJmaXp6IjoiYnV6eiJ9"
196
+
197
+ { 'fizz' => { 'buzz' => %w[jazz fuzz] } }.symbolize_names
198
+ # => { :fizz => { :buzz => ["jazz", "fuzz"] } }
199
+
200
+ { fizz: 'buzz' }.to_form
201
+ # => "fizz=buzz"
202
+ ```
203
+
204
+ `Integer` transformations:
205
+
206
+ ```ruby
207
+ 7.days
208
+ # => 604800
209
+
210
+ 7.hours
211
+ # => 25200
212
+
213
+ 7.minutes
214
+ # => 420
215
+
216
+ 1234567890.utc
217
+ # => 2009-02-13 23:31:30 UTC
218
+ ```
219
+
220
+ `String` transformations:
221
+
222
+ ```ruby
223
+ 'snake_case_string'.camel_case
224
+ # => SnakeCaseString
225
+
226
+ "Zml6eg==\n".decode64
227
+ # => "fizz"
228
+
229
+ 'fizz'.encode64
230
+ # => "Zml6eg==\n"
231
+
232
+ 'CamelCaseString'.snake_case
233
+ # => 'camel_case_string'
234
+
235
+ 'Zml6eg=='.strict_decode64
236
+ # => "fizz"
237
+
238
+ 'fizz'.strict_encode64
239
+ # => "Zml6eg=="
240
+
241
+ '{"fizz":"buzz"}'.to_h_from_json
242
+ # => { "fizz" => "buzz" }
243
+
244
+ 'fizz=buzz'.to_h_from_form
245
+ # => { "fizz" => "buzz" }
246
+ ```
247
+
248
+ `Symbol` transformations
249
+
250
+ ```ruby
251
+ :snake_case_symbol.camel_case
252
+ # => :SnakeCaseSymbol
253
+
254
+ :CamelCaseSymbol.snake_case
255
+ # => 'camel_case_symbol'
256
+ ```
257
+
258
+ `UTC` Time helper
259
+
260
+ ```ruby
261
+ UTC.at 1234567890
262
+ # => 2009-02-13 23:31:30 UTC
263
+
264
+ UTC.now
265
+ # => 2022-02-26 13:57:07.860539 UTC
266
+ ```
267
+
182
268
  ## Datadog Integration
183
269
 
184
270
  As of `~> 0.4`, `yake` comes with a helper for writing Lambdas that integrate with Datadog's `datadog-ruby` gem.
@@ -0,0 +1,39 @@
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 days() hours * 24 end
14
+ def hours() minutes * 60 end
15
+ def minutes() seconds * 60 end
16
+ def seconds() self end
17
+ def utc() UTC.at(self) end
18
+ end
19
+
20
+ class String
21
+ def camel_case() split(/_/).map(&:capitalize).join end
22
+ def decode64() Base64.decode64(self) end
23
+ def encode64() Base64.encode64(self) end
24
+ def snake_case() gsub(/([a-z])([A-Z])/, '\1_\2').downcase end
25
+ def strict_decode64() Base64.strict_decode64(self) end
26
+ def strict_encode64() Base64.strict_encode64(self) end
27
+ def to_h_from_json(**params) JSON.parse(self, **params) end
28
+ def to_h_from_form() URI.decode_www_form(self).to_h end
29
+ end
30
+
31
+ class Symbol
32
+ def camel_case() to_s.camel_case.to_sym end
33
+ def snake_case() to_s.snake_case.to_sym end
34
+ end
35
+
36
+ class UTC < Time
37
+ def self.at(...) super.utc end
38
+ def self.now() super.utc end
39
+ 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.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.4.3
4
+ version: 0.5.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: 2021-11-29 00:00:00.000000000 Z
11
+ date: 2022-02-26 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