5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-07-03 13:26:07 +00:00
panel/app/models/layout.rb
f 1a2d7931e9 optimizar posts
* eliminar dependencia en OpenStruct
* los metadata se instancian a medida que se usan
* la lista de atributos se envió a Layout
2021-02-17 18:39:21 -03:00

40 lines
906 B
Ruby

# frozen_string_literal: true
# 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
def value
name.to_s
end
def attributes
@attributes ||= metadata.keys.map(&:to_sym)
end
# 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
end