2020-11-11 17:41:12 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
# Este metadato permite generar rutas manuales.
|
|
|
|
class MetadataPermalink < MetadataString
|
2021-10-04 17:48:19 +00:00
|
|
|
# El valor por defecto una vez creado es la URL que le asigne Jekyll,
|
|
|
|
# de forma que nunca cambia aunque se cambie el título.
|
|
|
|
def default_value
|
2021-11-04 13:58:49 +00:00
|
|
|
document.url.sub(%r{\A/}, '') unless post.new?
|
2021-10-04 17:48:19 +00:00
|
|
|
end
|
|
|
|
|
2020-11-11 17:41:12 +00:00
|
|
|
# Los permalinks nunca pueden ser privados
|
|
|
|
def private?
|
|
|
|
false
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
# Al hacer limpieza, validamos la ruta. Eliminamos / multiplicadas,
|
|
|
|
# puntos suspensivos, la primera / para que siempre sea relativa y
|
|
|
|
# agregamos una / al final si la ruta no tiene extensión.
|
|
|
|
def sanitize(value)
|
2022-04-28 13:34:57 +00:00
|
|
|
value = value.strip.unicode_normalize.gsub('..', '/').gsub('./', '').squeeze('/')
|
2020-11-11 17:41:12 +00:00
|
|
|
value = value[1..-1] if value.start_with? '/'
|
|
|
|
value += '/' if File.extname(value).blank?
|
|
|
|
|
|
|
|
value
|
|
|
|
end
|
|
|
|
end
|