Hugo e gli spazi

Keywords: #hugo #markdown #whitespaces #hooks

Hugo è noto per essere un veloce generatore di siti statici basato su Go. Lo ho usato anche io per qualche tempo, ma da diversi mesi sono passato a Quarto per scrivere, generare e pubblicare i miei post non per carenze tecniche di Hugo, ma per la voglia di sperimentare qualcosa di nuovo. In fin dei conti devo continuare a scrivere in markdown come prima e pubblicare.

Hugo usa come libreria di default per markdown Goldmark

A Markdown parser written in Go. Easy to extend, standards-compliant, well-structured.

Nella trasformazione da markdown a html Hugo può usare anche dei Markdown Render Hooks, dei template che modificano la funzionalità di resa del testo da parte di Goldmark.

Uno di questi hook si chiama render-link.html e va posizionato nella cartella layouts -> _default -> _markup. Uno dei possibili codici contenuti nel file è

<a href="{{ .Destination | safeURL }}"{{ with .Title }} title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination "http" }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>

Come è possibile dedurre è un template html, ma questo frammento nasconde un insidia. Se il link è seguito da un segno di interpunzione viene aggiunto uno spazio prima del segno stesso, che mal si accorda con le nostre regole tipografiche. Per rimuovere lo spazio non voluto basta una semplice modifica al precedente codice

<a href="{{ .Destination | safeURL }}"{{ with .Title }} title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination "http" }} target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>{{– "" -}}

I tratti inseriti tra le doppie graffe eliminano gli spazi bianchi non necessari.

Spero che possa tornare utile a qualcuno.