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