İşlem hattı
- Markdown’ı IR’ye ayrıştırın (
markdownToIR) - düz metnin yanı sıra stil aralıkları (kalın, italik, üstü çizili, kod, kod bloğu, spoiler, blok alıntı, 1-6. düzey başlık) ve bağlantı aralıkları. Ofsetler UTF-16 kod birimleridir; böylece Signal stil aralıkları doğrudan API’siyle hizalanır. Tablolar yalnızca kanal bir tablo modunu etkinleştirdiğinde ayrıştırılır. - IR’yi parçalara ayırın (
chunkMarkdownIR/renderMarkdownIRChunksWithinLimit)- bölme, oluşturmadan önce IR metninde gerçekleşir; böylece satır içi stiller ve bağlantılar bir sınırı aşarak bozulmak yerine her parçaya göre dilimlenir.
- Kanal başına oluşturun (
renderMarkdownWithMarkers) - bir stil işareti eşlemesi aralıkları kanalın yerel işaretlemesine dönüştürür.
IR örneği
Girdi Markdown’ı:Tablo işleme
markdown.tables, bir kanalın Markdown tablolarını kanal başına ve
isteğe bağlı olarak hesap başına nasıl dönüştüreceğini denetler:
Kanal başına Plugin varsayılanları: Signal, WhatsApp ve Matrix için varsayılan
bullets; Mattermost için off; Telegram için block değeridir (hesapta
richMessages etkin değilse code olarak çözümlenir). Açık bir Plugin varsayılanı
bulunmayan tüm kanallar code değerine geri döner.
Parçalama kuralları
- Parça sınırları kanal bağdaştırıcılarından/yapılandırmasından gelir ve oluşturulan çıktıya değil IR metnine uygulanır.
- Çitli kod blokları, kanalların kapanış çitini doğru oluşturabilmesi için sonunda yeni satır bulunan tek bir blok olarak korunur.
- Liste ve blok alıntı önekleri IR metninin parçasıdır; bu nedenle parçalama hiçbir zaman önekin ortasından bölmez.
- Satır içi stiller hiçbir zaman parçalar arasında bölünmez; oluşturucu, açık bir stili sonraki parçanın başında yeniden açar.
Bağlantı politikası
- Slack:
[label](url)-><url|label>; çıplak URL’ler çıplak kalır. - Telegram:
[label](url)-><a href="url">label</a>(HTML ayrıştırma modu). - Signal: Etiket zaten URL ile eşleşmiyorsa
[label](url)->label (url).
Spoiler’lar
Spoiler işaretleri (||spoiler||) Signal için ayrıştırılır (SPOILER
stil aralıklarına eşlenir) ve Telegram için ayrıştırılır (<tg-spoiler> olarak eşlenir). Diğer kanallar
||...|| değerini düz metin olarak işler.
Kanal biçimlendiricisi ekleme veya güncelleme
- Kanala uygun seçenekleri (
autolink,headingStyle,blockquotePrefix,tableMode) ileterekmarkdownToIR(...)ile bir kez ayrıştırın. - Bir stil işareti eşlemesiyle (veya Signal gibi aktarımlar için
özel stil aralığı mantığıyla)
renderMarkdownWithMarkers(...)kullanarak oluşturun. - Her parçayı oluşturmadan önce
chunkMarkdownIR(...)veyarenderMarkdownIRChunksWithinLimit(...)ile parçalara ayırın. - Giden gönderim yolundan yeni parçalayıcıyı ve oluşturucuyu çağırması için bağdaştırıcıyı bağlayın.
- Biçim testleriyle ve kanal parçalara ayırıyorsa bir giden teslim testiyle test edin.
Yaygın sorunlar
- Slack açılı ayraç belirteçleri (
<@U123>,<#C123>,<https://...>) kaçış işleminden sağ çıkmalıdır; ham HTML’nin yine de güvenli biçimde kaçışlanması gerekir. - Telegram HTML’sinde bozuk işaretlemeyi önlemek için etiketlerin dışındaki metnin kaçışlanması gerekir.
- Signal stil aralıkları kod noktası ofsetlerini değil, UTF-16 ofsetlerini kullanır.
- Kapanış işaretinin kendi satırına yerleşmesi için çitli kod bloklarının sonundaki yeni satırları koruyun.
İlgili
Akış ve parçalama
Giden akış davranışı, parça sınırları ve kanala özgü teslim.
Sistem istemi
Eklenen çalışma alanı dosyaları dahil olmak üzere modelin konuşmadan önce gördükleri.