class Rabbit::Properties

Public Class Methods

new(data) click to toggle source
# File lib/rabbit/properties.rb, line 23
def initialize(data)
  @data = normalize(data)
end

Public Instance Methods

[](key) click to toggle source
# File lib/rabbit/properties.rb, line 27
def [](key)
  @data[normalize_key(key)]
end
[]=(key, value) click to toggle source
# File lib/rabbit/properties.rb, line 31
def []=(key, value)
  @data[normalize_key(key)] = value
end
each(&block) click to toggle source
# File lib/rabbit/properties.rb, line 35
def each(&block)
  @data.each(&block)
end
get_boolean(key, default=nil) click to toggle source
# File lib/rabbit/properties.rb, line 39
def get_boolean(key, default=nil)
  value = self[key]
  return default if value.nil?
  true_value?(value)
end
get_float(key, default=nil) click to toggle source
# File lib/rabbit/properties.rb, line 49
def get_float(key, default=nil)
  float_value(self[key] || default)
end
get_integer(key, default=nil) click to toggle source
# File lib/rabbit/properties.rb, line 45
def get_integer(key, default=nil)
  integer_value(self[key] || default)
end
get_relative_size(key, filename, default=nil) click to toggle source
# File lib/rabbit/properties.rb, line 57
def get_relative_size(key, filename, default=nil)
  relative_size_value(self[key] || default,
                      filename,
                      key)
end
get_size(key, filename, default=nil) click to toggle source
# File lib/rabbit/properties.rb, line 53
def get_size(key, filename, default=nil)
  size_value(self[key] || default, filename, key)
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/rabbit/properties.rb, line 67
def method_missing(name, *args, &block)
  case args.size
  when 0
    key = name.to_s
    if key.end_with?("?")
      key = key[0..-2]
      is_predict = true
    else
      is_predict = false
    end
    key = normalize_key(key)
    return super unless @data.key?(key)
    value = @data[key]
    if is_predict
      true_value?(value)
    else
      value
    end
  when 1
    key = name.to_s
    return super unless key.end_with?("=")
    key = key[0..-2]
    @data[normalize_key(key)] = args[0]
  else
    super
  end
end
respond_to_missing?(name, include_private) click to toggle source
# File lib/rabbit/properties.rb, line 63
def respond_to_missing?(name, include_private)
  @data.key?(normalize_key(name.to_s.gsub(/\?\z/, "")))
end

Private Instance Methods

float_value(value) click to toggle source
# File lib/rabbit/properties.rb, line 117
def float_value(value)
  return nil if value.nil?
  Float(value)
end
integer_value(value) click to toggle source
# File lib/rabbit/properties.rb, line 112
def integer_value(value)
  return nil if value.nil?
  Integer(value, 10)
end
normalize(data) click to toggle source
# File lib/rabbit/properties.rb, line 96
def normalize(data)
  normalized_data = {}
  (data || {}).each do |key, value|
    normalized_data[normalize_key(key)] = value
  end
  normalized_data
end
normalize_key(key) click to toggle source
# File lib/rabbit/properties.rb, line 104
def normalize_key(key)
  key.to_s.gsub(/-/, "_")
end
relative_size_value(value, filename, name) click to toggle source
# File lib/rabbit/properties.rb, line 131
def relative_size_value(value, filename, name)
  return nil if value.nil?
  begin
    value = Float(value)
  rescue ArgumentError
    raise InvalidSizeError.new(filename, name, value)
  end
  RelativeSize.new(value)
end
size_value(value, filename, name) click to toggle source
# File lib/rabbit/properties.rb, line 122
def size_value(value, filename, name)
  return nil if value.nil?
  begin
    Integer(value, 10)
  rescue ArgumentError
    raise InvalidSizeError.new(filename, name, value)
  end
end
true_value?(value) click to toggle source
# File lib/rabbit/properties.rb, line 108
def true_value?(value)
  value == true or value == "true"
end