Class: Monban::Params::Validator::Factory
- Inherits:
-
Object
- Object
- Monban::Params::Validator::Factory
- Defined in:
- lib/monban/params.rb
Instance Method Summary collapse
- #allow_empty(validator) ⇒ Object
- #array(validator) ⇒ Object
- #array_include(values, &block) ⇒ Object
- #bool ⇒ Object
- #combine(validators) ⇒ Object
- #equal(val) ⇒ Object
- #hash(spec) ⇒ Object
- #hash_strict(spec) ⇒ Object
- #in(values) ⇒ Object
- #integer ⇒ Object
- #length(length) ⇒ Object
- #match(pattern) ⇒ Object
- #match_bool ⇒ Object
- #match_date ⇒ Object
- #match_integer ⇒ Object
- #not_empty ⇒ Object
- #not_nil ⇒ Object
- #string ⇒ Object
Instance Method Details
#allow_empty(validator) ⇒ Object
121 122 123 124 125 |
# 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) ⇒ Object
102 103 104 105 106 |
# 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) ⇒ Object
108 109 110 111 112 |
# 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 ⇒ Object
34 35 36 |
# File 'lib/monban/params.rb', line 34 def bool Validator.new(->(key,value){ value == true || value == false }){"must be boolean"} end |
#combine(validators) ⇒ Object
115 116 117 118 119 |
# File 'lib/monban/params.rb', line 115 def combine(validators) Validator.new(->(key,value){ validators.all?{|validator| validator.call(key,value)} }) end |
#equal(val) ⇒ Object
39 40 41 |
# File 'lib/monban/params.rb', line 39 def equal(val) Validator.new(->(key,value){ value == val }){"must equal #{val}"} end |
#hash(spec) ⇒ Object
82 83 84 85 86 87 88 |
# 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) ⇒ Object
90 91 92 93 94 95 96 97 98 99 |
# 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) ⇒ Object
43 44 45 |
# File 'lib/monban/params.rb', line 43 def in(values) Validator.new(->(key,value){ values.include?(value) }){"must be in [#{values}]"} end |
#integer ⇒ Object
26 27 28 |
# File 'lib/monban/params.rb', line 26 def integer Validator.new(->(key,value){ value.is_a? Integer }){"must be integer"} end |
#length(length) ⇒ Object
55 56 57 |
# 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) ⇒ Object
59 60 61 |
# File 'lib/monban/params.rb', line 59 def match(pattern) Validator.new(->(key,value){ value && value.match?(pattern) }){"must match #{pattern}"} end |
#match_bool ⇒ Object
67 68 69 |
# 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 ⇒ Object
71 72 73 74 75 76 77 78 79 |
# 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 ⇒ Object
63 64 65 |
# 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 ⇒ Object
47 48 49 |
# 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 |