Sha256: b08241fce58764753d9a404a6944221ba65a97285d54afe5bd389598b8684f4a

Contents?: true

Size: 1.1 KB

Versions: 11

Compression:

Stored size: 1.1 KB

Contents

module Lookbook
  class Entity
    include Comparable
    include Lookbook::Engine.routes.url_helpers

    def initialize(lookup_path = nil)
      @lookup_path = lookup_path
    end

    def id
      Utils.id(fetch_config(:id) { lookup_path.tr("/", "-") })
    end

    def name
      @_name ||= Utils.name(File.basename(@lookup_path))
    end

    def label
      @_label ||= fetch_config(:label) { name.titleize }
    end

    def lookup_path
      return @_lookup_path if @_lookup_path

      directory = fetch_config(:logical_path) do
        dir = File.dirname(@lookup_path)
        dir if !dir.start_with?(".")
      end
      @_lookup_path ||= PathUtils.strip_slashes(PathUtils.to_path(directory, name))
    end

    def url_path
      nil
    end

    def type
      @_type ||= self.class.name.demodulize.underscore.downcase.to_sym
    end

    def <=>(other)
      label <=> other.label
    end

    alias_method :path, :lookup_path
    alias_method :logical_path, :lookup_path

    protected

    def fetch_config(key, fallback = nil, &block)
      Utils.value_or_fallback(nil, fallback, &block)
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
lookbook-1.5.5 lib/lookbook/entities/entity.rb
lookbook-1.5.4 lib/lookbook/entities/entity.rb
lookbook-1.5.3 lib/lookbook/entities/entity.rb
lookbook-1.5.2 lib/lookbook/entities/entity.rb
lookbook-1.5.1 lib/lookbook/entities/entity.rb
lookbook-1.5.0 lib/lookbook/entities/entity.rb
lookbook-1.4.5 lib/lookbook/entities/entity.rb
lookbook-1.4.4 lib/lookbook/entities/entity.rb
lookbook-1.4.3 lib/lookbook/entities/entity.rb
lookbook-1.4.2 lib/lookbook/entities/entity.rb
lookbook-1.4.1 lib/lookbook/entities/entity.rb