Referenca Spintax sintakse
Kompletna referenca za spintax markup šablona.
Nabrajanja { }
Nasumično bira jednu opciju sa liste.
{option1|option2|option3}
Primeri
{blue|grey|clear}
{|free|paid} plan ← empty option = sometimes nothing
{Acme {Pro|Lite}} ← nested enumerations
{order {|#42-A} confirmed} ← nesting with empty option
Pravila
- Graničnici:
{i} - Separator opcija:
| - Podržava ugnežđivanje proizvoljne dubine
- Prazne opcije su dozvoljene (daju prazan string)
- Razrešavanje ide od najdubljeg izraza ka spolja
Permutacije [ ]
Bira N elemenata, meša ih i spaja separatorima.
Jednostavne permutacije
Svi elementi su uključeni, razdvojeni razmacima:
[1|2|3|4]
Primeri rezultata: 1 4 3 2, 2 3 4 1, 3 2 4 1
Sa separatorom
Zajednički separator se navodi u < > na početku:
[<, > 1|2|3|4]
Primeri rezultata: 2, 1, 4, 3, 4, 3, 2, 1
Važno: Nema razmaka između [ i <separator>.
Separatori po elementu
Svaka opcija može imati sopstveni separator zadat kroz <sep> pre prethodnog |. Separator putuje sa svojim elementom tokom mešanja.
[<, > 1|2|3 < and >|4]
Primeri rezultata: 1, 3, 2 and 4, 3, 1, 2 and 4
Auto-razmaci: Separatori-reči poput <i> ili <ili> automatski se dopunjuju razmacima, pa <i> daje i . Interpunkcijski separatori (<,>) se ne dopunjuju.
Permutacije sa kombinacijama
Podesiv min./maks. broj elemenata i separatori:
[<minsize=1;maxsize=3;sep=", ";lastsep=" and "> apple|plum|orange|apricot]
Primeri rezultata: apple, plum and orange, apple and apricot, orange
Parametri konfiguracije
| Parametar | Podrazumevano | Opis |
|---|---|---|
minsize | broj svih | Minimalan broj elemenata za izbor |
maxsize | broj svih | Maksimalan broj elemenata za izbor |
sep | " " (razmak) | Separator između elemenata (osim poslednjeg) |
lastsep | kao sep | Separator pre poslednjeg elementa |
Pravila permutacija
- Graničnici:
[i] - Konfiguracioni blok
<...>mora ići odmah posle[ - Parametri konfiguracije se razdvajaju tačkom i zarezom
- String vrednosti u konfiguraciji idu pod navodnike:
sep=", " - Nabrajanja i permutacije mogu biti ugnežđeni u opcije
- HTML elementi mogu biti opcije
Promenljive %var%
Definiše promenljivu za višekratnu upotrebu koja se zamenjuje svuda gde se pojavi.
#set %VARIABLE_NAME% = value or spintax structure
#def %VARIABLE_NAME% = value or spintax structure
Primeri
#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.
Pravila promenljivih
#seti#defmoraju počinjati na početku reda- Imena promenljivih idu između
%:%name% - Imena promenljivih čine slova, cifre i donja crta
- Vrednosti mogu sadržati bilo koju spintax sintaksu (nabrajanja, permutacije, druge promenljive)
#setpromenljive se razvijaju pri referenci, a ne pri definiciji (lenjo izračunavanje)#setje makro: njegova vrednost se iznova zamenjuje — i spintax u njoj se iznova baca — pri svakoj referenci.#defrazrešava vrednost jednom po renderu i drži taj rezultat svuda- Redovi
#seti#defuklanjaju se iz rezultata
Opsezi promenljivih u WordPress pluginu
Plugin podržava tri opsega promenljivih. Kada isto ime postoji u više opsega, pobeđuje najjači:
- Runtime promenljive (najjače) — prosleđuju se kroz shortcode:
[spintax slug="greeting" name="Alice"] - Lokalne promenljive — definišu se kroz
#setili#defunutar šablona - Globalne promenljive (najslabije) — definišu se na stranici podešavanja
Uslovi {?VAR?then|else}
Uslovi su prepoznatljiva ekstenzija spintax.net-a nad GTW familijom. Dok je {a|b} ravnomeran nasumičan izbor koji ignoriše promenljive, {?VAR?then|else} bira prema tome da li %VAR% ima vrednost.
Koristite ga za izbore vođene vrednošću: prikažite red o besplatnom paketu samo kad besplatan paket postoji, renderujte blok pro funkcija samo kad je korisnik na plaćenom planu, sakrijte CTA koji se ne primenjuje.
Pre-pass se izvršava pre razvijanja %var% i pre nasumičnog birača grana, pa se falsy grana odbacuje u celini — ništa u njoj se ne izračunava.
Oblici
{?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 i falsy
Pravilo je namerno jednostavnije nego u JavaScriptu — truthy = bar jedan znak koji nije razmak:
Vrednost %VAR% | Truthy? |
|---|---|
| nije deklarisana | falsy |
| prazan string | falsy |
| samo razmaci | falsy |
"0", "false" | truthy (neprazni stringovi) |
| bilo koji drugi tekst ili HTML | truthy |
Pravila uslova
- Imena promenljivih prate isti regex kao
%var%(bez razlikovanja velikih i malih slova) - Prefiks
!obrće proveru:{?!VAR?nema podataka} - Prvi
|na dubini 0 razdvajathenodelse; kasniji|na vrhu ostaju literali uelse - Ugnežđeni uslovi se izračunavaju outer-first — falsy grane se kratko spajaju
- Složena logika (
&&,||, poređenja) nije podržana — izračunajte guard promenljivu u asembleru - Neispravni oblici (
{??yes},{?VAR}) nikad ne bacaju grešku — playground ih obeležava kao upozorenja - Detaljno: pogledajte vodič za uslovni spintax sa razrađenim primerima i anti-šablonima
Plurali {plural %n%: varijanta|varijante|varijanti}
Bira gramatički ispravan oblik reči za broj. Brojač ide pre dvotačke, oblici posle nje, razdvojeni sa |.
Oblik bira lokal renderovanja, a ne šablon — pa broj oblika koje morate navesti zavisi od tog lokala. Srpskom trebaju tri, engleskom dva.
{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
Oblici po lokalu
Lokal se poklapa po jezičkom subtagu, pa se sr-RS i sr ponašaju identično:
| Lokal | Oblika | Bira se po |
|---|---|---|
ru, uk, be, sr, hr, bs | 3 | 1 · 2–4 · 5 i više |
svaki drugi lokal, uklj. en | 2 | tačno 1 · sve ostalo |
Navedete li pogrešan broj oblika, motor prijavljuje plural.arity i ostavlja blok vidljivim u zagradama pune širine — pogrešan plural nikada ne odlazi u produkciju ćutke.
Pravila plurala
- Otvaranje je literalno, uključujući razmak:
{plural.{plural: x}i{pluralN: x}nisu plural blokovi - Dvotačka je obavezna — razdvaja brojač od oblika
- Brojač je referenca
%Var%ili celobrojni literal; promenljive u brojaču se zamenjuju pre izbora oblika - Negativni brojevi koriste apsolutnu vrednost;
0uzima oblik „sve ostalo“ (u srpskom — „varijanti“) - Promenljiva-brojač mora biti
#def, a ne#set—#setje makro, pa je vrednost poput{1|4|9}u trenutku izbora oblika i dalje nerazrešen spintax i ceo blok se renderuje prazan. Playground to obeležava kaoplural.count-macro - Nenumerički ili nedefinisan brojač briše blok umesto da pogađa
- Detaljno: pogledajte vodič za plurale — pravila tri oblika i razrađeni primeri
Uključivanja #include
Ugrađuje drugi šablon na poziciju direktive.
#include "hero-text"
Pravila uključivanja
- Referenca na šablon ide pod dvostruke navodnike
- Razrešava se po slugu ili numeričkom ID-u šablona
- Uključeni šabloni mogu sadržati sopstvene promenljive i spintax
- Rekurzivna uključivanja su podržana
- Cirkularne reference se otkrivaju i blokiraju
- Podšabloni nasleđuju globalne i runtime promenljive, ali ne i roditeljske lokalne
#set/#def
Komentari /#...#/
Tekst između markera komentara uklanja se iz rezultata pre svake druge obrade.
/#
This is a comment section.
It can span multiple lines.
It won't appear in output.
#/
Pravila komentara
- Početni graničnik:
/# - Završni graničnik:
#/ - Može se protezati kroz više redova
- Ugnežđivanje nije podržano
- Uklanjaju se pre svake druge obrade
Ugnežđivanje
Svi elementi sintakse mogu se ugnežđivati jedni u druge do proizvoljne dubine:
{option1|[<, > sub1|sub2|sub3]|option3}
[<minsize=2;maxsize=3;sep=", ";lastsep=" and "> {red|blue} apples|{big|small} oranges|bananas]
#set %var% = {a|[b|c]}
Postobrada
Motor automatski koriguje tekst posle generisanja:
- Zaštita URL-ova, imejl adresa, domena, decimalnih brojeva i skraćenica od promene velikih slova
- Sažimanje dupliranih razmaka i tabulatora
- Uklanjanje razmaka pre interpunkcije (
,.!?) - Dodavanje razmaka posle interpunkcije gde nedostaje
- Veliko slovo na početku rezultata (uz preskakanje HTML tagova)
- Veliko slovo posle znakova kraja rečenice
- Veliko slovo posle blokovskih HTML tagova
- Veliko slovo posle preloma reda
- Vraćanje zaštićenih čuvara mesta
Pregled sintakse
| Mogućnost | Sintaksa | Ponašanje |
|---|---|---|
| Nabrajanje | {a|b|c} | Izaberi jednu nasumičnu opciju |
| Permutacija | [a|b|c] | Izaberi N, promešaj, spoji |
| Separator | [<sep> a|b|c] | Permutacija sa zajedničkim separatorom |
| Separator po elementu | [<,> a|b <x>|c] | Permutacija sa prilagođenim separatorima |
| Kombinacije | [<config> a|b|c] | Permutacija sa min./maks. brojem |
| Promenljiva | #set %var% = val | Višekratna zamena |
| Promenljiva (jednom po renderu) | #def %var% = val | Razrešava se jednom po renderu |
| Uslov | {?VAR?then|else} | then ako je truthy; inače else |
| Plural | {plural %n%: varijanta|varijante|varijanti} | Slaže oblik reči sa brojem, po lokalu |
| Uključivanje | #include "slug" | Ugradi drugi šablon |
| Komentar | /#...#/ | Uklanja se iz rezultata |
Sintaksa je kompatibilna sa standardom Generating The Web (GTW).