estandarizar la forma de obtener el valor de los documentos

teníamos dos métodos que hacían lo mismo y generaban conflictos al
obtener el valor por defecto de los arrays cuando no eran arrays.
This commit is contained in:
f 2021-06-16 11:35:37 -03:00
parent 78a3cae077
commit c3a8b2401c
5 changed files with 18 additions and 15 deletions

View file

@ -7,7 +7,8 @@ class MetadataDocumentDate < MetadataTemplate
Date.today.to_time
end
def value_from_document
# @return [Time]
def document_value
return nil if post.new?
document.date
@ -45,10 +46,10 @@ class MetadataDocumentDate < MetadataTemplate
begin
Date.iso8601(self[:value]).to_time
rescue Date::Error
value_from_document || default_value
document_value || default_value
end
else
self[:value] || value_from_document || default_value
self[:value] || document_value || default_value
end
end

View file

@ -6,12 +6,13 @@ class MetadataLang < MetadataTemplate
super || I18n.locale
end
def value_from_document
# @return [Symbol]
def document_value
document.collection.label.to_sym
end
def value
self[:value] ||= value_from_document || default_value
self[:value] ||= document_value || default_value
end
def values

View file

@ -9,14 +9,15 @@ class MetadataMarkdownContent < MetadataText
end
def value
self[:value] || value_from_document || default_value
self[:value] || document_value || default_value
end
def front_matter?
false
end
def value_from_document
# @return [String]
def document_value
document.content
end

View file

@ -3,12 +3,16 @@
# Este campo representa el archivo donde se almacenan los datos
class MetadataPath < MetadataTemplate
# :label en este caso es el idioma/colección
#
# @return [String]
def default_value
File.join(site.path, "_#{lang}", "#{date}-#{slug}#{ext}")
end
# El valor no vuelve desde el documento
def value_from_document
# La ruta del archivo según Jekyll
#
# @return [String]
def document_value
document.path
end

View file

@ -49,11 +49,7 @@ MetadataTemplate = Struct.new(:site, :document, :name, :label, :type,
def value_was
return @value_was if instance_variable_defined? '@value_was'
@value_was = value_from_document
end
def value_from_document
@value_from_document ||= document.data[name.to_s]
@value_was = document_value
end
def changed?
@ -85,7 +81,7 @@ MetadataTemplate = Struct.new(:site, :document, :name, :label, :type,
# Valor actual o por defecto. Al memoizarlo podemos modificarlo
# usando otros métodos que el de asignación.
def value
self[:value] ||= if (data = value_from_document).present?
self[:value] ||= if (data = document_value).present?
private? ? decrypt(data) : data
else
default_value