mirror of
https://0xacab.org/sutty/sutty
synced 2024-11-24 12:06:22 +00:00
b9ec8a6756
closes #17530 closes #17575 closes #17576 closes #17577 closes #17580 closes #17581 closes #17582 closes #17584 closes #17586 closes #17588 closes #17589 closes #17590
44 lines
1.2 KiB
Ruby
44 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class MetadataDate < MetadataTemplate
|
|
# La fecha de hoy si no hay nada. Podemos traer un valor por defecto
|
|
# desde el esquema, siempre y cuando pueda considerarse una fecha
|
|
# válida.
|
|
#
|
|
# @return [Date,nil]
|
|
def default_value
|
|
if (dv = super.presence)
|
|
begin
|
|
Date.parse(dv)
|
|
# XXX: Notificar para que sepamos que el esquema no es válido.
|
|
# TODO: Validar el valor por defecto en sutty-schema-validator.
|
|
rescue Date::Error => e
|
|
ExceptionNotifier.notify_exception(e, data: { site: site.name, post: post.id, name:, type: })
|
|
nil
|
|
end
|
|
end
|
|
end
|
|
|
|
# Delegar el formato al valor, para uso dentro de date_field()
|
|
#
|
|
# @param format [String]
|
|
# @return [String,nil]
|
|
def strftime(format)
|
|
value&.strftime(format)
|
|
end
|
|
|
|
# Devuelve una fecha, si no hay ninguna es la fecha de hoy.
|
|
#
|
|
# @return [Date]
|
|
def value
|
|
return self[:value] if self[:value].is_a? Date
|
|
return self[:value] if self[:value].is_a? Time
|
|
return document_value || default_value unless self[:value]
|
|
|
|
begin
|
|
self[:value] = Date.parse self[:value]
|
|
rescue ArgumentError, TypeError
|
|
default_value
|
|
end
|
|
end
|
|
end
|