Module: Schemable

Includes:
Traversable
Defined in:
lib/schemable.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Traversable

_traverse, #ref, #traverse

Instance Attribute Details

#schemaObject

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”

Returns:

  • (Boolean)


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

Returns:

  • (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”

Returns:

  • (Boolean)


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