Generátor obsahu
Vložte Markdown nebo HTML a získejte vnořený obsah, na který lze kliknout, se skutečnými kotvícími prvky ve stylu GitHubu, které jsou bezpečné proti kolizím, a navíc s původním obsahem s vloženými ID nadpisů.
Výsledek
Obsah je jen tak užitečný jako kotevní odkazy pod ním a kotevní odkazy jsou spolehlivé pouze tehdy, pokud každý nadpis dostane jedinečný, předvídatelný slimák. Tento generátor analyzuje nadpisy z čehokoli, co vložíte – Markdown nebo HTML – a každému z nich přiřadí skutečnou kotvu ve stylu GitHubu: text s malými písmeny, mezery a interpunkční znaménka jsou nahrazeny nebo odstraněny, a co je kritické, přípona skutečně bezpečná proti kolizi, kdykoli by dva nadpisy jinak vytvořily stejný zádrhel. Druhý „Úvod“ v dokumentu se stává úvodem-1, třetí se stává úvodem-2, sledován pomocí běžící mapy výskytu přesně tak, jak funguje vlastní slugger GitHubu – nikoli zkratka, která tiše přepíše dřívější odkazy, když se nadpisy opakují, což je jediný nejběžnější způsob, jak se ručně rolované skripty s obsahem přeruší.
Analýza Markdown je účelově založena na řádcích, protože klasický režim selhání pro naivní implementaci považuje znak „#“ zapsaný uvnitř chráněného bloku kódu za nadpis. Tento nástroj sleduje, zda je plot ``` nebo ~~~ aktuálně otevřený, když prochází dokumentem řádek po řádku, a rozpoznává pouze záhlaví ATX (# až ######) mimo otevřené ploty - takže ukázka kódu zobrazující komentáře shellu nebo "# komentář" Pythonu nikdy neznečistí váš obsah. Vstup HTML má jinou, stejně skutečnou cestu: je analyzován pomocí vlastního DOMParseru prohlížeče, nadpisy jsou vybírány podle názvu značky a atribut id každého z nich je nastaven přímo na skutečný prvek předtím, než je dokument serializován zpět na řetězec.
Na druhém konci vyjdou dvě věci. Nejprve samotný obsah, exportovaný jako vnořený seznam Markdown (- [Title](#slug), odsazený podle úrovně nadpisu) a vnořený seznam HTML (<ul><li><a href="#slug">), každý s vlastním tlačítkem pro kopírování. Za druhé, váš původní obsah se skutečně zapojenými kotvami: pro vstup Markdown si můžete vybrat široce podporovanou syntaxi atributu nadpisu {#slug} používanou Jekyllem kramdown, Pandoc, MkDocs a GitHub Pages, nebo se vrátit k jednoduchým značkám nadpisů HTML s již nastaveným id="slug", pokud váš cílový vykreslovací modul nerozumí syntaxi atributu. Pro vstup HTML se id vloží přímo do analyzovaného prvku nadpisu – není možné vybrat žádný samostatný „režim“, protože značky již existují.
Vše běží lokálně ve vašem prohlížeči: analýza, matematické výpočty a opětovné sestavení dokumentu – to vše probíhá v JavaScriptu na stránce, kterou si právě prohlížíte, aniž by se nikam nic nahrávalo. To je důležité pro koncept dokumentace, interní wiki nebo nepublikovaný blogový příspěvek, který nejste připraveni vložit do služby třetí strany, jen abyste získali pracovní obsah.