Spintax Söz Dizimi Referansı

Spintax şablon işaretlemesi için eksiksiz referans. Söz dizimi, Generating The Web (GTW) standardı ile uyumludur.

Sıralamalar { }

Listeden rastgele bir seçenek seçer.

{option1|option2|option3}

Örnekler

{blue|grey|clear}
{|online|internet} casino        ← empty option = sometimes nothing
{1X{S|s}lots}                    ← nested enumerations
{license {|#8048} from Curacao}  ← nesting with empty option

Kurallar

  • Sınırlayıcılar: { ve }
  • Ayırıcı: |
  • Rastgele derinlikte iç içe geçmeyi destekler
  • Boş seçenekler geçerlidir (boş dize üretir)
  • Çözümleme en içteki ifadeden dışa doğru

Permütasyonlar [ ]

N öğe seçer, karıştırır ve ayırıcılarla birleştirir.

Basit permütasyonlar

Tüm öğeler dahil, boşlukla ayrılmış:

[1|2|3|4]

Çıktı örnekleri: 1 4 3 2, 2 3 4 1, 3 2 4 1

Ayırıcı ile

Başlangıçta < > içinde belirtilen tek tip ayırıcı:

[<, > 1|2|3|4]

Çıktı örnekleri: 2, 1, 4, 3, 4, 3, 2, 1

Önemli: [ ve <ayırıcı> arasında boşluk olmamalıdır.

Öğe başına ayırıcılar

Her seçenek, önceki | işaretinden önce <sep> ile kendi ayırıcısını tanımlayabilir. Ayırıcı, karıştırma sırasında öğesiyle birlikte hareket eder.

[<, > 1|2|3 < and >|4]

Çıktı örnekleri: 1, 3, 2 and 4, 3, 1, 2 and 4

Otomatik boşluk: <and> veya <or> gibi kelime ayırıcıları otomatik olarak boşluklarla doldurulur: <and>,  and  üretir. Noktalama ayırıcıları (<,>) doldurulmaz.

Kombinasyonlu permütasyonlar

Yapılandırılabilir minimum/maksimum öğe sayısı ve ayırıcılar:

[<minsize=1;maxsize=3;sep=", ";lastsep=" and "> apple|plum|orange|apricot]

Çıktı örnekleri: apple, plum and orange, apple and apricot, orange

Yapılandırma parametreleri

ParametreVarsayılanAçıklama
minsizetümünün sayısıSeçilecek minimum öğe sayısı
maxsizetümünün sayısıSeçilecek maksimum öğe sayısı
sep" " (boşluk)Son olmayan öğeler arasındaki ayırıcı
lastsepsep ile aynıSon öğeden önceki ayırıcı

Permütasyon kuralları

  • Sınırlayıcılar: [ ve ]
  • Yapılandırma bloğu <...> hemen [ sonrasında gelmelidir
  • Yapılandırma parametreleri noktalı virgülle ayrılır
  • Yapılandırmadaki dize değerleri tırnak içindedir: sep=", "
  • Sıralamalar ve permütasyonlar seçeneklerin içinde iç içe geçebilir
  • HTML öğeleri seçenek olabilir

Değişkenler %var%

Göründüğü her yerde yerine geçirilen yeniden kullanılabilir bir değişken tanımlar.

#set %VARIABLE_NAME% = value or spintax structure

Örnekler

#set %name% = John
#set %greeting% = {Hello|Hi|Hey}
#set %items% = [<minsize=2;maxsize=3;sep=", ";lastsep=" and "> apples|oranges|bananas]
Some text with %name% and %greeting%, also %items%.

Değişken kuralları

  • #set satırın başında olmalıdır
  • Değişken adları % ile çevrelenir: %ad%
  • Değişken adları alfanümerik + alt çizgi
  • Değerler herhangi bir spintax söz dizimi içerebilir (sıralamalar, permütasyonlar, diğer değişkenler)
  • Değişkenler tanımlandığında değil, referans verildiğinde genişletilir (tembel değerlendirme)
  • #set satırları çıktıdan kaldırılır

WordPress eklentisinde değişken kapsamları

Eklenti üç değişken kapsamını destekler. Aynı ad birden fazla kapsamda bulunduğunda, en güçlü kapsam kazanır:

  1. Çalışma zamanı değişkenleri (en güçlü) — kısa kod ile geçirilir: [spintax slug="greeting" name="Alice"]
  2. Yerel değişkenler — şablon içinde #set ile tanımlanır
  3. Genel değişkenler (en zayıf) — Ayarlar sayfasında tanımlanır

Koşullar {?VAR?then|else}

Koşullar, spintax.net'in GTW ailesine getirdiği ayırt edici uzantıdır. {a|b} değişkenleri umursamayan tek tip rastgele seçimken, {?VAR?then|else} %VAR%'in değeri olup olmamasına göre seçim yapar.

Değer odaklı seçimler için kullanın: ücretsiz katman varsa ücretsiz katman satırını göstermek, kumarhane kripto kabul ediyorsa kripto-bankacılık bloğunu render etmek, geçerli olmayan CTA'yı gizlemek.

Ön geçiş %var% genişletmesinden ve rastgele dal seçicisinden önce çalışır, böylece falsy bir dal tamamen elenir — içindeki hiçbir şey değerlendirilmez.

Formlar

{?VAR?then}                ← truthy ⇒ then; falsy ⇒ empty
{?VAR?then|else}           ← truthy ⇒ then; falsy ⇒ else
{?!VAR?then|else}          ← inverted
{?HasFreeTier? — free tier available since %founded%|, trusted since %founded%}

Truthy ve falsy

Kural JavaScript'ten kasıtlı olarak daha basittir — truthy = en az bir boşluk olmayan karakter:

%VAR% değeriTruthy?
tanımlanmamışfalsy
boş dizefalsy
yalnızca boşlukfalsy
"0", "false"truthy (boş değil)
diğer herhangi bir metin veya HTMLtruthy

Koşul kuralları

  • Değişken adları %var% ile aynı regex'i izler (büyük/küçük harf duyarsız)
  • ! öneki kontrolü tersine çevirir: {?!VAR?yok}
  • Derinlik 0'daki ilk | then'i else'den ayırır; sonrakiler else içinde literal kalır
  • İç içe koşullar dıştan içe değerlendirilir — falsy dallar kısa devre yapar
  • Bileşik mantık (&&, ||, karşılaştırmalar) desteklenmez — assembler'da bir koruma değişkenini önceden hesaplayın
  • Bozuk formlar ({??yes}, {?VAR}) asla fırlatmaz — playground onları uyarı olarak işaretler
  • Derinlemesine: örnekler ve anti-patternler için koşullu spintax kılavuzuna bakın

Dahil Etme #include

Direktifin konumunda başka bir şablonu gömer.

#include "hero-text"

Dahil etme kuralları

  • Şablon referansı çift tırnak içindedir
  • Şablon slug'ı veya sayısal ID ile çözümlenir
  • Dahil edilen şablonlar kendi değişkenlerini ve spintax'ını içerebilir
  • Özyinelemeli dahil etmeler desteklenir
  • Döngüsel referanslar algılanır ve engellenir
  • Alt şablonlar genel ve çalışma zamanı değişkenlerini miras alır ancak üst öğenin #set yerellerini miras almaz

Yorumlar /#...#/

Yorum işaretleri arasındaki metin, diğer işlemlerden önce çıktıdan kaldırılır.

/#
  This is a comment section.
  It can span multiple lines.
  It won't appear in output.
#/

Yorum kuralları

  • Başlangıç sınırlayıcı: /#
  • Bitiş sınırlayıcı: #/
  • Birden fazla satıra yayılabilir
  • İç içe geçemez
  • Diğer işlemlerden önce kaldırılır

İç İçe Geçme

Tüm söz dizimi öğeleri rastgele derinlikte birbirinin içine yerleştirilebilir:

{option1|[<, > sub1|sub2|sub3]|option3}

[<minsize=2;maxsize=3;sep=", ";lastsep=" and "> {red|blue} apples|{big|small} oranges|bananas]

#set %var% = {a|[b|c]}

Son İşleme

Motor, oluşturma sonrası otomatik metin düzeltmesi uygular:

  1. URL'leri, e-postaları, alan adlarını, ondalık sayıları ve kısaltmaları büyük harften korur
  2. Yinelenen boşlukları ve sekmeleri temizler
  3. Noktalama işaretlerinden önceki boşlukları kaldırır (, . ! ?)
  4. Eksik olan yerlerde noktalama işaretlerinden sonra boşluk ekler
  5. Çıktının ilk harfini büyük yapar (HTML etiketlerini atlar)
  6. Cümle sonu noktalama işaretlerinden sonra büyük harf
  7. Blok düzeyinde HTML etiketlerinden sonra büyük harf
  8. Satır sonlarından sonra büyük harf
  9. Korunan yer tutucuları geri yükler

Söz Dizimi Özeti

ÖzellikSöz DizimiDavranış
Sıralama{a|b|c}Rastgele bir seçenek seçer
Permütasyon[a|b|c]N tane seç, karıştır, birleştir
Ayırıcı[<sep> a|b|c]Tek tip ayırıcılı permütasyon
Öğe başına ayırıcı[<,> a|b <x>|c]Özel ayırıcılı permütasyon
Kombinasyonlar[<config> a|b|c]Min/maks sayılı permütasyon
Değişken#set %var% = valYeniden kullanılabilir değiştirme
Koşul{?VAR?then|else}truthy ise then, falsy ise else
Dahil etme#include "slug"Başka bir şablonu gömer
Yorum/#...#/Çıktıdan kaldırılır

Söz dizimi Generating The Web (GTW) standardı ile uyumludur.