evt-schema 2.3.0.2 → 2.3.1.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: d3799452dd8ae40202fbebec160485b2fb4810e5ecb873b1a4520a98e48117a3
4
- data.tar.gz: 989066b6a844b998e8b8debfe8d20cec98014ca3a227e2693c61ff578bf79462
3
+ metadata.gz: 971bea799a068571a832fd0d91d795d358b4bf2353815af0deeba7bd06575f2b
4
+ data.tar.gz: ce668827143bc600c0cff547599342ef8b407360532645b31fa316e6b183cb6d
5
5
  SHA512:
6
- metadata.gz: e0c2a231c2ceccd4d2a4b8472f43d23f78ef1fa18fc0ac673b1ad2eaf2d30b7afe7fffccc02f86753b517e4078fe32353765c19f78a832beac208caa763d8c3a
7
- data.tar.gz: ffd08b7990b33add23ff1daada6031a30c1c96d2d70ee58ebc7fee895f305ca38b1a0c6f24c3b59f60776152e55a7fd4864bd7909aced652673036365da911db
6
+ metadata.gz: f574566d0440bfee26e16529dcd2d577c29d7a38ec6db7a50d8b2241f100fd3fbb31a6a8138983b8c48d006576f2d73505a90359b80d73b62b0382bd7a052107
7
+ data.tar.gz: 5a5d352f13748253fb1a0b499d21305e2a750c14ca2e4d0d6026fcb2f9e53650199e1a7280fdd20585c4a9faad55ccc15b680875b7559dfeb96daf3c48c7b031
@@ -27,6 +27,7 @@ module Schema
27
27
 
28
28
  class Example
29
29
  include ::Schema::DataStructure
30
+
30
31
  attribute :some_attribute
31
32
  end
32
33
 
@@ -66,7 +67,11 @@ module Schema
66
67
  example
67
68
  end
68
69
 
69
- class Example < DataStructure::Example
70
+ class Example
71
+ include ::Schema::DataStructure
72
+
73
+ attribute :some_attribute
74
+
70
75
  def transform_read(data)
71
76
  data[:some_attribute] = 'some read value'
72
77
  end
@@ -91,7 +96,11 @@ module Schema
91
96
  example
92
97
  end
93
98
 
94
- class Example < DataStructure::Example
99
+ class Example
100
+ include ::Schema::DataStructure
101
+
102
+ attribute :some_attribute
103
+
95
104
  def transform_in(data)
96
105
  data[:some_attribute] = 'some read value'
97
106
  end
@@ -107,6 +116,10 @@ module Schema
107
116
  Error = Class.new(RuntimeError)
108
117
 
109
118
  class Example < DataStructure::Example
119
+ include ::Schema::DataStructure
120
+
121
+ attribute :some_attribute
122
+
110
123
  def transform_read(data)
111
124
  raise Error
112
125
  end
data/lib/schema/schema.rb CHANGED
@@ -41,7 +41,7 @@ module Schema
41
41
 
42
42
  check = proc do |val|
43
43
  unless val.nil? || Boolean.(val)
44
- raise Schema::Attribute::TypeError, "#{val.inspect} is not a boolean"
44
+ raise Schema::Attribute::TypeError, "#{val.inspect} of type #{val.class.name} cannot be assigned to attribute #{attribute_name} of type Boolean (Strict: #{strict.inspect})"
45
45
  end
46
46
  end
47
47
  elsif !type.nil?
@@ -50,9 +50,13 @@ module Schema
50
50
  check = proc do |val|
51
51
  unless val.nil?
52
52
  if strict
53
- raise Schema::Attribute::TypeError, "#{val.inspect} is not an instance of #{type.name}" unless val.instance_of? type
53
+ if not val.instance_of?(type)
54
+ raise Schema::Attribute::TypeError, "#{val.inspect} of type #{val.class.name} cannot be assigned to attribute #{attribute_name} of type #{type.name} (Strict: #{strict.inspect})"
55
+ end
54
56
  else
55
- raise Schema::Attribute::TypeError, "#{val.inspect} is not a kind of #{type.name}" unless val.is_a? type
57
+ if not val.is_a?(type)
58
+ raise Schema::Attribute::TypeError, "#{val.inspect} of type #{val.class.name} cannot be assigned to attribute #{attribute_name} of type #{type.name} (Strict: #{strict.inspect})"
59
+ end
56
60
  end
57
61
  end
58
62
  end
@@ -161,14 +165,23 @@ module Schema
161
165
  end
162
166
  end
163
167
 
168
+ def raw_attributes
169
+ all_attribute_names = self.class.all_attribute_names
170
+ get_attributes(all_attribute_names)
171
+ end
172
+
173
+ def get_attributes(attribute_names)
174
+ attribute_names.each_with_object({}) do |attribute_name, attributes|
175
+ attributes[attribute_name] = public_send(attribute_name)
176
+ end
177
+ end
178
+
164
179
  def attributes(include_transient: nil)
165
180
  include_transient ||= false
166
181
 
167
182
  attribute_names = self.class.attribute_names(include_transient: include_transient)
168
183
 
169
- data = attribute_names.each_with_object({}) do |attribute_name, attributes|
170
- attributes[attribute_name] = public_send(attribute_name)
171
- end
184
+ data = get_attributes(attribute_names)
172
185
 
173
186
  transform_write(data)
174
187
 
@@ -197,4 +210,8 @@ module Schema
197
210
  !different
198
211
  end
199
212
  alias :eql? :==
213
+
214
+ def hash
215
+ [self.class, raw_attributes].hash
216
+ end
200
217
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0.2
4
+ version: 2.3.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-31 00:00:00.000000000 Z
11
+ date: 2022-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-attribute