İç İçe Spintax
İç içe yapının düz döndürmeyi güçlü bir şablon motoruna nasıl dönüştürdüğü — ve Spintax.Net yaklaşımının neden standart olduğu.
İç İçe Spintax Nedir?
Normal spintax, bir listeden rastgele bir seçenek seçer: {red|blue|green} üç renkten birini üretir. İç içe spintax, spintax içine spintax yerleştirir — tıpkı bir matruşka bebek gibi, her katman içinde daha fazla varyasyon barındırır.
Motor iç içe yapılarla karşılaştığında, en içteki ifadeden dışarıya doğru çözümler. İç süslü parantezler önce değerlendirilir ve sonuçları dış ifadenin bir parçası olur.
{red|{dark|light} blue} car
Burada önce {dark|light} çözülür (örn. dark) ve {red|dark blue} elde edilir. Ardından dıştaki sıralama bir seçenek seçer: red veya dark blue.
İç İçe Yapı Neden Önemlidir
İç içe yapı olmadan seçenekleriniz düzdür. Her biri üç seçeneğe sahip üç sıralama ile 3 + 3 + 3 = 9 parça elde edersiniz. İç içe yapı ile aynı elemanlar çarpımsal olarak birleşir: 3 × 3 × 3 = tek bir kompakt şablondan 27 benzersiz varyant.
Bu üstel büyüme, gerçekten benzersiz içerik üretmenin anahtarıdır. İç içe sıralamalar ve permütasyonlar içeren orta düzeyde karmaşık bir şablon, özenle hazırlanmış tek bir kaynaktan binlerce hatta milyonlarca farklı çıktı üretebilir.
Diğer Araçların Yaygın Sınırlamaları
Çoğu spintax aracı yalnızca temel işlevleri destekler. Genellikle şunlar sorun olur:
- Yalnızca sıralama içinde sıralama —
{a|{b|c}}desteklenir ancak başka hiçbir şey desteklenmez. Permütasyonlar, değişkenler, diğer elemanlar içindeki dahil etmeler mümkün değildir. - Derinlik sınırları — birçok ayrıştırıcı 2–3 seviye iç içe yapıdan sonra bozulur ve sessizce hatalı çıktı üretir.
- Temizlik yok — iç içe yapılar çözümlendikten sonra boşluklar çöker, noktalama işaretleri ikiye katlanır, büyük harf kullanımı bozulur. Sonuç manuel düzenleme gerektirir.
- Birleştirilebilirlik yok — değişkenler ve dahil etmeler olmadan her şablon bir adadır. Ortak blokları yeniden kullanmak kopyala-yapıştır anlamına gelir.
Spintax.Net Yaklaşımı
Spintax.Net, iç içe yapıyı sonradan eklenen bir özellik olarak değil, birinci sınıf bir özellik olarak uygular. Beş tasarım kararı bunu mümkün kılar:
- Sınırsız derinlik — iç içe yapı sınırı yoktur. On seviye derinlik, iki seviye ile aynı şekilde çalışır.
- Çapraz eleman iç içe yapısı — permütasyonlar içinde sıralamalar, sıralamalar içinde permütasyonlar, iç içe yapılar içeren değişkenler, iç içe şablonların tamamını gömen dahil etmeler. Herhangi bir eleman diğer herhangi bir elemanın içinde.
- En içten dışa çözümleme — motor her zaman en derin seviyeden dışarıya doğru çözümler. Bu, değerlendirmeyi öngörülebilir ve hata ayıklanabilir kılar.
- Akıllı son işleme — tüm iç içe yapılar çözümlendikten sonra motor otomatik olarak büyük harf kullanımını düzeltir, tekrarlanan boşlukları birleştirir, noktalama aralıklarını düzeltir ve cümle sınırlarını işler. Çıktı ham birleştirme değil, temiz metindir.
- Güvenlik —
#includeiçin döngüsel referans algılama sonsuz döngüleri önler. Değişken kapsam kuralları (çalışma zamanı > yerel > global) kazara üzerine yazmaları önler.
Basitten İleri Düzeye
1. Sıralama içinde sıralama
{{premium|luxury} sedan|{compact|mid-size} SUV}
Önce içteki sıralamalar çözülür, sonra dıştaki sonucu seçer. Olası çıktılar: premium sedan, luxury sedan, compact SUV, mid-size SUV.
2. Permütasyon içinde sıralama
[<minsize=2;maxsize=3;sep=", ";lastsep=" and "> {red|blue} apples|{big|small} oranges|bananas]
Her permütasyon öğesi kendi sıralamasını içerir. Motor önce içteki sıralamaları çözer, sonra karıştırır ve birleştirir. Örnek çıktı: blue apples, bananas and small oranges.
3. İç içe spintax ile #set değişkenleri
#set %product% = {{premium|budget} {laptop|tablet}|{smart|classic} phone}
#set %action% = {Buy|Get|Order}
%action% your new %product% today!
#set bir makrodur: iç içe spintax'ı çözülmemiş halde saklar ve her referansta yeniden çeker; bu yüzden iki %product% anılışı iki farklı ürün verebilir. Birden fazla değişkenle birleşince varyant sayısı hızla çoğalır.
4. #def — bir kez çekilir, her yerde geçerli
#def %brand% = {{Nord|Prime} Tools|Acme {Labs|Works}}
%brand% ships today. Order %brand% now!
#def iç içe spintax'ını render başına bir kez çözer ve sonucu her referansta korur — burada iki anılış da aynı markayı söyler. Tekrarlanan referansların tutarlı olması gerektiğinde (marka adları, sayaçlar) #def kullanın; her referans kendi başına değişecekse #set kullanın.
5. İç içe blokların etrafında koşullar
{?PLAN?{Upgrade to|Unlock} {Pro|Premium} features|{Try|Start with} the free tier}
{?VAR?then|else} ön geçişi, dalı %PLAN% değerinin olup olmamasına göre seçer — herhangi bir rastgele seçimden önce. Elenen dal bütünüyle atılır: içindeki hiçbir şey değerlendirilmez veya çekilmez.
6. İç içe sayaçla çoğullar
#def %n% = {2|5|21}
Renders %n% {plural %n%: variant|variants} per click.
Sayaç kendisi de spintax'tır — ve değişkeni #set değil #def olmalıdır: biçim, sayaç çözüldükten sonra seçilir ve bir makro o anda hâlâ çözülmemiş spintax olurdu. Kaç biçim verileceğine render yereli karar verir: Türkçe veya İngilizcede iki, Rusça veya Ukraynacada üç.
7. İç içe yapıyla dahil etmeler
/# main template #/
#include "hero-text"
{Check out|Discover|Explore} our [<, > features|plans|pricing].
Dahil edilen şablon kendisi de sıralamalar, permütasyonlar, değişkenler ve hatta başka dahil etmeler içerebilir. Dairesel referans tespiti her şeyi güvende tutar.
AI + İç İçe Spintax
Büyük dil modelleri karmaşık iç içe şablonlar yazmada mükemmeldir. Tek bir istem ile birden fazla iç içe seviye, değer güdümlü koşul blokları ({?VAR?…}), yerele duyarlı çoğullar ve dahil etmeler aracılığıyla yeniden kullanılabilir bölümler içeren bir şablon üretilebilir.
İş akışı basittir: Şablonu bir kez oluşturmak için AI kullanın, ardından benzersiz varyantları sonsuza dek ucuza üretmek için Spintax kullanın. Şablonu oluşturmak için bir API çağrısı. Her varyantı üretmek için sıfır API çağrısı. İç içe spintax bunu ekonomik olarak uygulanabilir kılan şeydir — iç içe yapı ne kadar derin olursa, şablon başına o kadar fazla benzersiz çıktı elde edersiniz.
Başlarken
Projelerinizde iç içe spintax kullanmaya hazır mısınız? Playground’da canlı deneyin — yukarıdaki herhangi bir örneği yapıştırın ve çözülüşünü izleyin. Tam spesifikasyon söz dizimi referansında; üretim için dört açık kaynak motordan birini seçin — ya da runtime’ınız WordPress ise WordPress eklentisini kullanın.