Module: Schemable
- Includes:
- Traversable
- Defined in:
- lib/schemable.rb
Instance Attribute Summary collapse
-
#schema ⇒ Object
Returns the value of attribute schema.
Instance Method Summary collapse
-
#invalid_superset? ⇒ Boolean
Are no extra keys present? “invalid when something is unexpected”.
- #valid? ⇒ Boolean
-
#valid_subset? ⇒ Boolean
Are all required keys present? “valid when nothing is missing”.
Methods included from Traversable
Instance Attribute Details
#schema ⇒ Object
Returns the value of attribute schema.
7 8 9 |
# File 'lib/schemable.rb', line 7 def schema @schema end |
Instance Method Details
#invalid_superset? ⇒ Boolean
Are no extra keys present? “invalid when something is unexpected”
33 34 35 36 37 38 39 40 |
# File 'lib/schemable.rb', line 33 def invalid_superset? invalid = false self.traverse do |key_path, value| expected = schema.ref(key_path) invalid = invalid || !expected end invalid end |
#valid? ⇒ Boolean
15 16 17 |
# File 'lib/schemable.rb', line 15 def valid? valid_subset? && !invalid_superset? end |
#valid_subset? ⇒ Boolean
Are all required keys present? “valid when nothing is missing”
21 22 23 24 25 26 27 28 29 |
# File 'lib/schemable.rb', line 21 def valid_subset? valid = true schema.traverse do |key_path, value| actual = self.ref(key_path) missing = actual.nil? valid = valid && !missing end valid end |