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 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.gsub("-", "_").to_sym
end

def normalize_value(value)

def normalize_value(value)
  @deep && value.is_a?(Hash) ? Store.new(value) : value
end

def set(data)

def set(data)
  data.keys.each do |key|
    self[normalize_key(key)] = normalize_value(data[key])
  end
  self
end