class Mementus::Model::Validator
Checks values plugged into each slot and runs any required validations (validations not yet implemented).
Current design raises errors rather than returns a boolean result.
Public Class Methods
new(fields_spec)
click to toggle source
@param fields_spec [Hash] defines the slots in the schema to validate against
# File lib/mementus/model/validator.rb, line 9 def initialize(fields_spec) @spec = fields_spec end
Public Instance Methods
check(fields)
click to toggle source
Checks a given set of fields to see if they match the specification.
Raises an error when the given fields are invalid.
# File lib/mementus/model/validator.rb, line 16 def check(fields) missing_fields = @spec.keys.difference(fields.keys) if missing_fields.any? missing_fields.each do |field| raise "wrong number of args" unless @spec[field].eql?(Type::Any) end end mismatching_fields = fields.keys.difference(@spec.keys) raise "key does not exist" if mismatching_fields.any? fields.each do |(field, value)| raise "wrong data type" unless value.is_a?(@spec[field]) || @spec[field].eql?(Type::Any) end true end