マクロ

// TODO

マクロは単一の式からできています。式は、フィールド・フィールドキャッシュ・文字列リテラル・数値リテラル・正規表現リテラル・関数呼び出し・定数参照・変数参照・ヒアドキュメントのいずれかです。

フィールド

フィールド名を書くとコンテキストメッセージの指定された名前のヘッダの値を表します。例えば、

Subject

という式はSubjectヘッダの値を表します。

フィールドキャッシュ

%に続けて名前を指定するとコンテキストメッセージの指定された名前のヘッダキャッシュの値を表します。キャッシュは基本的にはリストビューに表示するためにメッセージを保存するときに保存される値です。例えば、

%Subject

という式はSubjectヘッダのキャッシュされた値を表します。指定できる名前は以下のとおりです。

%ID
コンテキストメッセージのIDを表します。Number型になります。
%Date
コンテキストメッセージの日時を表します。Dateヘッダから取得されますが、Dateヘッダがない場合や不正な場合には受信したときの日時になります。Date型になります。
%From
コンテキストメッセージの差出人を表します。差出人の各アドレスに対して、名前が設定されている場合には名前を、設定されていない場合にはアドレスを使用します。String型になります。
%To
コンテキストメッセージの宛先を表します。差出人の各アドレスに対して、名前が設定されている場合には名前を、設定されていない場合にはアドレスを使用します。String型になります。
%FromTo
コンテキストメッセージの差出人または宛先を表します。送信済みフラグが立っている場合には%Toと、立っていない場合には%Fromと同じになります。String型になります。
%Subject
コンテキストメッセージの件名を表します。String型になります。
%Size
コンテキストメッセージのサイズを表します。Number型になります。

%FromとFrom、%ToとTo、%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:」から始まる文字列にマッチする正規表現を表します。後ろの/の後ろにはオプションを指定できます。指定できるのは以下の文字の組み合わせです。

m
複数行モードにします。^と$が各行の始まりと終わりにマッチするようになります。
s
.が改行文字にもマッチするようにします。
i
大文字と小文字を区別しないようにします。

例えば、

/^re:.*/i

や、

/^.*/ms

のように指定します。

関数呼び出し

@から始まる文字列は関数呼び出しを表します。

@Seen()

は、@Seenという関数の呼び出しを表します。詳細は、関数を参照してください。

定数参照

:から始まる文字列は定数の参照になります。例えば、

 :GLOBAL

は、GLOBALという名前の定数の参照を表します。どのような定数があるかは、それが使われる各関数の説明を参照してください。

変数参照

$から始まる文字列は変数の参照になります。例えば、

$Subject

は、Subjectという名前の変数の参照を表します。詳細は、変数を参照してください。

ヒアドキュメント

<<があるとヒアドキュメントとして解釈されます。ヒアドキュメントは以下のような形になります。

<< END
ここに文字列
複数行も可
END

<<の後ろの空白文字を読み飛ばした後から始まる行末までの文字列がタグとなり、そのタグが単独で行頭に現れるまでの行が全てヒアドキュメントのコンテンツになります。最後の行はタグだけで構成される行である必要があります。

ヒアドキュメントの扱いは文字列リテラルと同じですが、「"」「'」「\」をエスケープする必要はありません。

たとえば、@Scriptでスクリプトを書くときなどに使用すると便利です。

@Script(<< END
var x = 1;
var y = "foo";
...
...
END
, 'JScript')