class Yori::SchemaValidator

SchemaValidator: Common validate methods of Schema.

Attributes

schema[R]

Public Class Methods

new(schema) click to toggle source
# File lib/yori/schema_validator.rb, line 6
def initialize(schema)
  @schema = schema
end

Public Instance Methods

simple_class_name() click to toggle source
# File lib/yori/schema_validator.rb, line 36
def simple_class_name
  schema.class.name.split('::').last
end
validate_field_value_type!(field, klass) click to toggle source
# File lib/yori/schema_validator.rb, line 19
def validate_field_value_type!(field, klass)
  value = schema[field]
  return if value.nil? || value.is_a?(klass)
  raise Yori::Errors::InvalidSchemaError, "value of #{field} is not #{klass}."
end
validate_limit_field_values!(field, *values) click to toggle source
# File lib/yori/schema_validator.rb, line 25
def validate_limit_field_values!(field, *values)
  value = schema[field]
  return if values.include?(value)
  raise Yori::Errors::InvalidSchemaError, "Valid values of #{field} are #{values.join(', ')}."
end
validate_mutually_exclusive_fields!(field1, field2) click to toggle source
# File lib/yori/schema_validator.rb, line 31
def validate_mutually_exclusive_fields!(field1, field2)
  return if schema.key?(field1) ^ schema.key?(field2)
  raise Yori::Errors::InvalidSchemaError, "#{field1} and #{field2} are mutually exclusive."
end
validate_require_fields!(*fields) click to toggle source
# File lib/yori/schema_validator.rb, line 12
def validate_require_fields!(*fields)
  fields.each do |field|
    next if schema.key?(field)
    raise Yori::Errors::MissingRequiredFieldError, "#{field} of #{simple_class_name} is Required."
  end
end