# 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