Generator de cuprins
Lipiți Markdown sau HTML și obțineți un cuprins imbricat, pe care se poate face clic, cu ancori de ancorare sigure pentru coliziuni în stil GitHub, plus conținutul original cu ID-uri de titlu injectate.
Rezultat
Un cuprins este la fel de util ca și linkurile de ancorare de sub el, iar linkurile de ancorare sunt de încredere numai dacă fiecare titlu primește un slug unic și previzibil. Acest generator analizează titlurile din orice lipiți - Markdown sau HTML - și le atribuie fiecăruia o ancoră reală în stil GitHub: text cu litere mici, spații și semne de punctuație înlocuite sau eliminate și, în mod critic, un sufix autentic pentru coliziuni ori de câte ori două titluri ar produce altfel același slug. A doua „Introducere” dintr-un document devine introducerea-1, a treia devine introducerea-2, urmărită cu o hartă de apariție care rulează exact așa cum funcționează propriul slugger al GitHub - nu o comandă rapidă care suprascrie în tăcere link-urile anterioare atunci când titlurile se repetă, care este cel mai comun mod în care scripturile de conținut rulate manual se întrerup.
Analiza markdown se bazează pe linie în mod intenționat, deoarece modul clasic de eșec pentru o implementare naivă tratează un „#” scris în interiorul unui bloc de cod îngrădit ca un titlu. Acest instrument urmărește dacă un gard ``` sau ~~~ este deschis în prezent pe măsură ce parcurge documentul linie cu linie și recunoaște numai titlurile ATX (de la # până la ######) în afara gardurilor deschise - astfel încât un eșantion de cod care arată comentarii de shell sau un „# comentariu” Python nu poluează niciodată cuprinsul. Intrarea HTML are o cale diferită, la fel de reală: este analizată cu propriul DOMParser al browserului, titlurile sunt selectate după numele etichetei și atributul id al fiecăruia este setat direct pe elementul real înainte ca documentul să fie serializat înapoi într-un șir.
Două lucruri ies la capătul celălalt. În primul rând, cuprinsul în sine, exportat atât ca listă Markdown imbricată (- [Titlu](#slug), indentată după nivelul titlului) cât și ca listă HTML imbricată (<ul><li><a href="#slug">), fiecare cu propriul buton de copiere. În al doilea rând, conținutul dvs. original cu ancorele chiar conectate: pentru introducerea Markdown puteți alege sintaxa atributului de antet {#slug} larg acceptată, utilizată de Jekyll de la Kramdown, Pandoc, MkDocs și GitHub Pages, sau puteți reveni la etichetele de antet HTML simple cu id="slug" deja setat dacă redarea țintă nu înțelege sintaxa atributului dvs. de redare. Pentru introducerea HTML, id-ul este injectat direct în elementul de antet analizat - nu există un „mod” separat de ales, deoarece etichetele există deja.
Totul rulează local în browserul dvs.: analizarea, matematica slug și reasamblarea documentului, toate se întâmplă în JavaScript pe pagina la care vă uitați acum, fără a încărca nimic nicăieri. Acest lucru contează pentru documentația nefinalizată, wiki-urile interne sau o postare de blog nepublicată pe care nu sunteți pregătit să o inserați într-un serviciu terță parte doar pentru a obține un cuprins funcțional.