// TODO
マクロは単一の式からできています。式は、フィールド・フィールドキャッシュ・文字列リテラル・数値リテラル・正規表現リテラル・関数呼び出し・定数参照・変数参照・ヒアドキュメントのいずれかです。
フィールド名を書くとコンテキストメッセージの指定された名前のヘッダの値を表します。例えば、
Subject
という式はSubjectヘッダの値を表します。
%に続けて名前を指定するとコンテキストメッセージの指定された名前のヘッダキャッシュの値を表します。キャッシュは基本的にはリストビューに表示するためにメッセージを保存するときに保存される値です。例えば、
%Subject
という式はSubjectヘッダのキャッシュされた値を表します。指定できる名前は以下のとおりです。
%FromとFrom、%ToとToは以下の点で異なります。
まず、FromやTo, Subjectがメッセージから取得されるのに対して、%Fromや%To, %Subjectはキャッシュから取得されます。このため、%付きの方が高速に動作します。
また、%Fromや%Toはアドレスの扱いが異なります。例えば、
From: test1@example.org, Test2 <test2@example.com>
というヘッダがあった場合、Fromの値は「test1@example.org, Test2 <test2@example.com>」になり、%Fromの値は「test1@example.org, Test2」になります。さらに、Fromの型がField型なのに対して、%Fromの型はString型になります。
""または''で括った値は文字列リテラルになります。例えば、
"Subject"
は、「Subject」という文字列を表します。文字列リテラル中で、「"」を使用するには「\"」、「'」を使用するには「\'」、「\」を使用するには「\\」と記述します。
数値から始まり、数値のみを含む文字列は数値リテラルになります。例えば、
123
は、10進の123を表します。
//で括られた文字列は正規表現リテラルになります。例えば、
/^(R|r)e:.*/
は「Re:」または「re:」から始まる文字列にマッチする正規表現を表します。後ろの/の後ろにはオプションを指定できます。指定できるのは以下の文字の組み合わせです。
例えば、
/^re:.*/i
や、
/^.*/ms
のように指定します。
@から始まる文字列は関数呼び出しを表します。
@Seen()
は、@Seenという関数の呼び出しを表します。詳細は、関数を参照してください。
:から始まる文字列は定数の参照になります。例えば、
:GLOBAL
は、GLOBALという名前の定数の参照を表します。どのような定数があるかは、それが使われる各関数の説明を参照してください。
$から始まる文字列は変数の参照になります。例えば、
$Subject
は、Subjectという名前の変数の参照を表します。詳細は、変数を参照してください。
<<があるとヒアドキュメントとして解釈されます。ヒアドキュメントは以下のような形になります。
<< END ここに文字列 複数行も可 END
<<の後ろの空白文字を読み飛ばした後から始まる行末までの文字列がタグとなり、そのタグが単独で行頭に現れるまでの行が全てヒアドキュメントのコンテンツになります。最後の行はタグだけで構成される行である必要があります。
ヒアドキュメントの扱いは文字列リテラルと同じですが、「"」「'」「\」をエスケープする必要はありません。
たとえば、@Scriptでスクリプトを書くときなどに使用すると便利です。
@Script(<< END var x = 1; var y = "foo"; ... ... END , 'JScript')