class Objecheck::Validator
Validator
checks a object with given schema and report errors
Constants
- DEFAULT_RULES
Public Class Methods
new(schema, rule_map = DEFAULT_RULES, schema_validation = true)
click to toggle source
# File lib/objecheck/validator.rb, line 41 def initialize(schema, rule_map = DEFAULT_RULES, schema_validation = true) @rule_map = rule_map @schema_validation = schema_validation @param_validators = {} if schema_validation @rules = compile_schema(schema) end
Public Instance Methods
compile_schema(schema)
click to toggle source
# File lib/objecheck/validator.rb, line 56 def compile_schema(schema) schema.each_with_object({}) do |(rule_name, param), rules| rule_class = @rule_map[rule_name] if @schema_validation && rule_class.respond_to?(:schema) param_validator = @param_validators[rule_name] if !param_validator param_schema, param_rule_map = rule_class.schema param_validator = Objecheck::Validator.new(param_schema, param_rule_map || DEFAULT_RULES, false) @param_validators[:rule_name] = param_validator end if !(errors = param_validator.validate(param)).empty? raise Objecheck::Error, "paramters for #{rule_name} rule is invalid\n #{errors.join("\n ")}" end end rules[rule_name] = rule_class.new(self, param) end end
validate(target)
click to toggle source
# File lib/objecheck/validator.rb, line 48 def validate(target) collector = Collector.new(self) collector.add_prefix_in('root') do collector.validate(target, @rules) end collector.errors end