Prev Next

Variables

Template variables provide a convenient way of storing and retrieving data within a template. This section explains how variables are defined and referenced.

Variable Definitions

Variable definitions take the basic form:

     $<name> = <value>

where <name> can be any alpha-numeric sequence and <value> is derived from a macro or another variable.

A simple example definition would be:

     $foo = %className%

Variables can be defined using values from:

  • Substitution, function or list macros
  • String literals, enclosed within double quotation marks
  • Variable references

Definition Rules

These rules apply to variable definitions:

  • Variables have global scope within the template in which they are defined and are not accessible to other templates
  • Each variable must be defined at the start of a line, without any intervening white space
  • Variables are denoted by prefixing the name with $, as in $foo
  • Variables do not have to be declared, prior to being defined
  • Variables must be defined using either the assignment operator (=), or the addition-assignment operator (+=)
  • Multiple terms can be combined in a single definition using the addition operator (+)

Examples

Using a substitution macro:

     $foo = %opTag:"bar"%

Using a literal string:

     $foo = "bar"

Using another variable:

     $foo = $bar

Using a list macro:

     $ops = %list="Operation" @separator="\n\n" @indent="\t"%

Using the addition-assignment operator (+=):

     $body += %list="Operation" @separator="\n\n" @indent="\t"%

That definition is equivalent to:

     $body = $body + %list="Operation" @separator="\n\n" @indent="\t"%

Using multiple terms:

     $templateArgs = %list="ClassParameter" @separator=", "%

     $template ="template<" + $templateArgs + ">"

Variable References

Variable values can be retrieved by using a reference of the form:

     $<name>

where <name> can be a previously defined variable.

Variable references can be used:

  • As part of a macro, such as the argument to a function macro
  • As a term in a variable definition
  • As a direct substitution of the variable value into the output

It is legal to reference a variable before it is defined. In this case, the variable is assumed to contain an empty string value: ""

Variable References - Example 1

Using variables as part of a macro. This is an excerpt from the default C++ ClassNotes template.

     $wrapLen = %genOptWrapComment%

     $style = %genOptCPPCommentStyle%     (Define variables to store the style and wrap length options)

     %if $style == "XML.NET"%     (Reference to $style as part of a condition)

     %XML_COMMENT($wrapLen)%

     %else%

     %CSTYLE_COMMENT($wrapLen)%     (Reference to $wrapLen as an argument to function macro)

     %endIf%

Variable References - Example 2

Using variable references as part of a variable definition.

     $foo = "foo"         (Define our variables)

     $bar = "bar"

     $foobar = $foo + $bar    ($foobar now contains the value foobar)

Variable References - Example 3

Substituting variable values into the output.

     $bases=%classInherits% (Store the result of the ClassInherits template in $bases)

     Class %className%$bases (Now output the value of $bases after the Class name)