Referência de sintaxe Spintax

Referência completa para a marcação de templates spintax. A sintaxe é compatível com o padrão Generating The Web (GTW).

Enumerações { }

Seleciona aleatoriamente uma opção da lista.

{option1|option2|option3}

Exemplos

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

Regras

  • Delimitadores: { e }
  • Separador: |
  • Suporta aninhamento em profundidade arbitrária
  • Opções vazias são válidas (produzem string vazia)
  • A resolução vai da expressão mais interna para fora

Permutações [ ]

Seleciona N elementos, embaralha e junta com separadores.

Permutações simples

Todos os elementos incluídos, separados por espaços:

[1|2|3|4]

Exemplos de saída: 1 4 3 2, 2 3 4 1, 3 2 4 1

Com separador

Separador uniforme especificado em < > no início:

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

Exemplos de saída: 2, 1, 4, 3, 4, 3, 2, 1

Importante: Sem espaço entre [ e <separador>.

Separadores por elemento

Cada opção pode ter seu próprio separador definido com <sep> antes do | anterior. O separador viaja com seu elemento durante a mistura.

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

Exemplos de saída: 1, 3, 2 and 4, 3, 1, 2 and 4

Espaçamento automático: Separadores de palavras como <and> ou <or> são automaticamente preenchidos com espaços: <and> produz  and . Separadores de pontuação (<,>) não são preenchidos.

Permutações com combinações

Quantidade mínima/máxima de elementos e separadores configuráveis:

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

Exemplos de saída: apple, plum and orange, apple and apricot, orange

Parâmetros de configuração

ParâmetroPadrãoDescrição
minsizetotal de todosNúmero mínimo de elementos a selecionar
maxsizetotal de todosNúmero máximo de elementos a selecionar
sep" " (espaço)Separador entre itens não finais
lastsepigual a sepSeparador antes do último elemento

Regras de permutação

  • Delimitadores: [ e ]
  • O bloco de configuração <...> deve seguir imediatamente [
  • Os parâmetros de configuração são separados por ponto e vírgula
  • Valores de string na configuração estão entre aspas: sep=", "
  • Enumerações e permutações podem ser aninhadas dentro das opções
  • Elementos HTML podem ser opções

Variáveis %var%

Define uma variável reutilizável que é substituída onde quer que apareça.

#set %VARIABLE_NAME% = value or spintax structure

Exemplos

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

Regras de variáveis

  • #set deve iniciar no começo de uma linha
  • Nomes de variáveis são delimitados por %: %nome%
  • Nomes de variáveis são alfanuméricos + underscore
  • Valores podem conter qualquer sintaxe spintax (enumerações, permutações, outras variáveis)
  • Variáveis são expandidas quando referenciadas, não quando definidas (avaliação preguiçosa)
  • Linhas #set são removidas da saída

Escopos de variáveis no plugin WordPress

O plugin suporta três escopos de variáveis. Quando o mesmo nome existe em múltiplos escopos, o escopo mais forte prevalece:

  1. Variáveis de runtime (mais forte) — passadas via shortcode: [spintax slug="greeting" name="Alice"]
  2. Variáveis locais — definidas com #set dentro do template
  3. Variáveis globais (mais fraco) — definidas na página de Configurações

Condicionais {?VAR?then|else}

Os condicionais são a extensão distintiva do spintax.net à família GTW. Enquanto {a|b} é uma escolha aleatória uniforme que ignora variáveis, {?VAR?then|else} escolhe com base em %VAR% ter ou não um valor.

Use-o para escolhas orientadas por valor: mostrar uma linha de plano gratuito apenas quando existir, renderizar um bloco cripto apenas se o cassino aceitar cripto, ocultar um CTA não aplicável.

O pré-passo roda antes da expansão de %var% e antes do seletor aleatório de ramos, então um ramo falsy é totalmente descartado — nada em seu interior é avaliado.

Formas

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

A regra é deliberadamente mais simples que em JavaScript — truthy = pelo menos um caractere não-espaço:

Valor de %VAR%Truthy?
não declaradafalsy
string vaziafalsy
somente espaços em brancofalsy
"0", "false"truthy (não vazias)
qualquer outro texto ou HTMLtruthy

Regras dos condicionais

  • Nomes de variáveis seguem a mesma regex que %var% (sem distinção de maiúsculas)
  • O prefixo ! inverte a verificação: {?!VAR?ausente}
  • O primeiro | de profundidade 0 separa then de else; os seguintes ficam literais em else
  • Condicionais aninhados são avaliados de fora para dentro — ramos falsy curto-circuitam
  • Lógica composta (&&, ||, comparações) não é suportada — pré-calcule uma variável guarda no assemblador
  • Formas malformadas ({??yes}, {?VAR}) nunca lançam — o playground as marca como avisos
  • Aprofundar: veja o guia de spintax condicional com exemplos e anti-padrões

Includes #include

Incorpora outro template na posição da diretiva.

#include "hero-text"

Regras de include

  • A referência do template está entre aspas duplas
  • Resolve por slug do template ou ID numérico
  • Templates incluídos podem conter suas próprias variáveis e spintax
  • Includes recursivos são suportados
  • Referências circulares são detectadas e bloqueadas
  • Templates filhos herdam variáveis globais e de runtime, mas não as locais #set do pai

Comentários /#...#/

O texto entre marcadores de comentário é removido da saída antes de qualquer outro processamento.

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

Regras de comentários

  • Delimitador de início: /#
  • Delimitador de fim: #/
  • Podem abranger múltiplas linhas
  • Não podem ser aninhados
  • Removidos antes de qualquer outro processamento

Aninhamento

Todos os elementos de sintaxe podem ser aninhados uns dentro dos outros em profundidade arbitrária:

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

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

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

Pós-processamento

O motor aplica correção automática de texto após a geração:

  1. Protege URLs, emails, domínios, decimais e abreviações da capitalização
  2. Elimina espaços e tabulações duplicados
  3. Remove espaços antes da pontuação (, . ! ?)
  4. Adiciona espaço após pontuação onde falta
  5. Capitaliza a primeira letra da saída (pulando tags HTML)
  6. Capitaliza após pontuação de fim de frase
  7. Capitaliza após tags HTML de nível de bloco
  8. Capitaliza após quebras de linha
  9. Restaura os marcadores protegidos

Resumo da sintaxe

RecursoSintaxeComportamento
Enumeração{a|b|c}Escolhe uma opção aleatória
Permutação[a|b|c]Escolhe N, embaralha, junta
Separador[<sep> a|b|c]Permutação com separador uniforme
Sep por elemento[<,> a|b <x>|c]Permutação com separadores personalizados
Combinações[<config> a|b|c]Permutação com contagem mín/máx
Variável#set %var% = valSubstituição reutilizável
Condicional{?VAR?then|else}then se truthy; else se falsy
Include#include "slug"Incorpora outro template
Comentário/#...#/Removido da saída

A sintaxe é compatível com o padrão Generating The Web (GTW).