Cheat sheet
The syntax of every tag, by group.
Conditions
case Renders the one branch whose {when} matches a value, with an {else} for none.
{case value} {when 'a'} ... {when 'b', 'c'} ... {/case}
{case value} {when 'a'} ... {else} ... {/case}
false The constant FALSE: its content is skipped and its @else@ part renders instead.
{false}
{false} ... {/false}
{false} ... @else@ ... {/false}
if Renders its content only when a condition holds, with elseif and else branches.
{if condition} ... {/if}
{if condition} ... {else} ... {/if}
{if condition} ... {elseif condition} ... {else} ... {/if}
ifchanged Renders its content when a value differs from the previous row of the loop around it - a heading per group.
{ifchanged value} ... {/ifchanged}
{ifchanged value, value} ... {/ifchanged}
{ifchanged value} ... @else@ ... {/ifchanged}
null The constant NULL: its content is dropped, the @else@ part too, and a null= option fires.
{null}
{null} ... {/null}
{null null='name'} ... {/null}
switch Answers the next value of a rotating list on every call - striped rows without a counter.
{switch 'odd', 'even'}
{switch 'red', 'green', 'blue'}
Loops and trees
branch Inside a {tree}: renders its content only when the current row has children, its @else@ part for a leaf.
{branch} ... {recurse} ... {/branch}
{branch} ... @else@ ... {/branch}
break Leaves a loop at once: the rest of the current pass is dropped and no further row follows.
{break}
{break 'name'}
cease Ends a loop gracefully: the current pass finishes, and no further row follows.
{cease}
{cease 'name'}
continue Skips the rest of the current pass of a loop and goes on with its next row.
{continue}
{continue 'name'}
recurse Inside a {tree}: renders the tree's body once more for the children of the current row.
{recurse}
tree Renders a tree of rows: its body for every row, and {recurse} renders it again for the row's children.
{tree 'rows'} ... {recurse} ... {/tree}
{tree data='rows', children='items'} ... {branch} ... {recurse} ... {/branch} ... {/tree}
{tree 'rows'} ... @else@ ... {/tree}
until Renders its content again and again until a condition becomes true.
{until condition} ... {/until}
{until} ... {/until condition}
while Renders its content again and again for as long as a condition holds.
{while condition} ... {/while}
{while} ... {/while condition}
Variables and stores
at Looks a value up in a data set by a path of names and conditions - the @ notation as a tag.
{at 'field@store'}
{at "path.key='value'.field@store"}
bool Reduces its content or a value to TRUE or FALSE and keeps it under a name, for a later {name} to test.
{bool 'name'} expression {/bool}
{bool 'name', value}
{name} ... @else@ ... {/name}
content Keeps a piece of template under a name instead of printing it, for a later {name} to render.
{content 'name'} ... {/content}
{content 'name', 'text'}
{content} ... {/content 'name'}
count Renders its content only when a named data set or page array holds at least one element.
{count 'name'} ... {/count}
{count 'name'} ... @else@ ... {/count}
data Turns its content - JSON, XML, YAML, CSV, a list or a range - into a named data set for a later tag to iterate.
{data 'name'} ... {/data}
{data 'name', type='csv'} ... {/data}
{data 'name', source}
{data} ... {/data 'name'}
set Assigns one or more variables, as globals that outlive the level the tag stands in.
{set $name = value}
{set $name = value, $other = value}
Database
array Runs a SQL query on the application database and repeats its content once per row.
{array "* from table where ..."} ... {/array}
{array "* from orders", name='orders'} ... {/array}
check Asks the application database whether a row exists, and renders its content only when one does.
{check "table where ..."} ... {/check}
{check "users where email='x@y.z'"} ... @else@ ... {/check}
collection Reads a folder of Markdown files from _content/ and repeats its content once per file, the front matter as fields.
{collection 'name'} ... {/collection}
{collection 'name', slug=$slug} ... @else@ ... {/collection}
{collection 'name', html} ... {/collection}
field Runs a SQL query on the application database and prints the single value it answers.
{field "column from table where ..."}
{field "count(*) from orders", name='orderCount'}
record Runs a SQL query on the application database and renders its content with the first row's columns as fields.
{record "* from table where ..."} ... {/record}
{record "* from users where id=5", name='user'} ... @else@ ... {/record}
Pages and execution
ajax Writes an empty div and a script that has the browser fetch another page into it after the page has loaded.
{ajax 'name'}
{ajax 'name', fragment='fragmentName'}
{ajax 'name', app='other'}
{ajax 'name', $colour = 'red'}
code Runs its content as PAD source in a separate engine pass and outputs what that pass produced.
{code} ... {/code}
{code sandbox} ... {/code}
{code reset} ... {/code}
{code clean} ... {/code}
{code function='name'} ... {/code}
{echo $snippet | code}
get Fetches another page of the application over HTTP, as a second request, and inserts its output.
{get 'name'}
{get 'name', $colour = 'red'}
live A region of the page that re-renders on the server when something in it is clicked, submitted or changed, and swaps itself in.
{live 'name'} ... <button pad-click="event" pad-value="value">...</button> ... {/live}
{live 'name'} ... <form pad-submit="event">...</form> ... {/live}
{live 'name'} ... <select name="field" pad-change="event">...</select> ... {/live}
pad A tag with no behaviour of its own: its content renders once, or per row with data=, carrying the generic options.
{pad} ... {/pad}
{pad data='store', name='rows'} ... {/pad}
{pad $name = 'value'} ... {/pad}
{pad} ... {/pad | upper}
page Renders another page of the application - its PHP and its template - in place of the tag.
{page 'dir/name'}
{page 'products/42'}
{page 'name', include=false}
{page 'name', sandbox}
{page 'name', reset}
{page 'name', clean}
{page 'name', function='name'}
{page 'name', app='other', ajax=false}
restart Abandons the page being built and renders another page in its place, in the same request.
{restart 'name'}
{restart 'name', $message = 'Saved'}
sandbox Runs its content as PAD source in an isolated pass that cannot see or leave behind anything of the page.
{sandbox} ... {/sandbox}
{sandbox function='name'} ... {/sandbox}
{echo $snippet | sandbox}
Forms and security
csrf The hidden form field holding the CSRF token of the visitor's session, or the bare token.
{csrf}
{csrf token}
flash The flash messages of this request - set with padFlash on the page before - one occurrence each.
{flash} {$message} {$type} {/flash}
{flash} ... @else@ ... {/flash}
{flash 'error'} {$message} {/flash}
form A form that posts back to the page, carrying the session's CSRF token and its own name, its fields refilling when it came back.
{form 'name'} ... {/form}
{form 'name', method='get', class='search'} ... {/form}
{form 'name', error='Please correct the errors below.'} ... {/form}
{form 'name', client, error} ... {/form}
input A form field with its label that refills from what its form sent and shows the error validation found for it.
{input 'name'}
{input 'email', type='email', label='E-mail', value='', id='mail', placeholder='you@example.org', required}
{input 'terms', type='checkbox', label='I agree', value='yes', checked}
{input 'email', type='email', label='E-mail', rules='required|email'}
nonce This request's Content-Security-Policy nonce, for a script or style the policy lets run.
{nonce}
textarea A text area with its label that refills from what its form sent and shows the error validation found for it.
{textarea 'message'}
{textarea 'message', label='Message', value='', id='msg', rows=6, required}
{textarea 'message', label='Message', rows=6, rules='required|max:2000'}
validator The browser's checker of the validation rules as one inline script, for a form a component draws.
{validator}
Users and access
auth Renders its content when a user is logged in, with the user's row as its data, and its else half for a guest.
{auth} ... {/auth}
{auth} Hello {$name} {else} ... {/auth}
{auth} ... @else@ ... {/auth}
can Renders its content when the user may do something a gate decides, and its else half when not.
{can 'ability'} ... {/can}
{can 'ability', $value} ... {else} ... {/can}
{rows}{can 'ability', $rows} ... {/can}{/rows}
cannot Renders its content when the user may not do something a gate decides - can turned round.
{cannot 'ability', $value} ... {/cannot}
{cannot 'ability', $value} ... {else} ... {/cannot}
feature Renders its content while a feature flag is on for this visitor, and its else half while it is off.
{feature 'flag'} ... {/feature}
{feature 'flag'} ... {else} ... {/feature}
guest Renders its content when nobody is logged in, and its else half for a user.
{guest} ... {/guest}
{guest} ... {else} ... {/guest}
Files
dir Lists the names in a directory, one occurrence each - the plain version of files.
{dir $path} {$dir} {/dir}
exists Renders its content when a file or directory is there, its else half when not.
{exists $path} ... {/exists}
{exists $path} ... @else@ ... {/exists}
file Writes its rendered content to a file under DATA/ instead of to the page.
{file dir='exports', name='orders', ext='csv'} ... {/file}
{file dir='reports', name='daily', ext='html', date, stamp, id=8} ... {/file}
files Scans a directory and iterates its entries, with path, file, ext, item and dir for each.
{files 'dir', base='app'} {$item} {$file} {$ext} {/files}
{files dir='dir', base='data', mask='*.txt', exclude='old*', recursive, onlyFiles, includeHidden} ... {/files}
{files 'dir', base='app', onlyDirs} ... {/files}
Network and mail
curl Fetches a URL and answers the body of the response, optionally kept in a cache for a number of seconds.
{curl 'https://example.com/data.json'}
{curl url='https://example.com/data.json', ttl=600}
{curl 'https://example.com/api', post='a=1&b=2', user='name', password=$secret}
{curl 'SELF://shop/?orders', $status='open'}
{curl 'https://example.com/api', get=$query, cookies=$jar, headers=$headers, options=$curlOptions}
mail Renders a template, or its own content, to an e-mail with an HTML and a text part, and sends it.
{mail to=$email, template='order', subject='Order confirmation'}
{mail to=$email, subject='Welcome', from='shop@example.com', cc='a@example.com', bcc='b@example.com', replyTo='help@example.com'} ... {/mail}
Output control
asset The address of a file of www/<app>/ with a version of its contents, safe behind a far-future cache header.
{asset 'file'}
{asset 'file', tag}
cache Keeps a named section of the page rendered for a number of seconds - the fragment cache.
{cache 'name'} ... {/cache}
{cache 'name', ttl=300, vary=$value} ... {/cache}
{anytag cache=3600, vary=$value} ... {/anytag}
close Writes a literal closing brace that the template engine does not read as the end of a tag.
{close}
echo Evaluates an expression and prints the result - the general output tag, and the one to put in front of a pipe.
{echo expression}
{echo expression | pipe | pipe}
flush Sends the page rendered so far to the browser at once, so it can load the stylesheets while a slow part below renders.
{flush}
foo A built-in demo tag that answers a fixed line, there to show how the type prefixes resolve a name.
{foo}
{pad:foo}
ignore Keeps PAD from reading the braces in its content as tags - for inline JavaScript, CSS, JSON and code samples.
{ignore} ... {/ignore}
nocache Marks a part of a cached page or {cache} section that renders again on every request, the hit included.
{nocache} ... {/nocache}
{cache 'name', ttl=300} ... {nocache} ... {/nocache} ... {/cache}
open Writes a literal opening brace that the template engine does not read as the start of a tag.
{open}
output Switches how the running request answers - a web page, the console, a file, a download, JSON or CSV.
{output 'type'}
reactData Writes the mount point of a React component, its data from a provider in _providers/ as JSON in an attribute.
{reactData id='products'}
{reactData id='products', provider='catalog', type='array'}
spaceless Takes out the whitespace between HTML tags, and at both ends of the content.
{spaceless} ... {/spaceless}
tidy Rewrites the HTML it wraps as tidied, indented markup through PHP's tidy extension.
{tidy} ... {/tidy}
trans Writes the text a key has in the _lang/ catalog of the request's locale, with plural forms and substitutions.
{trans 'key'}
{trans 'key', count=$n}
{trans 'key', name=$value, other=$value}
vite Links the scripts and stylesheets of a Vite build by the name of their source - or the dev server while it runs.
{vite 'src/main.js'}
{vite 'src/main.jsx', 'src/admin.js', react}
Text and formatting
attrs Writes HTML attributes from values - quoted and escaped, a true boolean attribute bare, a false one left out.
{attrs name=$value, other=$value}
{attrs required, aria-expanded=$open}
{attrs $array}
classes Builds a class list from fixed names and names that are in only while their condition holds.
{classes 'fixed names', name=condition, other=condition}
{classes $array}
countdown The time left until a moment, in words inside a time element - ticking every second in the browser when asked.
{countdown '2026-12-31 00:00'}
{countdown $moment, units=3, past='We are live!', live}
{countdown $moment, now='2026-10-08 12:00', format='j M Y'}
diff Shows what changed between two texts - word by word in the flow of the text, or line by line in one column or side by side.
{diff $old, $new}
{diff $old, $new, lines, from='Monday', to='Friday'}
{diff $old, $new, side, from='before', to='after'}
emoji An emoji by its GitHub or Slack shortcode, as a labelled image a screen reader names.
{emoji 'rocket'}
{emoji ':tada:', label='Party!'}
excerpt Cuts a long text to whole words with an ellipsis, centred on the first match of search words, every match marked.
{excerpt $text, words=40}
{excerpt $text, words=24, highlight=$q, ellipsis='...'}
{excerpt $html, words=30, html}
highlight Colours source code on the server - PAD, PHP, HTML, CSS, JavaScript, JSON, YAML, SQL or shell - with optional line numbers and marked lines.
{highlight 'lang'} ... {/highlight}
{highlight 'lang', lines, mark='3, 5-7'} ... {/highlight}
{highlight file='_data/products.json'}
lorem Placeholder text - Lorem ipsum and Latin words - in words, sentences or paragraphs, the same text for the same seed.
{lorem}
{lorem words=4}
{lorem sentences=2, seed=7}
{lorem paragraphs=3, sentences=4, varied}
markdown Renders its content, or the value of its parameter, as Markdown and writes the HTML.
{markdown $text}
{markdown} ... {/markdown}
{markdown html} ... {/markdown}
{markdown ignore} ... {/markdown}
source Shows the files behind a page as tabs, each coloured as highlight colours it - the code shown is the code that runs.
{source}
{source 'page', files='_lib/orders.php, www:orders.js'}
{source only='_tags/card.pad, www:card.js'}
timeago How long ago a moment was, in words, inside a time element that keeps the exact moment as its datetime and title.
{timeago $moment}
{timeago $moment, now='2026-10-08 12:00', format='j M Y'}
toc A table of contents of the page from its own rendered headings, nested and linked - filled in once the page has rendered.
{toc}
{toc levels='2-4', title='On this page', list='ul'}
Charts and codes
barcode Draws a barcode as inline SVG - EAN-13, EAN-8, UPC-A or Code 128, encoded on the server.
{barcode 'number'}
{barcode $code, type='code128', height=60, scale=2, title='text', plain, color='#000', background='#fff'}
calendar Writes a month as a calendar table with its events, or hands over its weeks and days as rows for markup of your own.
{calendar}
{calendar '2026-10', data='name', date='field', title='field', link='field', query='month', sunday}
{calendar '2026-10', data='name'} ... {days} ... {events} ... {/events} ... {/days} ... {/calendar}
chart Draws a chart as inline SVG on the server - 46 kinds, from bars and lines to sankeys, maps of a hierarchy and org charts.
{chart 'bar', data='name', label='field', value='field, field', stacked, title='text', width=600, height=300}
{chart 'line', sequence='fibonacci', rows=12}
{chart 'pie', data='name', label='field', value='field'}
{chart 'scatter', data='name', x='field', y='field', size='field', color='field', trend}
{chart 'gauge', value=72, from=0, to=100, bands='60, 85', target=80, unit='%'}
{chart 'bar', label='field', value='field', type='csv'} ... {/chart}
diagram Draws a flowchart or a sequence diagram from Mermaid-style lines of text, laid out on the server as inline SVG.
{diagram direction='LR', edges='curved', title='text'} A[Start] --> B{Ready?} {/diagram}
{diagram type='sequence', title='text'} Shop ->> Bank: Charge {/diagram}
map Draws a choropleth map as inline SVG - every country coloured by a value of its row - of the world or one of its regions.
{map 'world', data='name', key='field', value='field', scale='quantile', title='text', width=720, height=400}
{map 'europe', key='field', value='field'} ... {/map}
qr Draws a QR code as inline SVG, encoded on the server - no image library, no remote service.
{qr 'text'}
{qr $url, size=160, level='M', title='text', color='#000', background='#fff'}
sparkline Draws a word-sized line chart as inline SVG - no axes, the last point marked - to stand in a sentence or a table cell.
{sparkline data='name', label='field', value='field', title='text', width=120, height=32}
{sparkline sequence='fibonacci', rows=12}
{sparkline type='json'} ... {/sparkline}
timeline Draws events on a time axis as inline SVG - cards above and below the axis, spans as bars, or one under the other.
{timeline data='name', date='field', label='field', text='field', color='field', format='Y', title='text', width=720, height=300}
{timeline data='name', from='field', to='field', date='field', label='field'}
{timeline date='field', label='field', vertical} ... {/timeline}
Pictures and media
avatar Draws an initials avatar as inline SVG - the letters of a name in a circle coloured by a hash of it, no image needed.
{avatar 'name'}
{avatar $name, size=48, shape='square', label='text'}
country Writes a country's flag from its ISO 3166 code or English name, optionally with the name beside it.
{country 'NL'}
{country $code, name}
gravatar Writes the Gravatar picture of an e-mail address as an img - only a hash of the address leaves the page - or a local avatar instead.
{gravatar $email}
{gravatar $email, size=64, default='identicon', alt='text'}
{gravatar $email, fallback='avatar', alt='text'}
icon Writes an interface icon from PAD's own set of 79 as inline SVG, drawn in the colour of the text around it.
{icon 'arrow-right'}
{icon 'trash', size=20, stroke=2, label='text'}
identicon Draws a GitHub-style identicon as inline SVG - a symmetric 5 by 5 pattern and a colour from a hash of the value.
{identicon $email}
{identicon $value, size=64, title='text'}
img Writes a picture of the application's www directory as a thumbnail of the size the page shows it at, resized once with GD.
{img 'photos/harbour.jpg', width=400, height=300, alt='text'}
{img 'photos/dunes.jpg', width=300, height=300, fit='contain', format='webp', quality=70, alt=''}
pdf Sends what its content renders as a PDF instead of the page - a writer in plain PHP, the standard fonts, no library.
{pdf file='name', size='A4', landscape, font='helvetica', title='text'} ... {/pdf}
{pdf preview, file='name'} ... {/pdf}
{pdf download}
placeholder Draws a grey image placeholder as inline SVG - crossing lines and the size or a text in the middle.
{placeholder '600x300', text='text'}
{placeholder ratio='16:9', width=640, fluid}
progress Writes an accessible progress bar - the native progress element, styled, with its label and percentage - or a row of step dots.
{progress 72}
{progress $done, max=100, label='text', color='success', size='small'}
{progress 3, max=5, steps, label='text'}
rating Draws a score as stars or hearts in inline SVG - whole ones filled, a part of one clipped - and says it in words.
{rating 4.5}
{rating $score, max=5, size=20, icon='heart', label='text'}
video Shows a YouTube or Vimeo video as its poster with a play button, loading the player only when pressed - or a video file as a video element.
{video 'https://www.youtube.com/watch?v=id', title='text'}
{video 'https://vimeo.com/id#t=1m30s', title='text', poster='photos/still.jpg', ratio='16:9'}
{video 'clips/sunrise.webm', title='text', poster='photos/sunrise.jpg'}
Widgets
accordion Items that open and close on a click, each a details element - no JavaScript.
{accordion} {tab 'label'} ... {/tab} {tab 'label'} ... {/tab} {/accordion}
{accordion single, open=1} ... {/accordion}
{accordion open} ... {/accordion}
carousel Slides in a row that scrolls and snaps sideways, with arrow links and dots - no JavaScript needed.
{carousel} {tab 'caption'} ... {/tab} {tab} ... {/tab} {/carousel}
{carousel label='Name'} ... {/carousel}
copy A text in a code block with a button that copies it to the clipboard.
{copy 'text'}
{copy $value, label='Copy command'}
{copy label='Copy'} ... {/copy}
datatable Rows as a complete HTML table - formatted numbers, a totals row, sorting and paging on the server.
{datatable data='name', columns='a, b, c', labels='A, B, C', totals='c'}
{datatable data='name', format="c:currency('EUR')", sortable, striped, caption='Caption'}
{datatable data='name', rows=10, query='prefix_'}
{datatable totals='amount'} month,amount ... {/datatable}
jsonview A JSON value or a PHP array as a tree that folds open and shut, coloured by type.
{jsonview $value}
{jsonview $value, open=1, title='Label'}
{jsonview data='name'}
{jsonview} {"id": 42, "paid": true} {/jsonview}
modal A dialog over the page with the button that opens it - works with and without JavaScript.
{modal 'name'} ... {/modal}
{modal 'name', title='Heading', button='Button text'} ... {/modal}
poll A vote among a few answers, once per visitor, then the results as bars with percentages.
{poll 'name', options='Yes, No'}
{poll 'name', options='PHP, Python, Go', title='Question?', button='Vote', results}
tab One item of a tabs, accordion or carousel: its label and its content, handed to that owner.
{tab 'label'} ... {/tab}
tabs Panels behind a row of tabs, switched by radio buttons and CSS - no JavaScript.
{tabs} {tab 'label'} ... {/tab} {tab 'label'} ... {/tab} {/tabs}
{tabs active='label'} ... {/tabs}
Games
chess A chess position from FEN as an SVG board, with marked squares and arrows.
{chess 'fen'}
{chess 'fen', flip, highlight='e2, e4', arrow='e2-e4, g8-f6', size=320, title='Name'}
crossword A crossword made from a list of words: a numbered SVG grid with the Across and Down clues.
{crossword} WORD: clue ... {/crossword}
{crossword solution, title='Name'} WORD: clue ... {/crossword}
sudoku A sudoku as a table, the givens bold - and with solve, solved on the server.
{sudoku 'puzzle'}
{sudoku 'puzzle', solve, title='Caption'}
Layouts and components
block A named region of a layout or wrapper - and a page's override of it.
{block 'name'} default content {/block}
{block 'name'} {parent} more content {/block}
define Writes a custom tag in the template itself - what a _tags/name.pad file is, without the file.
{define 'name'} ... {#parm} ... @content@ ... {/define}
{define 'name'} {parms title, tone='info'} ... {slot 'footer'}@content@{/slot} {/define}
{name parm='value'}
{name parm='value'} content {slot 'footer'}fill{/slot} {/name}
{define:name ...}
extends Frames the page with a layout instead of its directories' wrappers.
{extends 'layout'}
{extends $layout}
fragment A named part of the page that a request can ask for alone - for htmx and ajax swaps.
{fragment 'name'} ... {/fragment}
macro A template function: declared parameters, given in order or by name, read as fields inside its body.
{macro 'name', required, optional='default'} ... {$required} {$optional} ... {/macro}
{name 'value'}
{name 'value', 'other'}
{name required='value', optional=$x}
{name 'value'} content for @content@ {/name}
{macro:name ...}
meta The page's metadata - a title, a layout, a cache time or any value - read while the page is assembled.
{meta title='Title', name=value}
{meta layout='layout', cache=600, access='admin', sitemap=false}
parent Inside an overriding block: the content of the block it overrides.
{block 'name'} {parent} ... {/block}
parms Declares the parameters of a custom tag, with defaults, at the top of its template.
{parms name}
{parms title, subtitle='', tone='info'}
push Renders its content and adds it to a named stack, for a stack tag elsewhere in the page to print.
{push 'name'} ... {/push}
{push 'name', once='key'} ... {/push}
{push 'name', once} ... {/push}
shadow The shadow root of a custom element, rendered on the server as declarative shadow DOM.
{shadow} ... {/shadow}
{shadow css='file.css, www:other.css', mode='closed', focus} ... {/shadow}
slot A named place in a custom tag's template - and the fill a caller gives it.
{slot 'name'} default content {/slot}
{slot 'name'} <footer>@content@</footer> {/slot}
{slot 'name'/}
Debugging and errors
assert A condition a test run holds the page to; silent everywhere else.
{assert condition}
{assert condition, 'message'}
debug Shows values as a collapsible tree in the page, for a local request only, while rendering goes on.
{debug}
{debug $value, $other}
{debug label=$value}
error Raises a PAD error from the template, handled as the configured error action says.
{error 'message'}
exception Throws a real PHP exception from the template, to exercise the error handling.
{exception 'message'}
exit Ends the request at once, with an empty body - the PAD way to stop instead of PHP's exit.
{exit}
Sequences
action Runs one sequence action - reverse, sum, first and the rest - over a store, a range or a type, and iterates the result.
{action store, reverse} ... {/action}
{action reverse, store} ... {/action}
{action store, first=2} ... {/action}
{action sum, '31..40'} ... {/action}
{action:reverse store} ... {/action:reverse}
{action:shift store, 2} ... {/action:shift}
flag Replaces every value of a sequence with 1 or 0: whether it belongs to a sequence type.
{flag '1..10', even} ... {/flag}
{flag prime, from=10, rows=12} ... {/flag}
{flag:prime rows=10} ... {/flag:prime}
{flag store, prime} ... {/flag}
keep Keeps only the values of a sequence that belong to a sequence type.
{keep '1..50', square} ... {/keep}
{keep palindrome, from=100, rows=5} ... {/keep}
{keep:prime from=10, rows=4} ... {/keep:prime}
{keep store, even} ... {/keep}
make Replaces every value of a sequence with what a sequence type makes of it.
{make '1..5', add=10} ... {/make}
{make '1..5', add=10, multiply=2} ... {/make}
{make '1..6', prime} ... {/make}
{make:fibonacci rows=8} ... {/make:fibonacci}
{make store, square} ... {/make}
pull Iterates a stored sequence, optionally through plays and actions.
{pull 'store'} ... {/pull}
{pull} ... {/pull}
{pull:store} ... {/pull:store}
{pull 'store', reverse, first=3} ... {/pull}
{pull 'store', keep, prime} ... {/pull}
remove Removes the values of a sequence that belong to a sequence type - the inverse of keep.
{remove '1..10', prime} ... {/remove}
{remove prime, rows=5} ... {/remove}
{remove:odd rows=5} ... {/remove:odd}
{remove store, even} ... {/remove}
resume Transforms the sequence pushed last, in place, through an action or a play.
{resume reverse}
{resume add=10}
{resume keep, prime}
{resume first=3}
sequence Generates a range, a list or one of 80 mathematical sequences, and iterates its values.
{sequence '1..10'} ... {/sequence}
{sequence range='1..100', increment=5} ... {/sequence}
{sequence list='3;1;2'} ... {/sequence}
{sequence prime, rows=10, name='p'} ... {/sequence}
{sequence fibonacci, from=1, to=20, stop=100, skip=2} ... {/sequence}
{sequence random, minimal=1, maximal=100, rows=5, unique, randomly} ... {/sequence}
{sequence '1..20', keep, prime, sum} ... {/sequence}
{sequence '1..20', keep='prime', action='first|3'} ... {/sequence}
{sequence prime, rows=10, push='primes', toData='primeList'}
{sequence pull='primes', reverse} ... {/sequence}