Sha256: 8085e56c94f77305d37af8e0906e5b60df78ae87eb1a74ad1c51caf8f82cdeb6

Contents?: true

Size: 872 Bytes

Versions: 21

Compression:

Stored size: 872 Bytes

Contents

module Lookbook
  class TagStore
    CONFIG_FILE = "config/tags.yml"

    attr_reader :store
    delegate :to_h, to: :store

    def initialize(config = nil)
      @store = {}
      config.to_h.each { |k, v| add_tag(k, v) }
    end

    def add_tag(name, opts = nil)
      name = name.to_sym
      if store.key?(name)
        raise ConfigError.new("tag with name '#{name}' already exists", scope: "tags.config")
      else
        store[name] = build_config(name, opts)
      end
    end

    def get_tag(name)
      store[name.to_sym]
    end

    def self.init_from_config
      new(default_config)
    end

    def self.default_config
      ConfigLoader.call(CONFIG_FILE)
    end

    protected

    def build_config(name, opts = nil)
      Store.new({
        name: name.to_sym,
        label: name.to_s.titleize,
        options: opts.to_h
      })
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
lookbook-1.5.5 lib/lookbook/stores/tag_store.rb
lookbook-1.5.4 lib/lookbook/stores/tag_store.rb
lookbook-2.0.0.beta.4 lib/lookbook/stores/tag_store.rb
lookbook-2.0.0.beta.3 lib/lookbook/stores/tag_store.rb
lookbook-2.0.0.beta.2 lib/lookbook/stores/tag_store.rb
lookbook-1.5.3 lib/lookbook/stores/tag_store.rb
lookbook-2.0.0.beta.1 lib/lookbook/stores/tag_store.rb
lookbook-1.5.2 lib/lookbook/stores/tag_store.rb
lookbook-2.0.0.beta.0 lib/lookbook/stores/tag_store.rb
lookbook-1.5.1 lib/lookbook/stores/tag_store.rb
lookbook-1.5.0 lib/lookbook/stores/tag_store.rb
lookbook-1.4.5 lib/lookbook/stores/tag_store.rb
lookbook-1.4.4 lib/lookbook/stores/tag_store.rb
lookbook-1.4.3 lib/lookbook/stores/tag_store.rb
lookbook-1.4.2 lib/lookbook/stores/tag_store.rb
lookbook-1.4.1 lib/lookbook/stores/tag_store.rb
lookbook-1.4.0 lib/lookbook/stores/tag_store.rb
lookbook-1.3.4 lib/lookbook/stores/tag_store.rb
lookbook-1.3.3 lib/lookbook/stores/tag_store.rb
lookbook-1.3.1 lib/lookbook/stores/tag_store.rb