strict 1.2.0 → 1.3.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: 82ad76d91d34f1bd4cc46ea38e4cef3c03c7d7e328f04d3dcc3c555da1eabdb4
4
- data.tar.gz: 73f3ca6bc1d03caa42c23f61a3615ccb55285a1dcd962e978be3a87064abf8a3
3
+ metadata.gz: ae43c882eaf20478716e5770eff835c3c9611b714f20ba98b23418969a40cb8f
4
+ data.tar.gz: b003e41e3b5efb4628e40c14dc84e4fdb64e8ab8c457a6299347d921ff4907bd
5
5
  SHA512:
6
- metadata.gz: c442d7d203a993681c89694052856d125ab7c35965fb965ed64250a3eb83476069d844488d64798afc7ddc57b1edafbbbe0d6807b92b3c3a228bf9f3891beecd
7
- data.tar.gz: 545e4e331d8ed3e578e72dbb52347bb34a0512fa899ca1da60f3181a2836d06a188658b224feed112a2e21464723833230b750628a1d837346566730375ce803
6
+ metadata.gz: c09fa26af6510b02c08c2cb7965f3ccb83703f0d5ca4c8a741516f09810e0069ed46bb69a6b5af0fec8effd105c6c0be49619a42c7ca5debacd5462391ebe9b4
7
+ data.tar.gz: 17d077e3ea3ed656a71ff3fed66c057c9f49468bcdbd66b3ea16c1d519a7a2ab2ff28973b4b98507035dce8367ebf5e7665772ced2eaec67e4cf300c6e69d320
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- strict (1.2.0)
4
+ strict (1.3.0)
5
5
  zeitwerk (~> 2.6)
6
6
 
7
7
  GEM
@@ -7,6 +7,10 @@ module Strict
7
7
  mod.include(Interfaces::Instance)
8
8
  end
9
9
 
10
+ def coercer
11
+ Interfaces::Coercer.new(self)
12
+ end
13
+
10
14
  def expose(method_name, &block)
11
15
  sig = sig(&block)
12
16
  parameter_list = sig.parameters.map { |parameter| "#{parameter.name}:" }.join(", ")
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Strict
4
+ module Interfaces
5
+ class Coercer
6
+ attr_reader :interface_class
7
+
8
+ def initialize(interface_class)
9
+ @interface_class = interface_class
10
+ end
11
+
12
+ def call(value)
13
+ return value if value.nil? || value.instance_of?(interface_class)
14
+
15
+ interface_class.new(value)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Strict
4
- VERSION = "1.2.0"
4
+ VERSION = "1.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: strict
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Thompson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-14 00:00:00.000000000 Z
11
+ date: 2022-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: zeitwerk
@@ -170,6 +170,7 @@ files:
170
170
  - lib/strict/implementation_does_not_conform_error.rb
171
171
  - lib/strict/initialization_error.rb
172
172
  - lib/strict/interface.rb
173
+ - lib/strict/interfaces/coercer.rb
173
174
  - lib/strict/interfaces/instance.rb
174
175
  - lib/strict/method.rb
175
176
  - lib/strict/method_call_error.rb