yake 0.4.3 → 0.5.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: 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