class Rabbit::Properties
Public Class Methods
new(data)
click to toggle source
# File lib/rabbit/properties.rb, line 24 def initialize(data) @data = normalize(data) end
Public Instance Methods
[](key)
click to toggle source
# File lib/rabbit/properties.rb, line 28 def [](key) @data[normalize_key(key)] end
[]=(key, value)
click to toggle source
# File lib/rabbit/properties.rb, line 32 def []=(key, value) @data[normalize_key(key)] = value end
draws()
click to toggle source
# File lib/rabbit/properties.rb, line 64 def draws targets = @data.select do |key, _| /\Adraw\d+\z/.match?(key) end targets = targets.sort_by do |key, _| Integer(key[/\d+/], 10) end targets.collect do |_, value| YAMLLoader.load(value) end end
each(&block)
click to toggle source
# File lib/rabbit/properties.rb, line 36 def each(&block) @data.each(&block) end
get_boolean(key, default=nil)
click to toggle source
# File lib/rabbit/properties.rb, line 40 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 50 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 46 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 58 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 54 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 80 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 76 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 130 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 125 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 109 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 117 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 144 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 135 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 121 def true_value?(value) value == true or value == "true" end