lib/lookbook/entities/entity.rb in lookbook-2.0.0.beta.3 vs lib/lookbook/entities/entity.rb in lookbook-2.0.0.beta.4

- old
+ new

@@ -1,54 +1,76 @@ module Lookbook # Base entity class # - # @api private + # @api public class Entity include Comparable send(:include, Lookbook::Engine.routes.url_helpers) # YARD parsing workaround: https://github.com/lsegal/yard/issues/546 + # @api private def initialize(lookup_path = nil) @lookup_path = lookup_path end + # @!group Identity + + # Human-readable unique ID for the entity + # + # @return [String] The ID def id Utils.id(fetch_config(:id) { lookup_path.tr("/", "-") }) end + # Parameter-safe entity name. + # + # @return [String] The name def name @_name ||= Utils.name(File.basename(@lookup_path)) end + # Titlized name for use in navigation etc. + # + # Can be customized using the `@label` tag where supported. + # + # @return [String] The label def label @_label ||= fetch_config(:label) { name.titleize } end + # Entity type identifier + # + # @return [Symbol] The entity type + def type + @_type ||= self.class.name.gsub("Entity", "").demodulize.underscore.downcase.to_sym + end + + # @!endgroup + + # @!group Paths + + # Canonical reference path. + # + # Used for generating URL paths and looking up entities. + # + # @return [String] The lookup path 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 + alias_method :path, :lookup_path + deprecate path: :lookup_path, deprecator: Deprecation - def type - @_type ||= self.class.name.gsub("Entity", "").demodulize.underscore.downcase.to_sym - end + # @!endgroup def <=>(other) label <=> other.label end - - alias_method :path, :lookup_path - alias_method :logical_path, :lookup_path - - deprecate path: :lookup_path, deprecator: Deprecation protected def fetch_config(key, fallback = nil, &block) Utils.value_or_fallback(nil, fallback, &block)