activeinteractor 2.0.0.alpha.4.0.3 → 2.0.0.alpha.4.0.4

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: 6a5bb6ce4f039c83c87fa2c01a29aaad3cdc276c1a48b0a433e699b627f5aaae
4
- data.tar.gz: f45cfc0cbe14665aff305a9b0ede036b64a447c3d585e5eafa0896bbbc1e7494
3
+ metadata.gz: a5c6408bdcf2d87a8fcb5fd4eb31a6a65c39daa5a142e2dbea309decc731d472
4
+ data.tar.gz: 05d8bf464f5d1c2f55de64357e04d894905277da9a5fc96f44a987eef880cdaa
5
5
  SHA512:
6
- metadata.gz: ef7083fa64b332bd655a8f11522626c073c1c24f54e74005c6ab6a2072bd497129ba2a4419ac58b38816c170661b682f5b7032f35889e4243663c6bcc874ea44
7
- data.tar.gz: f8528ce1dd53b532450c280d2e87ef97980f19571ba978c7f109583ea7934978a3b7b280ab10c01c1d89ab2b6baae436109b9b23e9fa041b6bfa56f40169fcee
6
+ metadata.gz: 0d5f4e51c89e4ba941d3a4b4e0c5f62a2dc99188ff95aaa7645025347bce14833c3aaeca7739faf6eb3bc0370f19c108ccee2b2a7b8aafdbc1a64f3875afc3f9
7
+ data.tar.gz: f3ee81c83b88e54469ded7ba7df55e9ba711f7c3bd1ceff398ecbb215615bea850cd18eaec9bd6c79b39a52f8036f4c2073e6b1431e255cd54364fd19e3c0806
@@ -6,12 +6,11 @@ module ActiveInteractor
6
6
  NO_DEFAULT_VALUE = :__no_default_value__
7
7
  attr_reader :description, :error_messages, :name
8
8
 
9
- def initialize(owner, name, type, description = nil, **options)
10
- @owner = owner
9
+ def initialize(name, type, description = nil, **options)
10
+ parse_options(description, options)
11
+
11
12
  @name = name.to_sym
12
13
  @type_expression = type
13
- @description = description || options[:description]
14
- @options = { required: false, default: NO_DEFAULT_VALUE }.merge(options)
15
14
  @error_messages = []
16
15
  end
17
16
 
@@ -44,6 +43,19 @@ module ActiveInteractor
44
43
 
45
44
  private
46
45
 
46
+ def parse_options(description, options)
47
+ if description.is_a?(String)
48
+ @description = description
49
+ @options = { required: false, default: NO_DEFAULT_VALUE }.merge(options)
50
+ elsif description.is_a?(Hash)
51
+ @options = { required: false, default: NO_DEFAULT_VALUE }.merge(description)
52
+ @description = @options[:description]
53
+ elsif description.nil?
54
+ @description = nil
55
+ @options = { required: false, default: NO_DEFAULT_VALUE }.merge(options)
56
+ end
57
+ end
58
+
47
59
  def type_is_a_active_interactor_type?
48
60
  type.is_a?(ActiveInteractor::Type::Base) || type.superclass == ActiveInteractor::Type::Base
49
61
  end
@@ -55,19 +67,16 @@ module ActiveInteractor
55
67
  end
56
68
 
57
69
  def validate_type!
58
- return true if value.nil?
59
- return true if %i[any untyped].include?(type)
60
-
61
- if type_is_a_active_interactor_type?
62
- return true if type.valid?(value)
63
-
64
- error_messages << :invalid
65
- elsif value.is_a?(type)
66
- return true
67
- end
70
+ return true if value_nil_or_untyped?
71
+ return true if type_is_a_active_interactor_type? && type.valid?(value)
72
+ return true if value.is_a?(type)
68
73
 
69
74
  error_messages << :invalid
70
75
  end
76
+
77
+ def value_nil_or_untyped?
78
+ value.nil? || %i[any untyped].include?(type)
79
+ end
71
80
  end
72
81
  end
73
82
  end
@@ -3,15 +3,14 @@
3
3
  module ActiveInteractor
4
4
  module Context
5
5
  class AttributeSet
6
- def initialize(owner, *attributes)
7
- @owner = owner
6
+ def initialize(*attributes)
8
7
  @set = {}
9
8
  attributes.each { |attribute| @set[attribute.name] = attribute }
10
9
  end
11
10
 
12
11
  def add(*attribute_args)
13
12
  attribute_options = attribute_args.extract_options!
14
- attribute = Attribute.new(@owner, *attribute_args, **attribute_options)
13
+ attribute = Attribute.new(*attribute_args, **attribute_options)
15
14
  @set[attribute.name] = attribute
16
15
  end
17
16
 
@@ -18,7 +18,7 @@ module ActiveInteractor
18
18
  protected
19
19
 
20
20
  def attribute_set
21
- @attribute_set ||= AttributeSet.new(self)
21
+ @attribute_set ||= AttributeSet.new
22
22
  end
23
23
  end
24
24
 
@@ -57,7 +57,7 @@ module ActiveInteractor
57
57
  end
58
58
 
59
59
  def attribute_set
60
- @attribute_set ||= AttributeSet.new(self, *self.class.send(:attribute_set).attributes.map(&:dup))
60
+ @attribute_set ||= AttributeSet.new(*self.class.send(:attribute_set).attributes.map(&:dup))
61
61
  end
62
62
 
63
63
  def method_missing(method_name, *arguments)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeinteractor
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.alpha.4.0.3
4
+ version: 2.0.0.alpha.4.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Allen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-07 00:00:00.000000000 Z
11
+ date: 2024-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -88,10 +88,10 @@ licenses:
88
88
  - MIT
89
89
  metadata:
90
90
  bug_tracker_uri: https://github.com/activeinteractor/activeinteractor/issues
91
- changelog_uri: https://github.com/activeinteractor/activeinteractor/blob/v2.0.0-alpha.4.0.3/CHANGELOG.md
91
+ changelog_uri: https://github.com/activeinteractor/activeinteractor/blob/v2.0.0-alpha.4.0.4/CHANGELOG.md
92
92
  homepage_uri: https://activeinteractor.org
93
- source_code_uri: https://github.com/activeinteractor/activeinteractor/tree/v2.0.0-alpha.4.0.3
94
- documentation_uri: https://activeinteractor.org/api/activeinteractor/v2.0.0-alpha.4.0.3
93
+ source_code_uri: https://github.com/activeinteractor/activeinteractor/tree/v2.0.0-alpha.4.0.4
94
+ documentation_uri: https://activeinteractor.org/api/activeinteractor/v2.0.0-alpha.4.0.4
95
95
  wiki_uri: https://github.com/activeinteractor/activeinteractor/wiki
96
96
  rubygems_mfa_required: 'true'
97
97
  post_install_message: