Directives

Directive tags are instructions to process a template and will not be output. They use an HTML-like syntax:

The format of the parameters depends on the directive used.

Some directives (e.g. package) do not accept nested content, i.e. code between start tag and end tag. In that case, you only need to use the start tag (e.g. [#package myPackage]).

The tag delimiter characters are '[' and ']'. This is particulary useful to generate HTML or XML file, to avoid confusion between TGL directives and HTML tags:

[#template GenerateXMLFile(option : boolean)]
<?xml version="1.0" encoding="UTF-8"?>
<contents>
[#if option]
  <on/>
[#else]
  <off/>
[#/if]
</contents>
[/#template]

Most commonly used directives
guard Conditionally skips the evaluation of a text template or of a script body.
file Defines the name of the file where the text generated by a text template will be written.
foreach, break Processes a section of the template for each element contained within a collection.
if, else, elseif Conditionally skips a section of the template.
import Makes the referenced element (text template, ruleset or Java type) directly available in the template.
include Evaluates a referenced text template and inserts the resulting text at the current position.
metatype Specifies the metatype for which the contained scripts apply.
package Defines the namespace of text templates and of scripts.
protectedStartTag
protectedEndTag
Specifies sections in the generated text where any user manual modification must be preserved.
script Defines the signature of a script, as well as the contents to be generated.
set Declares and initializes variables for use within the template.
template Defines the signature of a text template, as well as the contents to be generated.
while, break Processes a section of the template while a condition is true.

Advanced directives
attempt, recover Provides alternate processing in case an error occurs.
compress Removes superfluous white-space for white-space insensitive formats (e.g. HTML or XML).
library Defines the name of the library, as well as the macros it contains.
macro Defines the signature of a macro, as well as the contents to be generated
noparse Causes the contained text to be skipped by the parser and output directly
stop Aborts the evaluation process.
tab Shifts right using a tab character a section of the template.
trim, ltrim, rtrim, notrim Instructs the engine to ignore certain whitespace characters in the line of the directive.
using Makes the macros defined in the referenced library directly available in the template.