Spintax Söz Dizimi Referansı

Spintax şablon işaretlemesi için eksiksiz referans.

Sıralamalar { }

Listeden rastgele bir seçenek seçer.

{option1|option2|option3}

Örnekler

{blue|grey|clear}
{|free|paid} plan                 ← empty option = sometimes nothing
{Acme {Pro|Lite}}                ← nested enumerations
{order {|#42-A} confirmed}       ← 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
#def %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%.

/# %greeting% above may differ between the two references — #set re-rolls.
   #def picks once and keeps it: #/
#def %tone% = {friendly|warm|upbeat}
A %tone% intro, and a %tone% outro — always the same word.

Değişken kuralları

  • #set ve #def 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)
  • #set değişkenleri tanımlandığında değil, referans verildiğinde genişletilir (tembel değerlendirme)
  • #set bir makrodur: değeri her referansta yeniden yerine konur ve içindeki spintax yeniden çekilir. #def değerini her render'da bir kez çözer ve bu sonucu her yerde korur
  • #set ve #def 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 veya #def 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, kullanıcı ücretli bir planda olduğunda pro özellik 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

Çoğullar {plural %n%: dil|dil}

Bir sayıya göre kelimenin dilbilgisel olarak doğru biçimini seçer. Sayaç iki noktadan önce, biçimler ise sonra | ile ayrılarak yazılır.

Biçimi şablon değil render yerel ayarı belirler; dolayısıyla kaç biçim vermeniz gerektiği o yerel ayara bağlıdır. İngilizce iki, Rusça üç biçim ister.

{plural %n%: form1|form2}          ← 2-form locale (en, de, es…)
{plural %n%: form1|form2|form3}    ← 3-form locale (ru, uk, sr…)
#def %LangCount% = 5
supports %LangCount% {plural %LangCount%: language|languages}
← supports 5 languages

Yerel ayara göre biçimler

Yerel ayar dil alt etiketiyle eşleştirilir, bu yüzden ru-RU ile ru aynı davranır:

Yerel ayarBiçimSeçim ölçütü
ru, uk, be, sr, hr, bs31 · 2–4 · 5 ve üzeri
en dahil diğer tüm yerel ayarlar2tam olarak 1 · geri kalan her şey

Biçim sayısı tutmazsa motor plural.arity bildirir ve bloğu tam genişlikli süslü parantezlerle görünür bırakır — yanlış bir çoğul sessizce yayına çıkmaz.

Çoğul kuralları

  • Açılış, boşluk dahil birebirdir: {plural . {plural: x} ve {pluralN: x} çoğul bloğu değildir
  • İki nokta zorunludur — sayacı biçimlerden ayırır
  • Sayaç bir %Var% referansı veya tam sayı sabitidir; sayaçtaki değişkenler biçim seçilmeden önce yerine konur
  • Negatif sayılar mutlak değeriyle işlenir; 0 "geri kalan her şey" biçimini alır
  • Sayaç değişkeni #set değil #def olmalıdır#set bir makrodur, dolayısıyla {1|4|9} gibi bir değer çoğul kararı verilirken hâlâ çözülmemiş spintax'tır ve blok boş render edilir. Playground bunu plural.count-macro olarak işaretler
  • Sayısal olmayan veya tanımsız bir sayaç, tahmin yürütmek yerine bloğu siler
  • Derinlemesine: Rusçanın üç biçimli kuralları ve işlenmiş örnekler için çoğul 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 / #def 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
Değişken (tek sefer)#def %var% = valHer render'da bir kez çözülür
Koşul{?VAR?then|else}truthy ise then, falsy ise else
Çoğul{plural %n%: dil|dil}Kelime biçimini yerel ayara göre sayıyla uyumlar
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.