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:
parent
78a3cae077
commit
c3a8b2401c
5 changed files with 18 additions and 15 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue