class Lookbook::InputStore
def self.default_config
def self.default_config ConfigLoader.call(CONFIG_FILE) end
def self.init_from_config
def self.init_from_config new(default_config) end
def add_input(input, *args)
def add_input(input, *args) store[normalize_name(input)] = build_config(input, *args) end
def build_config(name, *args)
def build_config(name, *args) partial = nil opts = nil if args.many? && args.last.is_a?(Hash) partial = args.first opts = args.last elsif args.first.is_a?(String) partial = args.first end if partial.present? Store.new({ name: name.to_sym, partial: partial, options: DEFAULTS.merge(opts.to_h) }) else raise ConfigError.new("inputs must define a partial path", scope: "inputs.config") end end
def get_input(input)
def get_input(input) store[normalize_name(input)] end
def initialize(config = nil)
def initialize(config = nil) @store = {} config.to_h.each do |name, opts| add_input(name, opts[:partial], opts.except(:partial)) end end
def normalize_name(name)
def normalize_name(name) name.to_s.tr("-", "_").to_sym end