class Monban::Params::Validator::Factory

Public Instance Methods

allow_empty(validator) click to toggle source
# File lib/monban/params.rb, line 121
def allow_empty(validator)
  Validator.new(->(key,value){
    (value.respond_to?(:empty?) && value.empty?) or validator.call(key,value)
  })
end
array(validator) click to toggle source
# File lib/monban/params.rb, line 102
def array(validator)
  Validator.new(->(key,value){
    value && value.is_a?(Array) && value.all?{|val| validator.call(key,val)}
  }){"must satisfy array spec"}
end
array_include(values,&block) click to toggle source
# File lib/monban/params.rb, line 108
def array_include(values,&block)
  Validator.new(->(key,value){
    value && value.is_a?(Array) && value.all?{|val| values.include?(val)}
  }){"'s value must be in #{values}"}
end
bool() click to toggle source
# File lib/monban/params.rb, line 34
def bool
  Validator.new(->(key,value){ value == true || value == false }){"must be boolean"}
end
combine(validators) click to toggle source
# File lib/monban/params.rb, line 115
def combine(validators)
  Validator.new(->(key,value){
    validators.all?{|validator| validator.call(key,value)}
  })
end
equal(val) click to toggle source
# File lib/monban/params.rb, line 39
def equal(val)
  Validator.new(->(key,value){ value == val }){"must equal #{val}"}
end
hash(spec) click to toggle source
# File lib/monban/params.rb, line 82
def hash(spec)
  Validator.new(->(key,value){
    value && spec.all?{|key,validator|
      value.has_key?(key) && validator.call(key, value[key])
    }
  }){"must satisfy hash spec"}
end
hash_strict(spec) click to toggle source
# File lib/monban/params.rb, line 90
def hash_strict(spec)
  Validator.new(->(key,value){
    validators = spec.dup
    value && value.all?{|key,val|
      validators.delete(key).tap{|validator|
        break validator ? validator.call(key,val) : false
      }
    } && validators.empty?
  }){"must satisfy hash spec"}
end
in(values) click to toggle source
# File lib/monban/params.rb, line 43
def in(values)
  Validator.new(->(key,value){ values.include?(value) }){"must be in [#{values}]"}
end
integer() click to toggle source
# File lib/monban/params.rb, line 26
def integer
  Validator.new(->(key,value){ value.is_a? Integer }){"must be integer"}
end
length(length) click to toggle source
# File lib/monban/params.rb, line 55
def length(length)
  Validator.new(->(key,value){ value && value.length == length }){"'s length must equal #{length}"}
end
match(pattern) click to toggle source
# File lib/monban/params.rb, line 59
def match(pattern)
  Validator.new(->(key,value){ value && value.match?(pattern) }){"must match #{pattern}"}
end
match_bool() click to toggle source
# File lib/monban/params.rb, line 67
def match_bool
  Validator.new(->(key,value){ value && ["true","false"].include?(value.to_s.downcase) }){"must match boolean pattern"}
end
match_date() click to toggle source
# File lib/monban/params.rb, line 71
def match_date
  Validator.new(->(key,value){
    begin
      value && Date.parse(value)
    rescue ArgumentError
      false
    end
  }){"must match date pattern"}
end
match_integer() click to toggle source
# File lib/monban/params.rb, line 63
def match_integer
  Validator.new(->(key,value){ value && value.to_i.to_s == value }){"must match integer pattern"}
end
not_empty() click to toggle source
# File lib/monban/params.rb, line 47
def not_empty
  Validator.new(->(key,value){ !value.respond_to?(:empty?) || !value.empty? }){"must not be empty"}
end
not_nil() click to toggle source
# File lib/monban/params.rb, line 51
def not_nil
  Validator.new(->(key,value){ not value.nil? }){"must not be nil"}
end
string() click to toggle source
# File lib/monban/params.rb, line 30
def string
  Validator.new(->(key,value){ value.is_a? String }){"must be string"}
end