Référence de syntaxe Spintax

Référence complète du balisage de modèles spintax. La syntaxe est compatible avec le standard Generating The Web (GTW).

Énumérations { }

Sélectionne aléatoirement une option dans la liste.

{option1|option2|option3}

Exemples

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

Règles

  • Délimiteurs : { et }
  • Séparateur : |
  • Prend en charge l'imbrication à profondeur arbitraire
  • Les options vides sont valides (produisent une chaîne vide)
  • La résolution va de l'expression la plus interne vers l'extérieur

Permutations [ ]

Sélectionne N éléments, les mélange et les joint avec des séparateurs.

Permutations simples

Tous les éléments inclus, séparés par des espaces :

[1|2|3|4]

Exemples de sortie : 1 4 3 2, 2 3 4 1, 3 2 4 1

Avec séparateur

Séparateur uniforme spécifié dans < > au début :

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

Exemples de sortie : 2, 1, 4, 3, 4, 3, 2, 1

Important : Pas d'espace entre [ et <séparateur>.

Séparateurs par élément

Chaque option peut avoir son propre séparateur défini avec <sep> avant le | précédent. Le séparateur voyage avec son élément lors du mélange.

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

Exemples de sortie : 1, 3, 2 and 4, 3, 1, 2 and 4

Espacement automatique : Les séparateurs textuels comme <and> ou <or> sont automatiquement entourés d'espaces : <and> produit  and . Les séparateurs de ponctuation (<,>) ne sont pas complétés.

Permutations avec combinaisons

Nombre minimum/maximum d'éléments et séparateurs configurables :

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

Exemples de sortie : apple, plum and orange, apple and apricot, orange

Paramètres de configuration

ParamètrePar défautDescription
minsizetotal de tousNombre minimum d'éléments à sélectionner
maxsizetotal de tousNombre maximum d'éléments à sélectionner
sep" " (espace)Séparateur entre les éléments non finaux
lastsepidentique à sepSéparateur avant le dernier élément

Règles de permutation

  • Délimiteurs : [ et ]
  • Le bloc de configuration <...> doit suivre immédiatement [
  • Les paramètres de configuration sont séparés par des points-virgules
  • Les valeurs de chaîne dans la configuration sont entre guillemets : sep=", "
  • Les énumérations et permutations peuvent être imbriquées dans les options
  • Les éléments HTML peuvent être des options

Variables %var%

Définit une variable réutilisable qui est substituée partout où elle apparaît.

#set %VARIABLE_NAME% = value or spintax structure

Exemples

#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%.

Règles des variables

  • #set doit commencer au début d'une ligne
  • Les noms de variables sont encadrés par % : %nom%
  • Les noms de variables sont alphanumériques + underscore
  • Les valeurs peuvent contenir toute syntaxe spintax (énumérations, permutations, autres variables)
  • Les variables sont développées lors du référencement, pas lors de la définition (évaluation paresseuse)
  • Les lignes #set sont supprimées de la sortie

Portées des variables dans le plugin WordPress

Le plugin prend en charge trois portées de variables. Lorsqu'un même nom existe dans plusieurs portées, la portée la plus forte l'emporte :

  1. Variables d'exécution (la plus forte) — passées via shortcode : [spintax slug="greeting" name="Alice"]
  2. Variables locales — définies avec #set dans le modèle
  3. Variables globales (la plus faible) — définies sur la page Réglages

Conditionnels {?VAR?then|else}

Les conditionnels sont l'extension distinctive de spintax.net à la famille GTW. Là où {a|b} est un tirage aléatoire uniforme qui ignore les variables, {?VAR?then|else} choisit selon que %VAR% ait une valeur ou non.

Utilisez-le pour des choix dictés par la valeur : afficher une ligne sur l'offre gratuite uniquement si elle existe, rendre un bloc crypto uniquement si le casino accepte la crypto, masquer un CTA qui ne s'applique pas.

Le pré-traitement s'exécute avant l'expansion de %var% et avant le sélecteur de branche aléatoire, donc une branche fausse est entièrement écartée — rien à l'intérieur n'est évalué.

Formes

{?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 et falsy

La règle est volontairement plus simple qu'en JavaScript — truthy = au moins un caractère non-espace :

Valeur de %VAR%Truthy ?
non déclaréefalsy
chaîne videfalsy
uniquement des espacesfalsy
"0", "false"truthy (non vides)
tout autre texte ou HTMLtruthy

Règles des conditionnels

  • Les noms de variables suivent la même regex que %var% (insensibles à la casse)
  • Le préfixe ! inverse la vérification : {?!VAR?absent}
  • Le premier | de profondeur 0 sépare then et else ; les suivants restent littéraux dans else
  • Les conditionnels imbriqués s'évaluent de l'extérieur — les branches fausses court-circuitent
  • La logique composée (&&, ||, comparaisons) n'est pas supportée — pré-calculez une variable garde dans l'assembleur
  • Les formes malformées ({??yes}, {?VAR}) ne lèvent jamais d'exception — le playground les signale comme avertissements
  • Approfondir : voir le guide spintax conditionnel avec exemples et anti-patterns

Includes #include

Intègre un autre modèle à la position de la directive.

#include "hero-text"

Règles d'inclusion

  • La référence du modèle est entre guillemets doubles
  • Résolution par slug de modèle ou ID numérique
  • Les modèles inclus peuvent contenir leurs propres variables et spintax
  • Les inclusions récursives sont prises en charge
  • Les références circulaires sont détectées et bloquées
  • Les modèles enfants héritent des variables globales et d'exécution mais pas des locales #set du parent

Commentaires /#...#/

Le texte entre les marqueurs de commentaire est supprimé de la sortie avant tout autre traitement.

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

Règles des commentaires

  • Délimiteur de début : /#
  • Délimiteur de fin : #/
  • Peuvent s'étendre sur plusieurs lignes
  • Ne peuvent pas être imbriqués
  • Supprimés avant tout autre traitement

Imbrication

Tous les éléments de syntaxe peuvent être imbriqués les uns dans les autres à profondeur arbitraire :

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

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

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

Post-traitement

Le moteur applique une correction automatique du texte après la génération :

  1. Protège les URLs, e-mails, domaines, décimales et abréviations de la capitalisation
  2. Supprime les espaces et tabulations en double
  3. Supprime les espaces avant la ponctuation (, . ! ?)
  4. Ajoute un espace après la ponctuation si manquant
  5. Met en majuscule la première lettre de la sortie (en ignorant les balises HTML)
  6. Met en majuscule après la ponctuation de fin de phrase
  7. Met en majuscule après les balises HTML de niveau bloc
  8. Met en majuscule après les sauts de ligne
  9. Restaure les marqueurs protégés

Résumé de la syntaxe

FonctionnalitéSyntaxeComportement
Énumération{a|b|c}Choisit une option aléatoire
Permutation[a|b|c]Choisit N, mélange, joint
Séparateur[<sep> a|b|c]Permutation avec séparateur uniforme
Sep par élément[<,> a|b <x>|c]Permutation avec séparateurs personnalisés
Combinaisons[<config> a|b|c]Permutation avec nombre min/max
Variable#set %var% = valSubstitution réutilisable
Conditionnel{?VAR?then|else}then si vrai ; else si faux
Include#include "slug"Intègre un autre modèle
Commentaire/#...#/Supprimé de la sortie

La syntaxe est compatible avec le standard Generating The Web (GTW).