İçindekiler Oluşturucu
Markdown veya HTML'yi yapıştırın ve gerçek GitHub tarzı, çarpışmaya dayanıklı bağlantı bilgilerinin yanı sıra başlık kimlikleri eklenmiş orijinal içeriğe sahip, iç içe geçmiş, tıklanabilir bir içindekiler tablosu elde edin.
Sonuç
Bir içindekiler tablosu yalnızca altındaki bağlantı bağlantıları kadar kullanışlıdır ve bağlantı bağlantıları yalnızca her başlığın benzersiz, öngörülebilir bir bilgi içermesi durumunda güvenilirdir. Bu oluşturucu, yapıştırdığınız her şeyin (Markdown veya HTML) başlıklarını ayrıştırır ve her birine gerçek bir GitHub tarzı bağlantı atar: küçük harfli metin, boşluklar ve noktalama işaretleri değiştirilir veya çıkarılır ve daha da önemlisi, iki başlığın aksi takdirde aynı bilgiyi vereceği durumlarda çarpışmaya karşı güvenli gerçek bir sonek. Bir belgedeki ikinci "Giriş" giriş-1 olur, üçüncüsü giriş-2 olur, tam olarak GitHub'un kendi yavaşlayıcısının çalıştığı şekilde çalışan bir oluşum haritasıyla izlenir - başlıklar tekrarlandığında önceki bağlantıların üzerine sessizce yazan bir kısayol değildir; bu, elle yuvarlanan içindekiler tablosu komut dosyalarının bozulmasının en yaygın yoludur.
İşaretleme ayrıştırması amaca göre satır tabanlıdır, çünkü saf bir uygulama için klasik hata modu, çitlerle çevrili bir kod bloğunun içine yazılan "#" harfini başlık olarak ele almaktır. Bu araç, belgede satır satır yürürken bir ``` veya ~~~ çitin o anda açık olup olmadığını izler ve açık çitlerin dışındaki yalnızca ATX başlıklarını (#'den ######'a kadar) tanır - bu nedenle kabuk yorumlarını veya Python "# yorumunu" gösteren bir kod örneği, içindekiler tablonuzu asla kirletmez. HTML girişi farklı, eşit derecede gerçek bir yol alır: tarayıcının kendi DOMParser'ı ile ayrıştırılır, başlıklar etiket adına göre seçilir ve her birinin id niteliği, belge bir dizeye geri serileştirilmeden önce doğrudan gerçek öğe üzerinde ayarlanır.
Diğer taraftan iki şey çıkıyor. İlk olarak, hem yuvalanmış bir Markdown listesi (- [Title](#slug), başlık düzeyine göre girintili) hem de yuvalanmış bir HTML listesi (<ul><li><a href="#slug">) olarak dışa aktarılan içindekiler tablosunun kendisi, her biri kendi kopyalama düğmesine sahiptir. İkincisi, bağlantı noktalarının gerçekten bağlı olduğu orijinal içeriğiniz: Markdown girişi için kramdown, Pandoc, MkDocs ve GitHub Pages'ın Jekyll'i tarafından kullanılan geniş çapta desteklenen {#slug} başlık özelliği sözdizimini seçebilirsiniz veya hedef oluşturucunuz özellik sözdizimini anlamıyorsa önceden ayarlanmış id=slug" içeren düz HTML başlık etiketlerine geri dönebilirsiniz. HTML girişi için, kimlik doğrudan ayrıştırılmış başlık öğesine enjekte edilir; etiketler zaten mevcut olduğundan seçilecek ayrı bir "mod" yoktur.
Her şey tarayıcınızda yerel olarak çalışır: ayrıştırma, bilgi matematiği ve belgenin yeniden birleştirilmesi, şu anda baktığınız sayfada hiçbir yere yüklenmeden JavaScript'te gerçekleşir. Bu, taslak belgeler, dahili wiki'ler veya yalnızca çalışan bir içindekiler tablosu elde etmek için üçüncü taraf bir hizmete yapıştırmaya hazır olmadığınız yayınlanmamış bir blog yazısı için önemlidir.