Module: ComposableValidations::Combinators

Included in:
ComposableValidations
Defined in:
lib/composable_validations/combinators.rb

Instance Method Summary collapse

Instance Method Details

#fail_fast(*validators) ⇒ Object



13
14
15
16
17
18
19
20
# 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) ⇒ Object



22
23
24
# File 'lib/composable_validations/combinators.rb', line 22

def nil_or(*validators)
  precheck(*validators, &:nil?)
end

#precheck(*validators, &blk) ⇒ Object



26
27
28
29
30
31
# 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) ⇒ Object



4
5
6
7
8
9
10
11
# 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