class SpamGuardian::ParamsBuilder

Constants

ALLOWED_KEYS

Support string support nth array Support nth array of string Support nth array of hash of string Support nth array of hash of array Support hash of string Support hash of array of string

Attributes

temp_params[R]

Public Class Methods

new(params={}) click to toggle source
Calls superclass method
# File lib/spam_guardian/params_builder.rb, line 17
def initialize(params={})
  super Hash.new { |hash, key| hash[key] = [] }
  case params
  when String
    self[parse_key(params)] << params
  when Array
    parse_array(params)
  when Hash
    parse_hash(params)
  else
    raise FormatError.new("Invalid format.")
  end
end

Private Instance Methods

parse_array(array) click to toggle source
# File lib/spam_guardian/params_builder.rb, line 48
def parse_array(array)
  array.flatten.each do |value|
    case value
    when String
      self[parse_key(value)] << value
    when Hash
      parse_hash(value)
    else
      raise FormatError.new("Invalid format.")
    end
  end
end
parse_hash(hash) click to toggle source
# File lib/spam_guardian/params_builder.rb, line 61
def parse_hash(hash)
  validate_hash_keys!(hash)
  hash.each do |key, value|
    case value
    when String
      self[key] << value
    when Array
      raise FormatError.new("Invalid format.") unless ValueCheck.new(Array).sub_class(String).check(value)
      self[key].concat(value)
    else
      raise FormatError.new("Invalid format.")
    end
  end
end
parse_key(string) click to toggle source
# File lib/spam_guardian/params_builder.rb, line 38
def parse_key(string)
  if EmailCheck.new(string).valid?
    'email'
  elsif IpCheck.new(string).valid?
    'ip'
  else
    'username'
  end
end
validate_hash_keys!(hash) click to toggle source
# File lib/spam_guardian/params_builder.rb, line 32
def validate_hash_keys!(hash)
  hash.each_key do |key|
    raise FormatError.new("#{key}: invalid key.") unless key.to_sym.in?(ALLOWED_KEYS)
  end
end