class StValidation::ValidatorFactory

Attributes

transformations[R]

Public Class Methods

new(transformations = []) click to toggle source
# File lib/st_validation/validator_factory.rb, line 25
def initialize(transformations = [])
  @transformations = transformations
end

Public Instance Methods

build(blueprint) click to toggle source
# File lib/st_validation/validator_factory.rb, line 29
def build(blueprint)
  result = blueprint
  loop do
    old = result
    result = transformations.reduce(result) { |res, t| t.call(res, self) }
    break if result == old
  end
  result = ProcValidatorWrapper.new(result) if result.is_a?(Proc)

  raise InvalidBlueprintError unless result.is_a?(AbstractValidator)

  result
end