Markdown → HTML Çevirici

Markdown'ı canlı önizlemeli temiz HTML'e çevirin — başlık, liste, bağlantı, kod blokları ve dahası; tamamı tarayıcınızda.

1.103 görüntülenme

Nasıl Çalışır

Bu çevirici, CommonMark standardını izler — orijinal 2004 Markdown tanımının açık bıraktığı belirsizlikleri (iç içe listeler gevşek paragraflarla nasıl etkileşir, bir alıntı içinde liste imi ne yapar gibi) kesin biçimde çözen bir Markdown sürümüdür. Ayrıştırma iki ayrı aşamada gerçekleşir. İlk aşama blok-seviyesidir: ham metin, sadece satır yapısı ve girintiye bakılarak — henüz her bloğun içinde ne olduğuyla ilgilenmeden — paragraf, ATX başlık (#...######), çitli kod bloğu, alıntı, sıralı/sırasız liste, yatay çizgi gibi yapısal birimlere bölünür. İkinci aşama satır-içi seviyesidir: her blok içinde ayrıştırıcı, kalın/italik imlerini (**kalın**, *italik*), satır içi kod işaretlerini (`kod`) ve bağlantı/görsel söz dizimini ([metin](url)) tarar ve bunları karşılık gelen HTML etiketlerine dönüştürür. Bu iki aşamalı tasarım, çitli bir kod bloğu içindeki bir yıldız işaretinin neden dokunulmadan kaldığını açıklar — kod blokları, satır-içi vurgu kuralları içeriklerine hiç uygulanmadan önce, tamamen ilk aşamada çözülür.

Örnek: ## Sürüm Notları satırından sonra boş satır ve - **v2.1**: düzeltmeler geldiğinde, blok-seviyesi ayrıştırma önce bir başlık ve tek öğeli bir liste tespit eder; satır-içi ayrıştırma ise **v2.1** ifadesini liste öğesi içinde <strong>v2.1</strong>'e çevirir. Tablolar, CommonMark üzerine eklenen GFM (GitHub Flavored Markdown) uzantısını izler: bir başlık satırı, hizalamayı belirleyen iki nokta üst üste yerleşimine (:--, :-:, --:) sahip bir --- ayraç satırı ve altında istenildiği kadar veri satırı.

Bilinmesi Gerekenler

  • Ham HTML kaçışlanır, çalıştırılmaz — yapıştırılan bir script etiketi veya satır içi olay işleyicisi, çalışmak yerine görünür metin olarak render edilir; bu, yapıştırılan güvenilmeyen içerik için bilinçli bir güvenlik tercihidir.
  • Gevşek ve sıkı listeler çıktıyı değiştirir — liste öğeleri arasında boş satır olması CommonMark'ı her öğeyi kendi <p>'sine sarmaya zorlar ("gevşek" liste); boş satır olmaması öğeleri düz satır-içi içerik olarak tutar ("sıkı" liste) — bu, render edilen HTML'deki dikey boşluğu değiştirir.
  • Çok derin iç içelemenin pratik bir sınırı vardır — dört ve üzeri seviyede iç içe liste veya referans-tarzı bağlantı tanımları geçerli CommonMark'tır ama tarayıcı-tabanlı canlı önizlemeden çok, özel bir derleme-zamanı ayrıştırıcının işidir.

Sıkça Sorulan Sorular

Tablolar destekleniyor mu?

Evet, CommonMark üzerine eklenen GFM (GitHub Flavored Markdown) tablo uzantısıyla: bir başlık satırı, bir --- ayraç satırı ve borularla ayrılmış istenildiği kadar veri satırı. Ayraç hücrelerinin başına veya sonuna iki nokta üst üste koymak (:--, :-:, --:) o sütun için sol, orta veya sağ hizalama belirler — bu, çekirdek CommonMark'ın değil, bir uzantının parçasıdır.

HTML etiketim neden render olmak yerine metin olarak görünüyor?

Bilerek böyle. Girdideki ham HTML, çıktıya aynen geçirilmek yerine kaçışlanır; böylece yapıştırılan bir <script> etiketi veya bir onclick özniteliği çalışmak yerine düz metin olarak görünür — güvenilmeyen içerik yapıştırmayı güvenli kılan da budur. Bunun yerine eşdeğerini Markdown söz dizimiyle yazın, ya da kaynağa tamamen güveniyorsanız sonradan elle kaçışı kaldırın.

Satır boşlukları Markdown kurallarına birebir uyuyor mu?

Evet: metin satırları arasındaki boş satır paragrafları ayırır, bir satırı yeni satırdan önce iki boşlukla bitirmek ise paragraf ayrımı yerine <br> üretir. Bir paragrafın ortasındaki tek bir satır sonu, CommonMark'ın belirttiği gibi aynı satıra birleştirilir — düz metin editöründen gelenlerin genelde takıldığı nokta budur.

İç içe bir liste veya kod bloğu içindeki biçimlendirme neden bazen beklenmedik görünüyor?

Çünkü ayrıştırma iki aşamalıdır: blok yapısı (listeler, kod çitleri, alıntılar) önce, sadece girinti ve satır imlerinden çözülür; her blok içindeki satır-içi biçimlendirme (kalın, italik, bağlantı) daha sonra uygulanır. Çitli bir kod bloğu içindeki içeriğe satır-içi aşama hiç dokunmaz, bu yüzden orada **bu** kalın olmak yerine düz metin kalır — bu, hata değil beklenen CommonMark davranışıdır.

Çekirdek CommonMark ile "GitHub Flavored" özellikler arasındaki fark nedir?

Çekirdek CommonMark; başlıkları, vurguları, listeleri, alıntıları, kod bloklarını ve bağlantıları kesin biçimde tanımlar. Tablolar, üstü çizili yazı (~~metin~~) ve görev listesi kutucukları ([ ] / [x]) ise üzerine eklenen GFM uzantılarıdır — bu araç dahil birçok çevirici tarafından yaygınca desteklenir, ama çıktıyı daha sonra yapıştırabileceğiniz her katı CommonMark-yalnızca uygulamada garanti değildir.

Yorumlar

Henüz yorum yok — ilk yorumu siz yazın!

Benzer Araçlar