Please note : This help page is not for the latest version of Enterprise Architect. The latest help can be found here.
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:
The following 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 whitespace |
· | 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"%
The above definition is equivalent to the following:
$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 in one of the following ways:
· | 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: ""
Example 1:
Using variables as part of a macro. The following is an excerpt from the default C++ ClassNotes template.
$wrapLen = %genOptWrapComment% $style = %genOptCPPCommentStyle%
%if $style == "XML.NET"% %XML_COMMENT($wrapLen)% %else% %CSTYLE_COMMENT($wrapLen)% %endIf%
|
Define variables to store the style and wrap length options. Reference to $style as part of a condition. Reference to $wrapLen as an argument to function macro. |
Example 2:
Using variable references as part of a variable definitions.
$foo = "foo" $bar = "bar"
$foobar = $foo + $bar |
Define our variables. $foobar now contains the value foobar. |
Example 3:
Substituting variable values into the output.
$bases=%classInherits%
Class %className%$bases |
Store the result of the ClassInherits template in $bases. Now output the value of $bases after the Class name. |