module ComposableValidations::Combinators

Public Instance Methods

fail_fast(*validators) click to toggle source
# File lib/composable_validations/combinators.rb, line 13
def fail_fast(*validators)
  lambda do |object, errors, prefix|
    validators.each do |validator|
      return false if !validator.call(object, errors, prefix)
    end
    true
  end
end
nil_or(*validators) click to toggle source
# File lib/composable_validations/combinators.rb, line 22
def nil_or(*validators)
  precheck(*validators, &:nil?)
end
precheck(*validators) { |object| ... } click to toggle source
# File lib/composable_validations/combinators.rb, line 26
def precheck(*validators, &blk)
  lambda do |object, errors, prefix|
    return true if yield(object)
    run_all(*validators).call(object, errors, prefix)
  end
end
run_all(*validators) click to toggle source
# File lib/composable_validations/combinators.rb, line 4
def run_all(*validators)
  lambda do |object, errors, prefix|
    validators.inject(true) do |acc, validator|
      r = validator.call(object, errors, prefix)
      acc && r
    end
  end
end