# frozen_string_literal: true

# Este metadato permite generar rutas manuales.
class MetadataPermalink < MetadataString
  # 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
    document.url.sub(%r{\A/}, '') unless post.new?
  end

  # 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)
    value  = value.strip.gsub('..', '/').gsub('./', '').squeeze('/')
    value  = value[1..-1] if value.start_with? '/'
    value += '/' if File.extname(value).blank?

    value
  end
end