リストマクロ

<< 目次を表示 >>

ページ位置:  Enterprise Architectの拡張 > ソースコード生成のカスタマイズ > コード生成テンプレートフレームワーク > コード生成テンプレートの文法 > マクロ > 制御マクロ >

リストマクロ

要素が複数の項目を持つ場合に、その項目を対象に繰り返し処理を行う場合には%listのリストマクロを利用します。それぞれの項目に対して、指定されたテンプレートを呼び出します。

 

基本的な文法は以下の通りです。

%list=<TemplateName> @separator=<string> @indent=<string> (<conditions> ) %

 

ここで、<string>は二重引用符(")で囲んだ文字列です。<TemplateName>は以下のいずれかのテンプレートになります。

 

 

<conditions>は必要に応じて条件を指定できます。条件の指定形式はif文の場合と同じです。条件を指定しない場合には、すべての項目が対象になります。

 

 

例:

リストマクロは要素が持つ情報を取得し処理するために利用します。

 

例えば、クラス要素が対象の場合には、クラスには1つあるいは複数の属性がある可能性があります。以下の例のように、Attributeのテンプレートを呼び出し、それぞれの属性に対する処理を行います。この例では、それぞれの処理の後には改行を追加し、それぞれの出力の最初には、空白文字2つ文のインデントを行う指示が含まれています。もし、対象の属性にステレオタイプが付加されている場合で、そのステレオタイプに対応する特別なテンプレートが定義されている場合には、そのテンプレートが呼ばれます。

 

%list="Attribute" @separator="\n" @indent="  "%

 

上記の@separatorで記述された属性の分割文字は空白文字です。リストの要素間を区切るのに利用されています。これはリストの最後の要素では利用されません。

 

@indentで定義されたインデント属性は出力されるそれぞれの行のインデントを制御します。

 

 

注意点:

リストマクロを使う場合に考慮すべき場合がいくつかあります。

 

 

 

参照: