class DTOSchema::Validators::FieldValidator

Public Class Methods

new(schema, name, required, type, check) click to toggle source
# File lib/dto_schema/validators.rb, line 127
def initialize(schema, name, required, type, check)
  raise ArgumentError, "'#{name}' cannot have checks as it is not a primitive" unless check.empty? || Parse::primitive?(type)
  @schema, @name, @required, @type, @check = schema, name, required, type, check
  @type_validator = Parse::parse_validator type, @schema
end

Public Instance Methods

resolve() click to toggle source
# File lib/dto_schema/validators.rb, line 151
def resolve
  @type_validator.resolve
  @check.each { |check| check.resolve }
  self
end
valid?(data) click to toggle source
# File lib/dto_schema/validators.rb, line 147
def valid? (data)
  validate(data).empty?
end
valid_structure?(data) click to toggle source
# File lib/dto_schema/validators.rb, line 142
def valid_structure? (data)
  return !@required if data.nil?
  @type_validator.valid_structure? data
end
validate(data) click to toggle source
# File lib/dto_schema/validators.rb, line 133
def validate (data)
  return ["Cannot be null"] if @required && data.nil?
  return [] if !@required && data.nil?
  return @type_validator.validate data unless Parse::primitive? @type
  type_check = @type_validator.validate data
  return type_check unless type_check.empty?
  @check.collect { |check| check.validate data }.flatten(1)
end