class Lookbook::Store
def [](key)
def [](key) super(normalize_key(key)) end
def []=(key, value)
def []=(key, value) super(normalize_key(key), normalize_value(value)) end
def get(key, fallback = nil)
def get(key, fallback = nil) if key?(normalize_key(key)) self[normalize_key(key)] else fallback end end
def initialize(data = {}, deep = true)
def initialize(data = {}, deep = true) super() @deep = deep set(data) if data.present? end
def method_missing(name, *args)
def method_missing(name, *args) super(normalize_key(name), *args.map { |arg| normalize_value(arg) }) end
def normalize_key(key)
def normalize_key(key) key.to_s.downcase.tr("-", "_").to_sym end
def normalize_value(value)
def normalize_value(value) @deep && value.is_a?(Hash) ? Store.new(value) : value end
def respond_to_missing?(name, *)
def respond_to_missing?(name, *) key?(name) end
def set(data)
def set(data) data.keys.each do |key| self[normalize_key(key)] = normalize_value(data[key]) end self end