マクロの呼出し
マクロの呼出し方は次の3つ
1. ノーマルマクロ
関数テンプレートおよび項目データ内にて利用
2. ラインマクロ
関数テンプレートおよび項目データ内にて利用
・・・注)項目名と同名のマクロがある場合、暗黙的に対応する。
3. ステートマクロ
アウトプット部で使用
1. ノーマルマクロ
関数テンプレートおよび項目データ内にて利用
$macro:マクロ名$ $macro:マクロ名(引数1[,引数2…])$
2. ラインマクロ
関数テンプレートおよび項目データ内にて利用
[[項目名->@マクロ名]]・・・項目データが一行単位でマクロ変換
・・・注)項目名と同名のマクロがある場合、暗黙的に対応する。
3. ステートマクロ
アウトプット部で使用
//[PSGG OUTPUT START] indent(20) $/正規表現/->#マクロ名$・・・ステート名を正規表現でフィルター後マクロ変換
ノーマルマクロと引数
ノーマルマクロの引数は、マクロ名を引数0とし括弧内の先頭を引数1とし後に続く。
例)
例)
$macro:hoge(a,b)$上記の引数は…
引数0 : hoge 引数1:a 引数2:b
行変換時の引数分解
行マクロの引数解釈
1.カンマ区切りデータ
左から引数0、1、・・・となる。
例)
2.関数
関数名を引数0として、関数の引数を引数1、引数2・・・となる。
例)
1.カンマ区切りデータ
左から引数0、1、・・・となる。
例)
tokyo,osaka,yokohama・・・引数0="tokyo" 引数1="osaka" 引数2="yokohama"
2.関数
関数名を引数0として、関数の引数を引数1、引数2・・・となる。
例)
hoge(tokyo,osaka)・・・引数0="hoge" 引数1="tokyo" 引数2="yokohama"
マクロの定義場所
マクロの定義場所は3ヵ所
1. setting.ini内の[macro]カテゴリ
2. ユーザマクロファイル
3. 生成先ファイルの マクロ定義開始マーク( :psgg-macro-start)と終了マーク(:psgg-macro-end)の間
※ 1,2の手法が面倒なので、3の手法が追加された。
1. setting.ini内の[macro]カテゴリ
2. ユーザマクロファイル
3. 生成先ファイルの マクロ定義開始マーク( :psgg-macro-start)と終了マーク(:psgg-macro-end)の間
:psgg-macro-start マクロ定義 :psgg-macro-end
※ 1,2の手法が面倒なので、3の手法が追加された。
マクロ定義方法
マクロ名=変換値または
マクロ名=@@@ 変換値 @@@
引数の使い方
{%数字}例)
#マクロ
hoge=I will go to {%1} and {%2}.#呼出し
$macro:hoge(tokyo,osaka)$#変換
I will go to tokyo and osaka.
引数の使い方 ダブルクオート削除
{%~数字}文字列前後のダブルクオーテーションを削除
例)
#マクロ
hoge=I will go to {%~1}.#呼出し
$macro:hoge("tokyo and osaka")$#変換
I will go to tokyo and osaka.
行マクロ
@マクロ名
項目値の行ごとに対応するマクロ
例)
#マクロ
#テンプレート
#pointsの値
100,50
100,150
100,200
#変換
SetPosition(100,50);
SetPosition(100,150);
SetPosition(100,200);
項目値の行ごとに対応するマクロ
例)
#マクロ
@set=@@@ SetPosition({%0},{%1}); @@@
#テンプレート
[[points->@set]]
#pointsの値
100,50
100,150
100,200
#変換
SetPosition(100,50);
SetPosition(100,150);
SetPosition(100,200);
特別行マクロ
項目名と同じ行マクロがある場合、自動であてがわれる。
例)
#マクロ
#テンプレート
#pointsの値
#変換
例)
#マクロ
@points=@@@ SetPosition({%0},{%1}); @@@
#テンプレート
[[points]]
#pointsの値
100,50 100,150 100,200
#変換
SetPosition(100,50); SetPosition(100,150); SetPosition(100,200);
行番号引数
{%N}行マクロ時に、その行数を示す。
基数は0。
マクロ定数
$statemachine$ //そのまま $stateMachine$ //ロワーカメル $StateMachine$ //アッパーカメル $state_machine$ //スネークステートマシン名に変換。
ステートマシン名はsetting.iniのstatemachineにて定義。
キャメル変換マクロ
$uc:文字列$ //アッパーキャメル $lc:文字列$ //ローワーキャメル`