class Apipie::Validator::BaseValidator

to create new validator, inherit from Apipie::Validator::BaseValidator and implement class method build and instance method validate

Attributes

param_description[RW]

Public Class Methods

find(param_description, argument, options, block) click to toggle source

find the right validator for given options

# File lib/apipie/validator.rb, line 31
def self.find(param_description, argument, options, block)
  @validators.each do |validator_type|
    validator = validator_type.build(param_description, argument, options, block)
    return validator if validator
  end
  return nil
end
inherited(subclass) click to toggle source
# File lib/apipie/validator.rb, line 25
def self.inherited(subclass)
  @validators ||= []
  @validators.insert 0, subclass
end
new(param_description) click to toggle source
# File lib/apipie/validator.rb, line 11
def initialize(param_description)
  @param_description = param_description
end

Public Instance Methods

==(other) click to toggle source
# File lib/apipie/validator.rb, line 91
def ==(other)
  return false unless self.class == other.class
  if param_description == other.param_description
    true
  else
    false
  end
end
description() click to toggle source

validator description

# File lib/apipie/validator.rb, line 55
def description
  "TODO: validator description"
end
error() click to toggle source
# File lib/apipie/validator.rb, line 63
def error
  ParamInvalid.new(param_name, @error_value, description)
end
expected_type() click to toggle source

what type is expected, mostly string this information is used in cli client thor supported types :string, :hash, :array, :numeric, or :boolean

# File lib/apipie/validator.rb, line 78
def expected_type
  'string'
end
format_description_value(value) click to toggle source
# File lib/apipie/validator.rb, line 59
def format_description_value(value)
  "<code>#{CGI::escapeHTML(value.to_s)}</code>"
end
inspect() click to toggle source
# File lib/apipie/validator.rb, line 19
def inspect
  string = "#<#{self.class.name}:#{self.object_id} "
  fields = inspected_fields.map {|field| "#{field}: #{self.send(field)}"}
  string << fields.join(", ") << ">"
end
inspected_fields() click to toggle source
# File lib/apipie/validator.rb, line 15
def inspected_fields
  [:param_description]
end
merge_with(other_validator) click to toggle source
# File lib/apipie/validator.rb, line 82
def merge_with(other_validator)
  return self if self == other_validator
  raise NotImplementedError, "Don't know how to merge #{self.inspect} with #{other_validator.inspect}"
end
param_name() click to toggle source
# File lib/apipie/validator.rb, line 50
def param_name
  @param_description.name
end
params_ordered() click to toggle source
# File lib/apipie/validator.rb, line 87
def params_ordered
  nil
end
to_json() click to toggle source
# File lib/apipie/validator.rb, line 71
def to_json
  self.description
end
to_s() click to toggle source
# File lib/apipie/validator.rb, line 67
def to_s
  self.description
end
valid?(value) click to toggle source

check if value is valid

# File lib/apipie/validator.rb, line 40
def valid?(value)
  if self.validate(value)
    @error_value = nil
    true
  else
    @error_value = value
    false
  end
end