class Siba::SibaCheck

Public Class Methods

hash(obj, name, is_optional=false) click to toggle source
# File lib/siba/siba_check.rb, line 39
def hash(obj, name, is_optional=false)
  if obj.nil?
    return nil if is_optional
    raise Siba::CheckError, "'#{name}' option is not defined"
  end
  raise Siba::CheckError, "'#{name}' option should be of [Hash] type" unless obj.is_a? Hash
  obj
end
options_bool(options, key_name, is_optional = false, default_value=false) click to toggle source
# File lib/siba/siba_check.rb, line 6
def options_bool(options, key_name, is_optional = false, default_value=false)
  check_options options, key_name, [TrueClass, FalseClass], is_optional, default_value
end
options_hash(options, key_name, is_optional = false, default_value=nil) click to toggle source
# File lib/siba/siba_check.rb, line 10
def options_hash(options, key_name, is_optional = false, default_value=nil)
  check_options options, key_name, Hash, is_optional, default_value
end
options_string(options, key_name, is_optional = false, default_value=nil) click to toggle source
# File lib/siba/siba_check.rb, line 14
def options_string(options, key_name, is_optional = false, default_value=nil)
  check_options(options, key_name, String, is_optional, default_value)
end
options_string_array(options, key_name, is_optional = false, default_value=nil) click to toggle source
# File lib/siba/siba_check.rb, line 18
def options_string_array(options, key_name, is_optional = false, default_value=nil)
  value = options[key_name]
  if value.nil?
    return default_value if is_optional
    raise Siba::CheckError, "'#{key_name}' option is not defined"
  end

  begin
    if value.is_a? Array
      value.each_index do |i|
        value[i] = try_to_s value[i], key_name
      end
    else
      value = [ try_to_s(value, key_name) ]
    end
  rescue Exception
    raise Siba::CheckError, "'#{key_name}' option should be string or an array of strings"
  end
  value
end
try_to_s(value, key_name) click to toggle source

Tries to conver value to string

# File lib/siba/siba_check.rb, line 49
def try_to_s(value, key_name)
  raise Siba::CheckError, "'#{key_name}' option should be string" if [Array, Hash].any?{|a| value.is_a?(a)}
  value = value.to_s.strip
  raise Siba::CheckError, "'#{key_name}' option should not be empty" if value.empty?
  value
end

Private Class Methods

check_options(options, key_name, item_type, is_optional = false, default_value = nil) click to toggle source
# File lib/siba/siba_check.rb, line 58
def check_options(options, key_name, item_type, is_optional = false, default_value = nil)
  value = options[key_name]
  if value.nil?
    raise Siba::CheckError, "'#{key_name}' option is not defined" unless is_optional
    return default_value
  end

  if item_type == String
    value = try_to_s value, key_name
  else
    item_type = [item_type] unless item_type.is_a?(Array)
    raise Siba::CheckError, "'#{key_name}' option should be of #{item_type.to_s} type" if item_type.none? {|i| value.is_a? i }
  end
  value
end