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.