StringTemplate中带有动态条目的字典

时间:2016-01-13 23:12:05

标签: stringtemplate stringtemplate-4

我使用StringTemplate 4.0.8和Java。

StringTemplate-4 documentation中,它说

  

字典字符串也可以是可以引用属性的模板   这将通过动态范围的属性可见   字典值已嵌入模板中。

我该怎么做?我可以这样做:

output(input) ::= "The output is: <aDicitionary.input>"

aDictionary ::= [
    "someKey":"someValue",
    "someOtherKey":"someOtherValue",
    "aCertainKey": **HERE** i want the value to be <input>,
    default:"doesnt matter"
]

因此output("someKey")会导致The output is: someValue 并且output(aCertainKey)结果为&#34;输出为:aCertainKey&#34;。如果是这样,语法究竟是什么样的?

我知道我可以通过在一个案例中不传递输入然后检查我是否有输入来实现相同目的。但这会导致Java方面有很多问题,而我

1 个答案:

答案 0 :(得分:2)

使用动态字典条目:

output(input) ::= <%The output is: <aDicitionary.(input)>%>

在模板周围不使用引号,并将input放在括号中以对其进行评估。

要在字典中引入动态内容(引用块的主题):

aDictionary ::= [
  "someKey":"someValue",
  "someOtherKey":"someOtherValue",
  "aCertainKey": {input from scope <inputFromScope>},
  default:"doesnt matter"
]

在键和内部的变量(或模板)引用周围使用大括号。现在打电话

<output(input="aCertainKey", inputFromScope="myInput")>

将输出

The output is: input from scope myInput