Spintax 구문 참조
spintax 템플릿 마크업에 대한 완전한 참조. 구문은 Generating The Web (GTW) 표준과 호환됩니다.
열거 { }
목록에서 무작위로 하나의 옵션을 선택합니다.
{option1|option2|option3}
예제
{blue|grey|clear}
{|online|internet} casino ← empty option = sometimes nothing
{1X{S|s}lots} ← nested enumerations
{license {|#8048} from Curacao} ← nesting with empty option
규칙
- 구분자:
{및} - 구분자:
| - 임의의 깊이까지 중첩 지원
- 빈 옵션은 유효 (빈 문자열 생성)
- 가장 안쪽 표현식에서 바깥쪽으로 해석
순열 [ ]
N개의 요소를 선택, 셔플, 구분자로 결합합니다.
단순 순열
모든 요소 포함, 공백으로 구분:
[1|2|3|4]
출력 예: 1 4 3 2, 2 3 4 1, 3 2 4 1
구분자 포함
시작 부분의 < >에 통일 구분자 지정:
[<, > 1|2|3|4]
출력 예: 2, 1, 4, 3, 4, 3, 2, 1
중요: [과 <구분자> 사이에 공백 없음.
요소별 구분자
각 옵션은 이전 | 앞에 <sep>로 고유한 구분자를 정의할 수 있습니다. 구분자는 셔플 시 해당 요소와 함께 이동합니다.
[<, > 1|2|3 < and >|4]
출력 예: 1, 3, 2 and 4, 3, 1, 2 and 4
자동 띄어쓰기: <and> 또는 <or>와 같은 단어 구분자는 자동으로 공백이 추가되어 <and>는 and 가 됩니다. 문장부호 구분자(<,>)는 추가되지 않습니다.
조합이 있는 순열
구성 가능한 최소/최대 요소 수와 구분자:
[<minsize=1;maxsize=3;sep=", ";lastsep=" and "> apple|plum|orange|apricot]
출력 예: apple, plum and orange, apple and apricot, orange
구성 매개변수
| 매개변수 | 기본값 | 설명 |
|---|---|---|
minsize | 전체 수 | 선택할 최소 요소 수 |
maxsize | 전체 수 | 선택할 최대 요소 수 |
sep | " " (공백) | 마지막이 아닌 항목 간 구분자 |
lastsep | sep과 동일 | 마지막 요소 앞 구분자 |
순열 규칙
- 구분자:
[및] - 구성 블록
<...>은[바로 뒤에 와야 합니다 - 구성 매개변수는 세미콜론으로 구분
- 구성의 문자열 값은 따옴표로 감쌈:
sep=", " - 열거와 순열은 옵션 내에서 중첩 가능
- HTML 요소도 옵션이 될 수 있음
변수 %var%
나타나는 곳에서 치환되는 재사용 가능한 변수를 정의합니다.
#set %VARIABLE_NAME% = value or spintax structure
예제
#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%.
변수 규칙
#set은 줄의 시작에 와야 합니다- 변수 이름은
%로 감쌈:%name% - 변수 이름은 영숫자 + 밑줄
- 값에는 모든 spintax 구문 포함 가능 (열거, 순열, 다른 변수)
- 변수는 정의 시가 아닌 참조 시에 확장 (지연 평가)
#set줄은 출력에서 제거
WordPress 플러그인의 변수 스코프
플러그인은 세 가지 변수 스코프를 지원합니다. 같은 이름이 여러 스코프에 존재할 때, 가장 강한 스코프가 우선합니다:
- 런타임 변수 (가장 강함) — 쇼트코드로 전달:
[spintax slug="greeting" name="Alice"] - 로컬 변수 — 템플릿 내에서
#set으로 정의 - 글로벌 변수 (가장 약함) — 설정 페이지에서 정의
조건문 {?VAR?then|else}
조건문은 GTW 계열에 대한 spintax.net 의 차별화된 확장입니다. {a|b} 는 변수를 보지 않는 균등 랜덤 선택이지만, {?VAR?then|else} 는 %VAR% 에 값이 있는지에 따라 선택합니다.
값 기반 선택에 사용하세요: 무료 등급이 있을 때만 무료 등급 라인을 표시, 카지노가 암호화폐를 받을 때만 암호 뱅킹 블록을 렌더링, 적용되지 않는 CTA 를 숨기기.
프리패스는 %var% 확장과 랜덤 분기 선택기 이전에 실행되므로 falsy 분기는 완전히 폐기됩니다 — 내부의 어떤 것도 평가되지 않습니다.
형식
{?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 와 falsy
규칙은 JavaScript 보다 의도적으로 단순합니다 — truthy = 최소 하나의 비공백 문자:
%VAR% 의 값 | Truthy? |
|---|---|
| 선언되지 않음 | falsy |
| 빈 문자열 | falsy |
| 공백만 | falsy |
"0", "false" | truthy (비어있지 않음) |
| 기타 텍스트 또는 HTML | truthy |
조건문 규칙
- 변수 이름은
%var%와 같은 regex 를 따름 (대소문자 구분 없음) !접두사가 검사를 반전:{?!VAR?없음}- 깊이 0 의 첫 번째
|가then과else를 구분; 이후는else안에서 리터럴 - 중첩 조건문은 바깥부터 평가 — falsy 분기는 short-circuit
- 복합 논리(
&&,||, 비교)는 미지원 — 어셈블러에서 가드 변수를 미리 계산 - 잘못된 형식(
{??yes},{?VAR})은 절대 throw 하지 않음 — 플레이그라운드가 경고로 표시 - 심화: 조건문 spintax 가이드 에 예제와 안티패턴
인클루드 #include
디렉티브 위치에 다른 템플릿을 삽입합니다.
#include "hero-text"
인클루드 규칙
- 템플릿 참조는 큰따옴표로 감쌈
- 템플릿 슬러그 또는 숫자 ID로 해석
- 포함된 템플릿은 자체 변수와 spintax를 포함할 수 있음
- 재귀적 인클루드 지원
- 순환 참조 감지 및 차단
- 자식 템플릿은 글로벌 및 런타임 변수를 상속하지만 부모의
#set로컬 변수는 상속하지 않음
주석 /#...#/
주석 마커 사이의 텍스트는 다른 처리 전에 출력에서 제거됩니다.
/#
This is a comment section.
It can span multiple lines.
It won't appear in output.
#/
주석 규칙
- 시작 구분자:
/# - 종료 구분자:
#/ - 여러 줄에 걸칠 수 있음
- 중첩 불가
- 다른 처리 전에 제거
중첩
모든 구문 요소는 임의의 깊이로 서로 중첩할 수 있습니다:
{option1|[<, > sub1|sub2|sub3]|option3}
[<minsize=2;maxsize=3;sep=", ";lastsep=" and "> {red|blue} apples|{big|small} oranges|bananas]
#set %var% = {a|[b|c]}
후처리
엔진은 생성 후 자동 텍스트 교정을 적용합니다:
- URL, 이메일, 도메인, 소수, 약어를 대문자화로부터 보호
- 중복 공백 및 탭 제거
- 구두점 앞의 공백 제거 (
,.!?) - 구두점 뒤에 누락된 공백 추가
- 출력의 첫 글자를 대문자로 (HTML 태그 건너뜀)
- 문장 끝 구두점 뒤 대문자화
- 블록 수준 HTML 태그 뒤 대문자화
- 줄바꿈 뒤 대문자화
- 보호된 플레이스홀더 복원
구문 요약
| 기능 | 구문 | 동작 |
|---|---|---|
| 열거 | {a|b|c} | 무작위 옵션 선택 |
| 순열 | [a|b|c] | N개 선택, 셔플, 결합 |
| 구분자 | [<sep> a|b|c] | 통일 구분자 순열 |
| 요소별 구분자 | [<,> a|b <x>|c] | 사용자 정의 구분자 순열 |
| 조합 | [<config> a|b|c] | 최소/최대 수 순열 |
| 변수 | #set %var% = val | 재사용 가능한 치환 |
| 조건문 | {?VAR?then|else} | truthy면 then, falsy면 else |
| 인클루드 | #include "slug" | 다른 템플릿 삽입 |
| 주석 | /#...#/ | 출력에서 제거 |
구문은 Generating The Web (GTW) 표준과 호환됩니다.