StringTemplate 中带有动态条目的字典

Dictionary with dynamic entries in StringTemplate

我在 Java 中使用 StringTemplate 4.0.8。

StringTemplate-4 documentation 中表示

Dictionary strings can also be templates that can refer to attributes that will become visible via dynamic scoping of attributes once the dictionary value has been embedded within a template.

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

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) 结果是 "The output is: aCertainKey"。如果是这样,语法到底是什么样的?

我知道我可以通过在一种情况下不传递输入然后检查我是否有输入来实现相同的目的。但这会导致很多 Java 方面的假设,我

要使用动态字典条目:

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