Class: Yori::SchemaValidator
- Inherits:
-
Object
- Object
- Yori::SchemaValidator
- Defined in:
- lib/yori/schema_validator.rb
Overview
SchemaValidator: Common validate methods of Schema.
Instance Attribute Summary collapse
-
#schema ⇒ Object
readonly
Returns the value of attribute schema.
Instance Method Summary collapse
-
#initialize(schema) ⇒ SchemaValidator
constructor
A new instance of SchemaValidator.
- #simple_class_name ⇒ Object
- #validate_field_value_type!(field, klass) ⇒ Object
- #validate_limit_field_values!(field, *values) ⇒ Object
- #validate_mutually_exclusive_fields!(field1, field2) ⇒ Object
- #validate_require_fields!(*fields) ⇒ Object
Constructor Details
#initialize(schema) ⇒ SchemaValidator
Returns a new instance of SchemaValidator.
6 7 8 |
# File 'lib/yori/schema_validator.rb', line 6 def initialize(schema) @schema = schema end |
Instance Attribute Details
#schema ⇒ Object (readonly)
Returns the value of attribute schema.
10 11 12 |
# File 'lib/yori/schema_validator.rb', line 10 def schema @schema end |
Instance Method Details
#simple_class_name ⇒ Object
36 37 38 |
# File 'lib/yori/schema_validator.rb', line 36 def simple_class_name schema.class.name.split('::').last end |
#validate_field_value_type!(field, klass) ⇒ Object
19 20 21 22 23 |
# 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) ⇒ Object
25 26 27 28 29 |
# 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) ⇒ Object
31 32 33 34 |
# 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) ⇒ Object
12 13 14 15 16 17 |
# 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 |