2019-08-13 19:09:23 +00:00
|
|
|
# frozen_string_literal: true
|
2019-08-08 18:28:23 +00:00
|
|
|
|
2019-08-13 19:09:23 +00:00
|
|
|
class MetadataDate < MetadataTemplate
|
2024-10-02 16:27:07 +00:00
|
|
|
# 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.
|
2024-09-09 14:02:27 +00:00
|
|
|
#
|
|
|
|
# @return [Date,nil]
|
2019-11-07 16:06:40 +00:00
|
|
|
def default_value
|
2024-10-02 16:27:07 +00:00
|
|
|
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: })
|
2024-09-09 14:02:27 +00:00
|
|
|
nil
|
|
|
|
end
|
|
|
|
end
|
2019-11-07 16:06:40 +00:00
|
|
|
end
|
2020-02-12 21:24:54 +00:00
|
|
|
|
2020-12-24 19:13:29 +00:00
|
|
|
# Devuelve una fecha, si no hay ninguna es la fecha de hoy.
|
|
|
|
#
|
|
|
|
# @return [Date]
|
2020-02-12 21:24:54 +00:00
|
|
|
def value
|
|
|
|
return self[:value] if self[:value].is_a? Date
|
|
|
|
return self[:value] if self[:value].is_a? Time
|
2020-12-24 19:13:29 +00:00
|
|
|
return document_value || default_value unless self[:value]
|
2020-02-12 21:24:54 +00:00
|
|
|
|
|
|
|
begin
|
2020-12-24 19:13:29 +00:00
|
|
|
self[:value] = Date.parse self[:value]
|
2020-02-12 21:24:54 +00:00
|
|
|
rescue ArgumentError, TypeError
|
|
|
|
default_value
|
|
|
|
end
|
|
|
|
end
|
2019-08-08 18:28:23 +00:00
|
|
|
end
|