Everything between {ignore} and {/ignore} is written out as it stands: the characters PAD reads as syntax - { } | = , @ - are swapped for stand-ins before the engine looks at the content, and turned back into the real characters when the page is written. Nothing inside runs: no tag, no field. A comment is the exception - comments are dropped before the template is scanned, so one inside the pair is gone too.

It is what inline code with braces needs. A <script> with an object literal, a <style> with its selector blocks, a JSON sample in a <pre> - without {ignore} each { ... } would be read as a tag, and the strict check would report it. External files are better still; the pair is for the few lines that belong in the page.

The same protection comes in two more forms. The ignore option on any tag wraps that tag's content in {ignore}: {data 'config' ignore}, {markdown ignore}. The ignore pipe escapes a value: {echo $json | ignore}. For a single brace in text, {open} and {close} are enough. {highlight} takes its content as it stands too, so a coloured code sample needs no {ignore}.

An {ignore} without its {/ignore} protects nothing; the strict check names it rather than blaming some tag inside.