Nested Spintax
Wie Verschachtelung flaches Spinning in eine leistungsfähige Template-Engine verwandelt — und warum der Spintax.Net-Ansatz der Standard ist.
Was ist Nested Spintax?
Normaler Spintax wählt eine zufällige Option aus einer Liste: {red|blue|green} erzeugt eine von drei Farben. Nested Spintax platziert Spintax innerhalb von Spintax — wie eine Matroschka-Puppe, bei der jede Schicht mehr Variation enthüllt.
Wenn die Engine verschachtelte Strukturen antrifft, löst sie von der innersten Expression nach außen auf. Die inneren geschweiften Klammern werden zuerst ausgewertet, und ihr Ergebnis wird Teil der äußeren Expression.
{red|{dark|light} blue} car
Hier wird {dark|light} zuerst aufgelöst (z. B. dark) und ergibt {red|dark blue}. Dann wählt die äußere Aufzählung eine Option: red oder dark blue.
Warum Verschachtelung wichtig ist
Ohne Verschachtelung sind Ihre Optionen flach. Drei Enumerationen mit je drei Optionen ergeben 3 + 3 + 3 = 9 Fragmente. Mit Verschachtelung kombinieren sich dieselben Elemente multiplikativ: 3 × 3 × 3 = 27 einzigartige Varianten aus einer einzigen kompakten Vorlage.
Dieses exponentielle Wachstum ist der Schlüssel zur Erzeugung wirklich einzigartiger Inhalte. Eine mäßig komplexe Vorlage mit verschachtelten Enumerationen und Permutationen kann Tausende oder Millionen unterschiedlicher Ausgaben erzeugen — alles aus einer einzigen sorgfältig erstellten Quelle.
Häufige Einschränkungen anderer Tools
Die meisten Spintax-Tools beherrschen nur die Grundlagen. Hier ist, was typischerweise schiefgeht:
- Nur Enum-in-Enum — sie unterstützen
{a|{b|c}}, aber nichts anderes. Keine Permutationen, keine Variablen, keine Includes innerhalb anderer Elemente. - Tiefenlimits — viele Parser versagen nach 2–3 Verschachtelungsebenen und erzeugen stillschweigend fehlerhafte Ausgaben.
- Keine Bereinigung — nach dem Auflösen verschachtelter Strukturen kollabieren Leerzeichen, verdoppelt sich Interpunktion, bricht die Groß-/Kleinschreibung. Das Ergebnis erfordert manuelle Bearbeitung.
- Keine Kombinierbarkeit — ohne Variablen und Includes ist jede Vorlage eine Insel. Die Wiederverwendung gemeinsamer Blöcke bedeutet Copy-Paste.
Der Spintax.Net-Ansatz
Spintax.Net implementiert Verschachtelung als erstklassiges Feature, nicht als Nachgedanke. Fünf Designentscheidungen machen es möglich:
- Beliebige Tiefe — es gibt kein Verschachtelungslimit. Zehn Ebenen tief funktioniert genauso wie zwei.
- Elementübergreifende Verschachtelung — Enumerationen innerhalb von Permutationen, Permutationen innerhalb von Enumerationen, Variablen mit verschachtelten Strukturen, Includes, die ganze verschachtelte Vorlagen einbetten. Jedes Element innerhalb jedes anderen.
- Auflösung von innen nach außen — die Engine löst immer von der tiefsten Ebene nach außen auf. Das macht die Auswertung vorhersagbar und debuggbar.
- Intelligente Nachbearbeitung — nachdem alle Verschachtelungen aufgelöst sind, korrigiert die Engine automatisch die Groß-/Kleinschreibung, kollabiert doppelte Leerzeichen, korrigiert Interpunktionsabstände und behandelt Satzgrenzen. Die Ausgabe ist sauberer Text, keine rohe Verkettung.
- Sicherheit — Erkennung zirkulärer Referenzen bei
#includeverhindert Endlosschleifen. Variablen-Scope-Regeln (Runtime > lokal > global) verhindern versehentliches Überschreiben.
Von einfach bis fortgeschritten
1. Aufzählung in Aufzählung
{{premium|luxury} sedan|{compact|mid-size} SUV}
Innere Aufzählungen werden zuerst aufgelöst, dann wählt die äußere das Ergebnis. Mögliche Ausgaben: premium sedan, luxury sedan, compact SUV, mid-size SUV.
2. Aufzählung in Permutation
[<minsize=2;maxsize=3;sep=", ";lastsep=" and "> {red|blue} apples|{big|small} oranges|bananas]
Jedes Permutationselement enthält seine eigene Aufzählung. Die Engine löst zuerst die inneren Aufzählungen auf, mischt dann und fügt zusammen. Beispielausgabe: blue apples, bananas and small oranges.
3. #set-Variablen mit verschachteltem Spintax
#set %product% = {{premium|budget} {laptop|tablet}|{smart|classic} phone}
#set %action% = {Buy|Get|Order}
%action% your new %product% today!
#set ist ein Makro: Es speichert das verschachtelte Spintax unaufgelöst und würfelt es bei jeder Referenz neu — zwei %product%-Erwähnungen können also zwei verschiedene Produkte ergeben. Kombiniert mit mehreren Variablen multipliziert sich die Variantenzahl rasant.
4. #def — einmal würfeln, überall gültig
#def %brand% = {{Nord|Prime} Tools|Acme {Labs|Works}}
%brand% ships today. Order %brand% now!
#def löst sein verschachteltes Spintax einmal pro Render auf und hält das Ergebnis bei jeder Referenz — hier nennen beide Erwähnungen dieselbe Marke. Verwenden Sie #def, wenn wiederholte Referenzen übereinstimmen müssen (Marken, Zähler); #set, wenn jede Referenz für sich variieren soll.
5. Bedingungen um verschachtelte Blöcke
{?PLAN?{Upgrade to|Unlock} {Pro|Premium} features|{Try|Start with} the free tier}
Der {?VAR?then|else}-Pre-Pass wählt den Zweig danach, ob %PLAN% einen Wert hat — vor allen Zufallsauswahlen. Der verworfene Zweig fällt komplett weg: Nichts darin wird ausgewertet oder gewürfelt.
6. Plurale mit verschachteltem Zähler
#def %n% = {2|5|21}
Renders %n% {plural %n%: variant|variants} per click.
Der Zähler ist selbst Spintax — und seine Variable muss #def sein, nicht #set: Die Form wird gewählt, nachdem der Zähler aufgelöst ist, und ein Makro wäre in dem Moment noch unaufgelöstes Spintax. Wie viele Formen anzugeben sind, entscheidet die Render-Locale: zwei im Deutschen oder Englischen, drei im Russischen oder Ukrainischen.
7. Includes mit Verschachtelung
/# main template #/
#include "hero-text"
{Check out|Discover|Explore} our [<, > features|plans|pricing].
Die eingebundene Vorlage kann selbst Aufzählungen, Permutationen, Variablen und sogar weitere Includes enthalten. Die Erkennung zirkulärer Referenzen hält alles sicher.
KI + Nested Spintax
Große Sprachmodelle sind hervorragend im Schreiben komplexer verschachtelter Vorlagen. Ein einziger Prompt kann eine Vorlage mit mehreren Verschachtelungsebenen, wertgesteuerten Bedingungsblöcken ({?VAR?…}), locale-bewussten Pluralen und wiederverwendbaren Abschnitten über Includes erzeugen.
Der Workflow ist einfach: Verwenden Sie KI, um die Vorlage einmal zu erstellen, dann verwenden Sie Spintax, um einzigartige Varianten günstig für immer zu generieren. Ein API-Aufruf, um die Vorlage zu erstellen. Null API-Aufrufe, um jede Variante zu generieren. Nested Spintax macht dies wirtschaftlich tragfähig — je tiefer die Verschachtelung, desto mehr einzigartige Ausgaben pro Vorlage.
Erste Schritte
Bereit, Nested Spintax in Ihren Projekten zu verwenden? Probieren Sie es live im Playground — fügen Sie ein beliebiges Beispiel von oben ein und sehen Sie zu, wie es aufgelöst wird. Die Syntaxreferenz enthält die vollständige Spezifikation, und für die Produktion wählen Sie eine der vier Open-Source-Engines — oder das WordPress-Plugin, wenn das Ihr Runtime ist.