Укладзены Spintax

Як укладзенасць ператварае простае кручэнне ў магутны шаблонізатар — і чаму падыход Spintax.Net стаў стандартам.

Што такое ўкладзены Spintax?

Звычайны spintax выбірае выпадковы варыянт са спісу: {чырвоны|сіні|зялёны} дае адзін з трох колераў. Укладзены spintax кладзе spintax унутр spintax — як матрошка, дзе кожны слой адкрывае ўнутры яшчэ больш варыяцый.

Калі рухавік сустракае ўкладзеныя структуры, ён разгортвае іх ад самага глыбокага выразу вонкі. Унутраныя фігурныя дужкі вылічаюцца першымі, і іх вынік становіцца часткай знешняга выразу.

{red|{dark|light} blue} car

Тут {dark|light} разгортваецца першым (напрыклад, dark), даючы {red|dark blue}. Затым знешні пералік выбірае адзін варыянт: red ці dark blue.

Чаму ўкладзенасць важная

Без укладзенасці вашы варыянты плоскія. Тры пералікі па тры варыянты кожны даюць 3 + 3 + 3 = 9 фрагментаў. З укладзенасцю тыя ж элементы камбінуюцца мультыплікатыўна: 3 × 3 × 3 = 27 унікальных варыянтаў з аднаго кампактнага шаблона.

Гэты экспаненцыйны рост — ключ да генерацыі па-сапраўднаму ўнікальнага кантэнту. Умерана складаны шаблон з укладзенымі пералікамі і перастаноўкамі можа стварыць тысячы ці мільёны розных вынікаў — і ўсё з адной старанна складзенай крыніцы.

Тыповыя абмежаванні іншых інструментаў

Большасць інструментаў для spintax спраўляюцца толькі з асновамі. Вось што звычайна ідзе не так:

  • Толькі пералік у пераліку — яны падтрымліваюць {a|{b|c}}, але больш нічога. Няма перастановак, зменных, уключэнняў унутры іншых элементаў.
  • Абмежаванні глыбіні — многія парсеры ламаюцца пасля 2–3 узроўняў укладзенасці, моўчкі выдаючы пашкоджаны вынік.
  • Няма ачысткі — пасля разгортвання ўкладзеных структур прабелы зліпаюцца, пунктуацыя дублюецца, вялікія літары ламаюцца. Вынік патрабуе ручнога рэдагавання.
  • Няма кампазіцыі — без зменных і ўключэнняў кожны шаблон — гэта востраў. Паўторнае выкарыстанне агульных блокаў азначае капіяванне і ўстаўку.

Падыход Spintax.Net

Spintax.Net рэалізуе ўкладзенасць як першакласную магчымасць, а не як дадатак. Пяць праектных рашэнняў робяць гэта магчымым:

  1. Адвольная глыбіня — абмежаванняў на ўкладзенасць няма. Дзесяць узроўняў працуюць гэтак жа, як два.
  2. Міжэлементная ўкладзенасць — пералікі ўнутры перастановак, перастаноўкі ўнутры пералікаў, зменныя з укладзенымі структурамі, уключэнні, што ўбудоўваюць цэлыя ўкладзеныя шаблоны. Любы элемент унутры любога іншага.
  3. Разгортванне знутры вонкі — рухавік заўсёды разгортвае ад самага глыбокага ўзроўню вонкі. Гэта робіць вылічэнне прадказальным і зручным для адладкі.
  4. Разумная постапрацоўка — пасля разгортвання ўсёй укладзенасці рухавік аўтаматычна выпраўляе вялікія літары, прыбірае падвойныя прабелы, карэктуе пунктуацыю і апрацоўвае межы сказаў. На выхадзе — чысты тэкст, а не сырая канкатэнацыя.
  5. Бяспека — выяўленне цыклічных спасылак для #include прадухіляе бясконцыя цыклы. Правілы вобласці бачнасці зменных (runtime > local > global) прадухіляюць выпадковыя перазапісы.

Ад простага да складанага

1. Пералік у пераліку

{{premium|luxury} sedan|{compact|mid-size} SUV}

