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