evt-schema 2.2.6.1 → 2.3.0.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: 9299b9d03473151d2ac17454be8a3fa58a77ff2db066742d5930960b041340a1
4
- data.tar.gz: b414f51b769f2efad19b78af1b4c3e8ac31ae855516f303de78c2d464e60a666
3
+ metadata.gz: 6298a47ba57d055166492488cc80134821dc6c8854623a1828ab126beeb2f05f
4
+ data.tar.gz: c8bbcbc6d8ada0ce2169b1aa35cba6f117bd03928511d320fa4040820a65cd0d
5
5
  SHA512:
6
- metadata.gz: 9e1dd9b3f459e6134c596674b634db32020767278ed6fd59283cc51c920bfc228d1b0e657e17450b06e552b568d2407218d22b3537b43fba57b4a2759da53a80
7
- data.tar.gz: be27088bda8b35cc4ac9b507d89513fb6705b430040145d4e062492253b2884b52c60f2352705744088a21a9dc316243153c09fa2748ef25bc217071cbe3e5f8
6
+ metadata.gz: 1c0b44340c1d7dacb2eaff58411ddbf8e0decf77fc132590c290a7aed8314b719446076eb88e25ecd7a795ae1298e90416bd58f476a8ea5bc6a1ef89648ce5d8
7
+ data.tar.gz: bd84b8ee4f51e07275fc1b21bc44edc275cc33985bc0b20148a825fcd796bdd902e9fd4f17228e18493e08248c92b1c79c3597da9e6214ddeb3807a5f0fa04d6
@@ -78,7 +78,9 @@ module Schema
78
78
  @attributes ||= AttributeRegistry.new
79
79
  end
80
80
 
81
- def attribute_names
81
+ def attribute_names(include_transient: nil)
82
+ include_transient ||= false
83
+
82
84
  transient_attributes = []
83
85
  if respond_to?(:transient_attributes)
84
86
  transient_attributes = self.transient_attributes
@@ -86,12 +88,20 @@ module Schema
86
88
 
87
89
  attribute_names = []
88
90
  attributes.each do |attribute|
89
- next if transient_attributes.include?(attribute.name)
91
+ if !include_transient &&
92
+ transient_attributes.include?(attribute.name)
93
+ next
94
+ end
95
+
90
96
  attribute_names << attribute.name
91
97
  end
92
98
 
93
99
  attribute_names
94
100
  end
101
+
102
+ def all_attribute_names
103
+ attribute_names(include_transient: true)
104
+ end
95
105
  end
96
106
 
97
107
  class AttributeRegistry
@@ -151,24 +161,35 @@ module Schema
151
161
  end
152
162
  end
153
163
 
154
- def attributes
155
- transient_attributes = []
156
- if self.class.respond_to?(:transient_attributes)
157
- transient_attributes = self.class.transient_attributes
158
- end
164
+ def attributes(include_transient: nil)
165
+ include_transient ||= false
166
+
167
+ attribute_names = self.class.attribute_names(include_transient: include_transient)
159
168
 
160
- data = self.class.attributes.each_with_object({}) do |attribute, attributes|
161
- next if transient_attributes.include?(attribute.name)
162
- attributes[attribute.name] = public_send(attribute.name)
169
+ data = attribute_names.each_with_object({}) do |attribute_name, attributes|
170
+ attributes[attribute_name] = public_send(attribute_name)
163
171
  end
164
172
 
165
173
  transform_write(data)
166
174
 
167
175
  data
168
176
  end
169
- alias :to_h :attributes
177
+
178
+ def to_h
179
+ attributes
180
+ end
181
+
182
+ def all_attributes
183
+ attributes(include_transient: true)
184
+ end
170
185
 
171
186
  def ==(other, attributes_names=nil, ignore_class: nil)
187
+ ignore_class ||= false
188
+
189
+ if not ignore_class
190
+ return false if self.class != other.class
191
+ end
192
+
172
193
  comparison = Compare.(self, other, attributes_names)
173
194
 
174
195
  different = comparison.different?(ignore_class: ignore_class)
@@ -50,12 +50,12 @@ module Schema
50
50
 
51
51
  def self.build_entry(control_name, control, compare_name, compare)
52
52
  control_class = control.class
53
- if not control_class.attribute_names.include?(control_name)
53
+ if not control_class.all_attribute_names.include?(control_name)
54
54
  raise Error, "Attribute is not defined (Attribute Name: #{control_name.inspect}, Schema Class: #{control_class})"
55
55
  end
56
56
 
57
57
  compare_class = compare.class
58
- if not compare_class.attribute_names.include?(compare_name)
58
+ if not compare_class.all_attribute_names.include?(compare_name)
59
59
  raise Error, "Attribute is not defined (Attribute Name: #{compare_name.inspect}, Schema Class: #{compare_class})"
60
60
  end
61
61
 
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.2.6.1
4
+ version: 2.3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-20 00:00:00.000000000 Z
11
+ date: 2020-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: evt-attribute
@@ -123,7 +123,7 @@ homepage: https://github.com/eventide-project/schema
123
123
  licenses:
124
124
  - MIT
125
125
  metadata: {}
126
- post_install_message:
126
+ post_install_message:
127
127
  rdoc_options: []
128
128
  require_paths:
129
129
  - lib
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  version: '0'
140
140
  requirements: []
141
141
  rubygems_version: 3.1.2
142
- signing_key:
142
+ signing_key:
143
143
  specification_version: 4
144
144
  summary: Primitives for schema and data structure
145
145
  test_files: []