Унутраныя пералікі разгортваюцца першымі, затым знешні выбірае вынік. Магчымыя вынікі: premium sedan, luxury sedan, compact SUV, mid-size SUV.

2. Пералік унутры перастаноўкі

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

Кожны элемент перастаноўкі змяшчае ўласны пералік. Рухавік спачатку разгортвае ўнутраныя пералікі, затым перамешвае і аб’ядноўвае. Прыклад выніку: blue apples, bananas and small oranges.

3. Зменныя #set з укладзеным spintax

#set %product% = {{premium|budget} {laptop|tablet}|{smart|classic} phone}
#set %action% = {Buy|Get|Order}

%action% your new %product% today!

#set — макрас: ён захоўвае ўкладзены spintax неразгорнутым і перакідвае яго пры кожнай спасылцы, таму два згадванні %product% могуць даць два розныя прадукты. У спалучэнні з некалькімі зменнымі колькасць варыянтаў расце імкліва.

4. #def — кідок адзін раз, вынік усюды

#def %brand% = {{Nord|Prime} Tools|Acme {Labs|Works}}

%brand% ships today. Order %brand% now!

#def разгортвае ўкладзены spintax адзін раз за рэндэр і трымае вынік ва ўсіх спасылках — тут абодва згадванні называюць той самы брэнд. Выкарыстоўвайце #def, калі паўторныя спасылкі павінны супадаць (брэнды, лічыльнікі); #set — калі кожная спасылка павінна вар’іравацца сама па сабе.

5. Умовы вакол укладзеных блокаў

{?PLAN?{Upgrade to|Unlock} {Pro|Premium} features|{Try|Start with} the free tier}

Pre-pass {?VAR?then|else} выбірае галіну па тым, ці ёсць значэнне ў %PLAN%, — да любых выпадковых выбараў. Прайграная галіна адкідваецца цалкам: нішто ўнутры яе не вылічаецца і не перакідваецца.

6. Плюралы з укладзеным лічыльнікам

#def %n% = {2|5|21}

Renders %n% {plural %n%: variant|variants} per click.

Лічыльнік сам з’яўляецца spintax — і яго зменная павінна быць #def, а не #set: форма выбіраецца пасля разгортвання лічыльніка, а макрас у гэты момант усё яшчэ неразгорнуты spintax. Колькі формаў указваць, вырашае лакаль рэндэра: у англійскай дзве, у беларускай ці рускай — тры.

7. Уключэнні з укладзенасцю

/#  main template  #/
#include "hero-text"

{Check out|Discover|Explore} our [<, > features|plans|pricing].

Уключаны шаблон можа сам змяшчаць пералікі, перастаноўкі, зменныя і нават далейшыя ўключэнні. Выяўленне цыклічных спасылак захоўвае ўсё ў бяспецы.

AI + укладзены Spintax

Вялікія моўныя мадэлі выдатна спраўляюцца з напісаннем складаных укладзеных шаблонаў. Адзін промпт можа стварыць шаблон з некалькімі ўзроўнямі ўкладзенасці, умоўнымі блокамі паводле значэння ({?VAR?…}), плюраламі з улікам лакалі і шматразовымі секцыямі праз уключэнні.

Працоўны працэс просты: выкарыстайце AI для стварэння шаблона адзін раз, а далей выкарыстоўвайце Spintax для генерацыі ўнікальных варыянтаў амаль бясплатна. Адзін выклік API для стварэння шаблона. Нуль выклікаў API для генерацыі кожнага варыянта. Укладзены spintax робіць гэта эканамічна апраўданым — чым глыбейшая ўкладзенасць, тым больш унікальных вынікаў на шаблон.

Пачатак працы

Гатовы выкарыстоўваць укладзены spintax у сваіх праектах? Паспрабуйце ўжывую ў пясочніцы — устаўце любы прыклад вышэй і паглядзіце, як ён разгортваецца. Поўная спецыфікацыя — у даведніку сінтаксісу, а для прадакшну выберыце адзін з чатырох open-source рухавікоў — або плагін для WordPress, калі ваш рантайм — WordPress.