sorbet-schema 0.7.1 → 0.7.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: e46419810b44afbd517689ff86c8eb5af8a5b70ef8883ae94d5c9b2645d5b68d
4
- data.tar.gz: 054a2bcef831395c8a4010099441bbf8ac661292812f078cfd595012f337ada9
3
+ metadata.gz: 90b806c8a8d85102efd76868966f5d7ade60e2839871171bf081f8fb87483410
4
+ data.tar.gz: d72faf1ab20dd344c30cbf44f01f9dff090c88c97ed6f53dd945042a5de450eb
5
5
  SHA512:
6
- metadata.gz: de8f70512ab216e8cb937b0910b8f69ea9cd8028bb2fb8f1c881ff2a296131e4608d48f2e74306918a8ab876573aef75d8b821a783351dfc0657d7d33fb46764
7
- data.tar.gz: ae7541ea2939e65524dfbf9940d8aad2fd5e743a01ab23c16d3ce0b8f151b47122e856ed2ec7864d06c24c89c9bb1bac35baa377e86c24dcb3d85efe21376424
6
+ metadata.gz: ffe227e1a7c2d964001c4ab1e7510f5efc43e6b17f3108a3706eba384e67f20af4a8042ded06e6130999c87f57dd73270c55fe409f61d2d6dee067638ffbfc2b
7
+ data.tar.gz: 5fa47438c966fb08bb1987b3deb54bb3c8010f740c50e062df2c7d1827721d6f6a7c4283817ec21ec0dc618df4b20dc43f48f9344c18ce87fc79ad8ce0250e12
data/CHANGELOG.md CHANGED
@@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.7.2](https://github.com/maxveldink/sorbet-schema/compare/v0.7.1...v0.7.2) (2024-07-11)
8
+
9
+
10
+ ### Features
11
+
12
+ * add coercion support for DateTime ([#116](https://github.com/maxveldink/sorbet-schema/issues/116)) ([6f6c3e1](https://github.com/maxveldink/sorbet-schema/commit/6f6c3e151320455bc9734ebb207f746f2c139393))
13
+
7
14
  ## [0.7.1](https://github.com/maxveldink/sorbet-schema/compare/v0.7.0...v0.7.1) (2024-07-09)
8
15
 
9
16
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sorbet-schema (0.7.1)
4
+ sorbet-schema (0.7.2)
5
5
  sorbet-result (~> 1.1)
6
6
  sorbet-runtime (~> 0.5)
7
7
  sorbet-struct-comparable (~> 1.3)
@@ -1,5 +1,5 @@
1
1
  # typed: strict
2
2
 
3
3
  module SorbetSchema
4
- VERSION = "0.7.1"
4
+ VERSION = "0.7.2"
5
5
  end
@@ -19,6 +19,7 @@ module Typed
19
19
  IntegerCoercer,
20
20
  FloatCoercer,
21
21
  DateCoercer,
22
+ DateTimeCoercer,
22
23
  EnumCoercer,
23
24
  StructCoercer,
24
25
  TypedArrayCoercer,
@@ -0,0 +1,29 @@
1
+ # typed: strict
2
+
3
+ require "date"
4
+
5
+ module Typed
6
+ module Coercion
7
+ class DateTimeCoercer < Coercer
8
+ extend T::Generic
9
+
10
+ Target = type_member { {fixed: DateTime} }
11
+
12
+ sig { override.params(type: T::Types::Base).returns(T::Boolean) }
13
+ def used_for_type?(type)
14
+ T::Utils.coerce(type) == T::Utils.coerce(DateTime)
15
+ end
16
+
17
+ sig { override.params(type: T::Types::Base, value: Value).returns(Result[Target, CoercionError]) }
18
+ def coerce(type:, value:)
19
+ return Failure.new(CoercionError.new("Type must be a DateTime.")) unless used_for_type?(type)
20
+
21
+ return Success.new(value) if value.is_a?(DateTime)
22
+
23
+ Success.new(DateTime.parse(value))
24
+ rescue Date::Error, TypeError
25
+ Failure.new(CoercionError.new("'#{value}' cannot be coerced into DateTime."))
26
+ end
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorbet-schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max VelDink
@@ -94,6 +94,7 @@ files:
94
94
  - lib/typed/coercion/coercion_error.rb
95
95
  - lib/typed/coercion/coercion_not_supported_error.rb
96
96
  - lib/typed/coercion/date_coercer.rb
97
+ - lib/typed/coercion/date_time_coercer.rb
97
98
  - lib/typed/coercion/enum_coercer.rb
98
99
  - lib/typed/coercion/float_coercer.rb
99
100
  - lib/typed/coercion/integer_coercer.rb