概要とドキュメント
A-Parserでは、クエリや結果のフォーマットにTemplate Toolkitテンプレートエンジンが使用されています。このテンプレートエンジンを使用すると、テンプレートで定義されたルールに従って、最終的な文字列(クエリや結果など)を生成できます。Template Toolkitには多くの機能があります:
- 条件分岐とループのサポート
- 通常の変数(スカラー)、配列、ハッシュ(連想配列)のサポート
- 変数用メソッドのサポート(文字列の長さ、検索と置換、配列サイズなど)
- プラグインとフィルタのサポート(日付と時刻の出力とフォーマット、HTML要素の生成など)
テンプレートエンジンの使用例
Template Toolkit 公式ドキュメント
このテンプレートエンジンの大きな利点は、ロシア語と英語の充実したドキュメントがあることです。以下にドキュメントの最も重要なセクションへのリンクを示します:
- はじめに - 全般的な情報
- 構文 - テンプレートの記述ルールとスタイル
- ディレクティブ - 条件、ループ、フィルタ、プラグイン、マクロ
- 変数 - 変数、配列、ハッシュの値へのアクセスと更新
- 仮想メソッド - 変数、配列、ハッシュを処理するためのプリセット関数
- プラグイン と フィルタ - テンプレートエンジンの拡張機能。A-Parserは以下のプラグインをサポートしています:
- Date - フォーマットされた日付文字列の生成用
- Dumper - データ構造のダンプ出力
- Format - printf構文に基づいたフォーマット関数の作成用
- HTML - HTML要素の作成とHTMLコードのエスケープ用
- Filter - プラグインのロードを通じて定義・利用可能なフィルタの作成と使用用
- Math - あらゆる数学関数の使用用
- String - 文字列操作のための追加メソッドの実装
- Table - データをテーブル形式で表示するため
- URL - リンク構築用
- Wrap - 段落のフォーマット用
- Iterator - データセットの反復処理用。イテレータはFOREACHディレクティブによって暗黙的に自動生成されます。このプラグインを使用すると、指定した名前で明示的にイテレータを作成できます。
使用例
Mathプラグインの使用例
指定した数のリンクをランダムに選択する:
[% limit = 5;
USE Math;
FOREACH i IN [1..5];
n = Math.rand(intlinks.size);
intlinks.$n.link _ "\n";
END %]
FOREACHループの例
配列 $serp からすべてのリンクとその位置を出力する:
[% FOREACH item IN p1.serp;
loop.count _ ' - ' _ item.link _ "\n";
END %]
WHILEループの例
配列 $serp から3番目以降の5つのアンカーを出力する:
[% n = 2;
WHILE n < 7;
p1.serp.${n}.anchor _ "\n";
n = n + 1;
END %]
条件分岐の例
変数の値に応じて特定のデータを出力する:
[% IF p1.totalcount < 1000;
query _ " - 少なすぎる\n";
ELSIF p1.totalcount < 1000;
query _ " - 普通\n";
ELSE;
query _ " - 多い\n";
END %]