class Parxer::Validators

Public Instance Methods

add_validator(validator_name, config = {}, &block) click to toggle source
# File lib/parxer/collections/validators.rb, line 3
def add_validator(validator_name, config = {}, &block)
  validator = validator_instance(validator_name, config, &block)

  if find_validator(validator.id)
    raise Parxer::ValidatorError.new("trying to add validator with existent id")
  end

  self << validator
  last
end

Private Instance Methods

find_validator(validator_id) click to toggle source
# File lib/parxer/collections/validators.rb, line 16
def find_validator(validator_id)
  find { |validator| validator.id.to_sym == validator_id.to_sym }
end
infer_validator_class(validator_name) click to toggle source
# File lib/parxer/collections/validators.rb, line 27
def infer_validator_class(validator_name)
  return Parxer::Validator::Custom if validator_name.blank?
  "Parxer::Validator::#{validator_name.to_s.camelize}".constantize
rescue NameError
  Parxer::Validator::Custom
end
validator_instance(validator_name, config = {}, &block) click to toggle source
# File lib/parxer/collections/validators.rb, line 20
def validator_instance(validator_name, config = {}, &block)
  config[:id] = validator_name
  validator_class = infer_validator_class(validator_name)
  config[:condition_proc] = block if validator_class == Parxer::Validator::Custom
  validator_class.new(config)
end