2019-08-13 19:09:23 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
# Se encarga del contenido del artículo y quizás otros campos que
|
|
|
|
# requieran texto largo.
|
|
|
|
class MetadataContent < MetadataTemplate
|
|
|
|
include ActionView::Helpers::SanitizeHelper
|
|
|
|
|
|
|
|
def default_value
|
|
|
|
''
|
|
|
|
end
|
|
|
|
|
|
|
|
def value
|
2019-08-30 20:53:02 +00:00
|
|
|
markdown = ReverseMarkdown.convert(self[:value]).strip
|
|
|
|
markdown = nil if markdown.blank?
|
|
|
|
|
|
|
|
sanitize(markdown || document.content || default_value,
|
2019-09-02 16:46:30 +00:00
|
|
|
sanitize_options)
|
|
|
|
.tr("\r", '') # eliminar retornos de carro
|
|
|
|
.gsub(/^> /, '> ') # convertir citas de vuelta a citas
|
|
|
|
.gsub(/ \n /, "\n") # eliminar dobles saltos de línea
|
|
|
|
.gsub(/^ $/, '') # eliminar saltos de línea solitarios
|
2019-08-13 19:09:23 +00:00
|
|
|
end
|
|
|
|
|
2019-08-13 23:33:57 +00:00
|
|
|
def front_matter?
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
2019-08-13 19:09:23 +00:00
|
|
|
private
|
|
|
|
|
|
|
|
# Etiquetas y atributos HTML a permitir
|
|
|
|
#
|
|
|
|
# No queremos permitir mucho más que cosas de las que nos falten en
|
|
|
|
# CommonMark.
|
|
|
|
#
|
|
|
|
# TODO: Permitir una lista de atributos y etiquetas en el Layout
|
|
|
|
#
|
|
|
|
# XXX: Vamos a generar un reproductor de video/audio directamente
|
|
|
|
# desde un plugin de Jekyll
|
|
|
|
def sanitize_options
|
|
|
|
{
|
|
|
|
tags: %w[span],
|
|
|
|
attributes: %w[title class lang]
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|