· kaynak dev.to (home feed)
readm3 0.3.0, terminale markdown düzenleme ve Reddit lezzeti desteği ekliyor
readm3 0.3.0, terminal markdown okuyucusunu hafif bir düzenleyiciye dönüştürüyor, regex tabanlı ayrıştırıcısını marked ile değiştiriyor ve GitHub uyarıları ile Reddit spoiler'ları için lezzet (dialect) yönetimi ekliyor.

Bir okuyucu düzenlemeyi öğreniyor
Dosya tarayıcısını render edilmiş bir belge paneliyle birleştiren terminal markdown görüntüleyicisi readm3, 0.3.0 sürümüyle birlikte görüntülediği dosyaları düzenleme yeteneği kazandı. dev.to duyurusuna göre düzenleme şöyle çalışıyor: e tuşuna basılır, yazılır ve esc ile çıkılır; okuyucu ve düzenleyici aynı buffer üzerinde çalıştığı için kullanıcı geri döndüğünde önizleme çoktan yeniden render edilmiş oluyor. Eşit tutulması gereken ayrı bir render yolu yok — yazar, canlı önizleme paneli olan düzenleyicilerde genellikle bozulan kısmın tam olarak bu olduğunu belirtiyor.
Düzenleme yüzeyi bilinçli olarak küçük tutulmuş. ctrl+s kaydeder, kaydedilmemiş çalışmayla çıkılmak istendiğinde önce sorulur. enter, imlecin bulunduğu listeyi sürdürür — bir sonraki madde, bir sonraki numara veya bir görev öğesi için işaretlenmemiş kutu — ve boş bir öğede tekrar basıldığında listeyi kapatır. Metin seçimi ve kes-yapıştır yok. Araç küçük düzeltmeler ve eklenen paragraflar için tasarlandı, gerçek bir düzenleyicinin yerini almak için değil.
Marked, regex yığınının yerini alıyor
Şimdiye kadar ayrıştırma birkaç yüz satırlık elle yazılmış regex koduyla yapılıyordu; bu kod referans bağlantıları, iç içe listeleri ve çıplak URL'leri yanlış ele alıyordu — ve her düzeltme bir ifade daha yazmak anlamına geliyordu. Sürüm 0.3.0, ayrıştırmayı marked'a taşıyor. Bunun nedeni özelliklerden çok ağırlık: marked, CommonMark ve GFM'yi kendi başına hiçbir bağımlılık olmadan uyguluyor ve readm3'ü bir bağımlılıktan ikiye çıkarıyor. Karşılaştırma yapılırsa, gönderide markdown-it'in yedi bağımlılık anlamına geleceği, remark/micromark hattının ise yirmi ile kırk paket arasında bir şey olacağı belirtiliyor — terminalde anında başlama çekiciliği olan bir araç için ağır bir yük.
Yalnızca ayrıştırma katmanı değişti. Yerleşim kodu — satır kaydırma, kod bloğu olukları, tablo boyutlandırma — el değmedi, böylece readm3.com'daki proje sitesi terminal yapısının kullandığı aynı fonksiyonlarla render ediliyor ve hâlâ tek bir renderer var. marked'ın benimsenmesi, yan etki olarak referans bağlantılarını, iç içe ve gevşek listeleri, çıplak URL otomatik bağlantılarını ve sert satır sonlarını da çözdü.
Hepsi aynı anda açılamayan lezzetler
marked, GitHub uyarılarını, dipnotları, :emoji: kısa kodlarını veya Reddit'in yıllar içinde eklediği sözdizimini içermiyor; bu yüzden readm3 bunları kendi tokenizer uzantıları olarak, yine yeni bağımlılıklar olmadan uyguluyor. Bunlar commonmark, github (varsayılan), reddit veya all seçenekleri sunan bir --flavor anahtarının arkasında duruyor, çünkü lezzetler gerçekten çakışıyor.
Duyuru iki örnek veriyor. 2^32 bir README'de sadece bir sayıdır, ama Reddit'te 2 üzeri 32 anlamına gelir ve üst simge olarak render edilir — bunu global olarak etkinleştirirseniz her teknik belgedeki her üstel sessizce anlam değiştirir. >!spoiler!< daha da çetrefilli: CommonMark'da, GitHub'da ve başka yerlerde > ile başlayan bir satır blok alıntısıdır, yani metin kalan kısmı içeren bir alıntı olarak ayrıştırılır; Reddit ise onu spoiler olarak okur. Bunu doğru yapmak için, marked'ın blok alıntısı tokenizer'ı satırı işlemeden önce satırın sahipliğini üstlenen blok düzeyinde bir uzantı gerekti.
Çalışmanın sonucunda birkaç ayrıntı da ortaya çıktı. Üst simgeler, her karakterin karşılığı varsa gerçek Unicode karakterlerini kullanır; böylece mc^2, mc² olur ve karşılığı yoksa düzeltme işaretini korur, çünkü Unicode'da üst simge q yoktur. Spoiler'lar, arka plan rengiyle kamufle edilmiş metin yerine düz bloklar olarak çizilir; böylece çıktı başka yere yönlendirildiğinde veya --color never ile çalıştırıldığında gizli kalırlar.
Sadece gerçek bir terminalin bulabileceği bir hata
Yazar, bitmiş arayüzü gerçek bir sözde terminalde kullanırken düzenleme modundayken ? tuşuna basıp yardım istedi ve belgeye bir soru işareti yerleştiğini gördü. Durum çubuğu, okuyucu modundan kalma bir artık olarak ? tuşunu yardım tuşu olarak tanıtıyordu; yardım şimdi ctrl+g'ye taşındı. Hiçbir birim testi bunu yakalayamazdı, çünkü buffer doğru davranıyor ve aldığı tuş vuruşunu ekliyordu. Sürüm, Node 22, Node 24 ve Bun altında Linux, macOS ve Windows'ta geçtiği bildirilen 144 testle birlikte geliyor ve bun add -g @profullstack/readm3 ile kuruluyor.
Neden önemli
Terminal markdown araçları genellikle render eden ama hiçbir şeyi değiştiremeyen bir görüntüleyici ile önizlemesi olmayan bir düzenleyici arasında bir seçim zorlar. readm3 0.3.0 bunu, anında açılacak kadar hafif iki panelli bir araca dönüştürüyor ve lezzet anahtarı, evrensel lezzet desteğinin neden başarısız olduğunun çalışan bir gösterimi: markdown varyantları birbirleriyle uyumsuz ve tek bir biçim olarak ele almak belgeleri sessizce bozuyor. README'lerini koruyan veya terminalden Reddit'te yazan herkes için dar bir nişi alışılmadık bir özenle dolduruyor.
- #markdown
- #terminal
- #cli
- #open-source
- #node-js