2019-08-06 17:54:17 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2020-11-27 23:53:14 +00:00
|
|
|
# Una plantilla agrupa metadatos que va a tener un artículo.
|
|
|
|
#
|
|
|
|
# TODO: Renombrar metadatos a atributos o campos, ahora se llaman de
|
|
|
|
# varias formas por todo el código.
|
|
|
|
Layout = Struct.new(:site, :name, :meta, :metadata, keyword_init: true) do
|
2020-07-02 13:59:58 +00:00
|
|
|
def value
|
|
|
|
name.to_s
|
|
|
|
end
|
2020-11-27 23:53:14 +00:00
|
|
|
|
2021-02-17 21:38:02 +00:00
|
|
|
def attributes
|
|
|
|
@attributes ||= metadata.keys.map(&:to_sym)
|
|
|
|
end
|
|
|
|
|
2020-11-27 23:53:14 +00:00
|
|
|
# Busca la traducción del Layout en el sitio o intenta humanizarlo
|
|
|
|
# según Rails.
|
|
|
|
#
|
|
|
|
# @return [String]
|
|
|
|
def humanized_name
|
|
|
|
@humanized_name ||= site.i18n.dig('layouts', name.to_s) || name.to_s.humanize
|
|
|
|
end
|
|
|
|
|
|
|
|
# Detecta si el Layout no debería mostrarse
|
|
|
|
#
|
|
|
|
# @return [Boolean]
|
|
|
|
def hidden?
|
|
|
|
meta[:hidden].present?
|
|
|
|
end
|
|
|
|
|
|
|
|
# Los metadatos del Layout.
|
|
|
|
#
|
|
|
|
# TODO: Inicializar con valores por defecto o usar Hash#default_proc
|
|
|
|
#
|
|
|
|
# @return [Hash]
|
|
|
|
def meta
|
|
|
|
@meta ||= self[:meta] || {}
|
|
|
|
end
|
2020-07-02 13:59:58 +00:00
|
|
|
end
|