typed_operation 0.4.1 → 0.4.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: 1d1be5d239791c002be2003d22a4d1a3bad636d10f5b3b923810627e5427f6d1
4
- data.tar.gz: e539e29bb32268211d6831866ee5b455f11b96b1949b0ec788a8cd0ae90cb094
3
+ metadata.gz: a5af7163e167fa37ba366469393a59d8ea25d4eede88472a7c739bee91e987d7
4
+ data.tar.gz: fb1de81a7eb3ce710c36355474c7f3b01e970c4696a82ede8fd680273cae1cb2
5
5
  SHA512:
6
- metadata.gz: 0a0cccfd3499f7cd87e73ed646163f8617125e3c07dc9259972bdbc83d50634b32b129675e9d8bcf85aaef816b61f933d096aa2c6867bcde79c88b45d43cd491
7
- data.tar.gz: 6cf1a3f0d2d7a70e57d361cdff698ddbb29505bf8177b54db9bfba83b54f64cf23983f984d990b75d2278ffbfca0c2548d2b57d8736d1acb6ac3410f58e136c6
6
+ metadata.gz: fd8a364079683dbe13c02c6090a707499db4f847bf86c395baa80ffed3e7bc997b11ae545c2a7f20d9b2c46e66f9e4b3b5496776524fe70b276eef46eff33f88
7
+ data.tar.gz: 7a7cf690621318b56b44cfe8cf4d4231694d65befd2ee62dd1cfb53d283be653b41011de4ad77f9f46636eb0b4146093f37162f4059aa74afc8190f9a789b68e
@@ -42,7 +42,7 @@ module TypedOperation
42
42
  end
43
43
 
44
44
  def call
45
- raise NotImplementedError, "You must implement #call"
45
+ raise InvalidOperationError, "You must implement #call"
46
46
  end
47
47
 
48
48
  def to_proc
@@ -10,7 +10,10 @@ module TypedOperation
10
10
  def curry(**params)
11
11
  all_args = @applied_args.merge(params)
12
12
  # check if required attrs are in @applied_args
13
- required_keys = @operation.attribute_names.select { |name| @operation.attribute_metadata(name)[:required] != false }
13
+ required_keys = @operation.attribute_names.select do |name|
14
+ meta = @operation.attribute_metadata(name)
15
+ meta[:required] != false && !meta[:typed_attribute_options].key?(:default)
16
+ end
14
17
  missing_keys = required_keys - all_args.keys
15
18
 
16
19
  if missing_keys.size > 0
@@ -26,7 +29,7 @@ module TypedOperation
26
29
  def call(...)
27
30
  prepared = curry(...)
28
31
  return prepared.operation.call if prepared.is_a?(Prepared)
29
- raise "Cannot call PartiallyApplied operation #{@operation.name} (key: #{@operation.operation_key}), are you expecting it to be Prepared?"
32
+ raise TypedOperation::MissingParameterError, "Cannot call PartiallyApplied operation #{@operation.name} (key: #{@operation.operation_key}), are you expecting it to be Prepared?"
30
33
  end
31
34
  end
32
35
  end
@@ -1,3 +1,3 @@
1
1
  module TypedOperation
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
@@ -5,5 +5,7 @@ require "typed_operation/partially_applied"
5
5
  require "typed_operation/prepared"
6
6
 
7
7
  module TypedOperation
8
- class ParameterError < StandardError; end
8
+ class InvalidOperationError < StandardError; end
9
+ class MissingParameterError < ArgumentError; end
10
+ class ParameterError < TypeError; end
9
11
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typed_operation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stephen Ierodiaconou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-06-22 00:00:00.000000000 Z
11
+ date: 2023-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails