Generatore di sommari
Incolla Markdown o HTML e ottieni un sommario nidificato e cliccabile con veri slug di ancoraggio a prova di collisione in stile GitHub, oltre al contenuto originale con ID di intestazione inseriti.
Risultato
Un sommario è utile tanto quanto i collegamenti di ancoraggio sottostanti, e i collegamenti di ancoraggio sono affidabili solo se ogni titolo ha uno slug unico e prevedibile. Questo generatore analizza i titoli di qualsiasi cosa incolli - Markdown o HTML - e assegna a ciascuno un vero ancoraggio in stile GitHub: testo minuscolo, spazi e punteggiatura sostituiti o rimossi e, soprattutto, un vero suffisso a prova di collisione ogni volta che due titoli produrrebbero lo stesso slug. La seconda "Introduzione" in un documento diventa introduzione-1, la terza diventa introduzione-2, tracciata con una mappa delle occorrenze in esecuzione esattamente nel modo in cui funziona lo slugger di GitHub - non una scorciatoia che sovrascrive silenziosamente i collegamenti precedenti quando i titoli si ripetono, che è il modo più comune in cui gli script del sommario scritti a mano si interrompono.
L'analisi Markdown è volutamente basata su righe, poiché la classica modalità di errore per un'implementazione ingenua tratta un "#" scritto all'interno di un blocco di codice recintato come un'intestazione. Questo strumento tiene traccia se un ``` o ~~~ è attualmente aperto mentre percorre il documento riga per riga e riconosce solo le intestazioni ATX (da # a ######) al di fuori dei recinti aperti, quindi un esempio di codice che mostra commenti di shell o un "# commento" Python non inquina mai il tuo sommario. L'input HTML prende un percorso diverso, ugualmente reale: viene analizzato con il DOMParser del browser, i titoli vengono selezionati in base al nome del tag e l'attributo id di ciascuno viene impostato direttamente sull'elemento effettivo prima che il documento venga serializzato nuovamente in una stringa.
Dall'altra parte escono due cose. Innanzitutto, il sommario stesso, esportato sia come elenco Markdown nidificato (- [Titolo](#slug), rientrato per livello di intestazione) sia come elenco HTML nidificato (<ul><li><a href="#slug">), ciascuno con il proprio pulsante di copia. In secondo luogo, il tuo contenuto originale con gli ancoraggi effettivamente collegati: per l'input Markdown puoi scegliere la sintassi dell'attributo di intestazione {#slug} ampiamente supportata utilizzata da kramdown, Pandoc, MkDocs e Jekyll di GitHub Pages, oppure ricorrere ai semplici tag di intestazione HTML con id="slug" già impostato se il renderer di destinazione non comprende la sintassi degli attributi. Per l'input HTML, l'id viene inserito direttamente nell'elemento di intestazione analizzato: non esiste una "modalità" separata da scegliere perché i tag esistono già.
Tutto viene eseguito localmente nel tuo browser: l'analisi, i calcoli degli slug e il riassemblaggio del documento avvengono tutti in JavaScript sulla pagina che stai guardando in questo momento, senza nulla caricato da nessuna parte. Ciò è importante per bozze di documentazione, wiki interni o post di blog non pubblicati che non sei pronto a incollare in un servizio di terze parti solo per ottenere un sommario funzionante.