StringTemplateで1つのテンプレートを別のテンプレートの中にネストする

他のテンプレートを別のテンプレートの中に入れ子にする方法を理解している問題があります。たとえば、 application.stg wrapper.stg core.stg という3つのテンプレートがあります。

core.stg:

page(data1, data2) ::= <<
  

$data1$

$data2$

>>

ラッパー.stg:

page(data3, data4) ::= <<
  

$data3$

<!----- CORE.STG GOES HERE ------->

$data4$

>>

application.stg:

   page(data7, data8) ::= <<
      

$data7$

<!----- WRAPPER.STG GOES HERE ------->

$data8$

>>

ドキュメントは、これが可能であることを示唆しているようです(条件付サブテンプレートセクション)。しかし、申し訳ありませんが、私は構文を全く理解できませんでした。私を助けてください。

2
この条件付きサブテンプレートセクションへのリンクを提供できますか?
追加された 著者 Bart Kiers,
もちろん、 http://www.antlr.org/wiki/display/ST4/Templates 、見出し "条件文"を検索します。
追加された 著者 Dominic,

1 答え

すべてのテンプレートでファイル全体を作成し、 .stg 拡張子を設定していることを確認することができます。 次に、 TemplateGroupFile オブジェクトを作成し、 data7 および data8 プロパティを設定し、アプリケーションテンプレートで開始するように指示します。

core(data1, data2) ::= <<
  

$data1$

$data2$

>> wrapper(data3, data4) ::= <<

$data3$

core(data3,data4)

$data4$

>> application(data7, data8) ::= <<

$data7$

wrapper(data7,data8)

$data8$

>>

これはC#コードです

TemplateGroupFile grp = new TemplateGroupFile(Template);
Template page_tpl = grp.GetInstanceOf(GroupName);
GroupName = "application";
page_tpl.Add("data7", yourData);
page_tpl.Add("data8", moreOfYourData);
File.WriteAllText(Path.Combine(dir, Path.GetFileName(outputFile)), page_tpl.Render());
0
追加された