ctemplateの詳細
4128 ワード
ctemplateの詳細
ctemplate(Google-ctemplate)の設計哲学は軽量級で、迅速で、論理とインタフェースが分離しているため、ClearSilverとTengとはいくつかの違いがある.たとえばCtemplateにはテンプレート関数がなく,条件判断やループ文がない(もちろん,融通性のある方法で実現できる).
ctemplateは大きく2つの部分に分けられ、一部はテンプレートであり、もう一部はデータ辞書である.テンプレートはインタフェースの表示形式(V)を定義して、データ辞書はテンプレートのデータ(M)を充填して、あなたは自分でビジネスロジックを書いてインタフェースの表示(C)を制御して、典型的なMVCモデルです.
ctemplateテンプレートには4つのタグがあり、対応するデータ辞書にも異なる処理方法があります.変数,{{変数名}}は,2つの括弧で変数名を含み,c++コードでは変数に値を割り当てることができ,任意のタイプの値(文字,整数,日付など)でもよい. 断片,{#断片名}},断片はデータ辞書にサブ辞書として表現され,辞書は階層化可能であり,ルート辞書の下にはマルチレベルサブ辞書がある.断片は条件判断とループを処理できる. には,{>テンプレート名}}が含まれているのは,1つのテンプレートが他のテンプレートを含むことができ,対応するのも1つの字辞書である. 注釈,{!注釈名}},注釈を含む.
完全な4つのタグの例を以下に示します.
処理するC++コードは以下の通りである.
ctemplate(Google-ctemplate)の設計哲学は軽量級で、迅速で、論理とインタフェースが分離しているため、ClearSilverとTengとはいくつかの違いがある.たとえばCtemplateにはテンプレート関数がなく,条件判断やループ文がない(もちろん,融通性のある方法で実現できる).
ctemplateは大きく2つの部分に分けられ、一部はテンプレートであり、もう一部はデータ辞書である.テンプレートはインタフェースの表示形式(V)を定義して、データ辞書はテンプレートのデータ(M)を充填して、あなたは自分でビジネスロジックを書いてインタフェースの表示(C)を制御して、典型的なMVCモデルです.
ctemplateテンプレートには4つのタグがあり、対応するデータ辞書にも異なる処理方法があります.
完全な4つのタグの例を以下に示します.
Hello {{NAME}},
You have just won ${{VALUE}}!
{{#IN_CA}}Well, ${{TAXED_VALUE}}, after taxes.{{/IN_CA}}
処理するC++コードは以下の通りである.
#include
#include
#include
#include
int main(int argc, char** argv) {
google::TemplateDictionary dict("example");
dict.SetValue("NAME", "John Smith");
int winnings = rand() % 100000;
dict.SetIntValue("VALUE", winnings);
dict.SetFormattedValue("TAXED_VALUE", "%.2f", winnings * 0.83);
// For now, assume everyone lives in CA.
// (Try running the program with a 0 here instead!)
if (1) {
dict.ShowSection("IN_CA");
}
google::Template* tpl = google::Template::GetTemplate("example.tpl",
google::DO_NOT_STRIP);
std::string output;
tpl->Expand(&output, &dict);
std::cout << output;
return 0;
}