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

View file

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

View file

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

View file

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

View file

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