Генератор на съдържание
Поставете Markdown или HTML и получете вложена таблица със съдържание, върху която може да се щракне, с реални закотвени оръжия в стил GitHub, защитени от сблъсък, плюс оригиналното съдържание с инжектирани идентификатори на заглавия.
Резултат
Съдържанието е толкова полезно, колкото и връзките за котва под него, а връзките за котва са надеждни само ако всяко заглавие получи уникален, предвидим охлюв. Този генератор анализира заглавията от всичко, което поставяте - Markdown или HTML - и присвоява на всяко едно истинска котва в стил GitHub: текст с малки букви, интервали и препинателни знаци са заменени или премахнати и, което е критично, истински защитен от сблъсък суфикс, когато две заглавия иначе биха създали един и същ охлюв. Второто „Въведение“ в документ става въведение-1, третото става въведение-2, проследявано с текуща карта на събитията точно по начина, по който работи собственият slugger на GitHub – не пряк път, който безшумно презаписва по-ранни връзки, когато заглавията се повтарят, което е единственият най-често срещан начин, по който ръчно навити скриптове със съдържание се развалят.
Синтаксичният анализ на маркиране е базиран на ред по предназначение, тъй като класическият режим на отказ за наивна реализация третира "#", написан вътре в ограден кодов блок, като заглавие. Този инструмент проследява дали ``` или ~~~ ограда в момента е отворена, докато обикаля документа ред по ред, и разпознава само ATX заглавия (# до ######) извън отворени огради - така че примерен код, показващ коментари на обвивката или Python "# коментар" никога не замърсява вашето съдържание. HTML въвеждането поема по различен, също толкова реален път: анализира се със собствения DOMParser на браузъра, заглавията се избират по име на тагове и атрибутът на id на всеки се задава директно на действителния елемент, преди документът да бъде сериализиран обратно в низ.
Две неща излизат от другия край. Първо, самото съдържание, експортирано както като вложен Markdown списък (- [Заглавие](#slug), с отстъп по ниво на заглавие), така и като вложен HTML списък (<ul><li><a href="#slug">), всеки със собствен бутон за копиране. Второ, вашето оригинално съдържание с действително свързани котви: за въвеждане на Markdown можете да изберете широко поддържания синтаксис на заглавие-атрибут {#slug}, използван от kramdown, Pandoc, MkDocs и Jekyll на GitHub Pages, или да се върнете към обикновени HTML тагове за заглавие с вече зададен id="slug", ако целевият ви рендерер не разбира синтаксиса на атрибута. За въвеждане на HTML идентификаторът се инжектира направо в анализирания заглавен елемент - няма отделен "режим", който да изберете, защото таговете вече съществуват.
Всичко се изпълнява локално във вашия браузър: синтактичният анализ, изчислението на охлюва и повторното сглобяване на документа се случват в JavaScript на страницата, която разглеждате в момента, без нищо да е качено никъде. Това има значение за чернова на документация, вътрешни уикита или непубликувана публикация в блог, която не сте готови да поставите в услуга на трета страна, само за да получите работещо съдържание.