6. フィルタ
- 6.1. フィルタ(filter)
- 6.2. フィルタセット(filterset)
- 6.3. フィルタチェーン(FilterChain)
- 6.4. フィルタリーダー(FilterReader)
フィルタは、文字列の置換など、テキストファイルに対するさまざまな文字列処理を行うための機能です。copyタスクやmoveタスクなど、ファイルを移動するタスクで利用することができます。
6.1. フィルタ(filter)
フィルタタスクは、特定のトークン区切り文字で囲まれたトークンを、別の文字列に置換する機能を持ちます。デフォルトのトークン区切り文字は「@」です。
属性 | 説明 | 初期値 | 必須 |
token
|
置換の対象となるトークンを指定します。 |
|
●
|
value
|
置換後の文字列を指定します。 |
●
|
次の例は、テキストファイル中の「@date@」という文字列を「2002/10/01」という文字列に置き換えるフィルタです。ここでトークン区切り文字はデフォルトのままであるとします。トークン区切り文字は、次に説明するfiltersetデータ構造で指定することができます。
<filter token="date" value="2002/10/01" />
6.2. フィルタセット(filterset)
フィルタセットは複数のフィルタの集合を表すデータ構造です。copyタスク等でフィルタを適用するのにfilterデータ構造を直接利用することはできません。フィルタを子要素として指定したフィルタセットを利用します。
属性 | 説明 | 初期値 | 必須 |
begintoken
|
トークンの開始区切り文字を指定します。 |
@
|
|
endtoken
|
トークンの終了区切り文字を指定します。 |
@
|
|
refid
|
事前定義されたフィルタセットを参照します。 |
フィルタセットは、子要素としてfilterとfiltersfileを指定するすることができます。
次の例は、「template」というファイル中の「@date@」という文字列を「2002/10/01」に、「@time@」という文字列を「12:30:00」に置き換え、「dest」というファイルに書き出します。
<copy file="template" tofile="dest"> <filterset> <filter token="date" value="2002/10/01" /> <filter token="time" value="12:30:00" /> </filterset> </copy>
filtersfileは、フィルタの変換規則をファイルに記述しておき、それを利用するときに用います。フィルタを記述するファイルには、次のように、一行に一つ「トークン=置換文字列」というように記述します。
date=2002/10/01 time=12:30:00
このファイルを「datefilters」というファイルで保存しておけば、上記のコピータスクは次のように書き換えることができます。
<copy file="template" tofile="dest"> <filterset> <filtersfile file="datefilters" /> </filterset> </copy>
(実習課題1)(Ant1.5以上)
「src」ファイルを「dest」ファイルにコピーするビルドファイルを、copyタスクを利用して作成して下さい。このとき「src」ファイルに内のトークン「@datetime@」を実際にコピーが実施された日時に置き換えて下さい。またこのとき日時のフォーマットは「2002/10/01 12:30:00」のようになるようにして下さい。(ヒント:現在時間の取得にはtstampタスクを利用します。)
解答例はこちら