Динамически включать переменные в шаблон Scalate
Я использую Scalate (конкретно scaml, но формат несколько не важен), и у меня есть несколько значений, которые определены в ряде шаблонов. Эти переменные не всегда известны во время компиляции. Моя цель - определить их в одном общем шаблоне, который я включаю как часть других шаблонов (своего рода наследование шаблонов). Я также хотел бы, чтобы эти значения были лениво созданы. Так что я хочу что-то вроде этого:
globals.scaml:
- import mylib.DataProvider._
- lazy val name = get("name")
- lazy val address = get("address)
template.scaml:
= include("globals.scaml")
The address for #{name} is #{address}
Я возился с различными схемами, в том числе с обратным, так что globals.scaml загружает правильный шаблон при передаче некоторых переменных, например так:
globals.scaml:
-@ val template: String
- import mylib.DataProvider._
- val data = Map("name" -> get("name"), "address" -> get("address))
- render(template, data)
Но это работает, только если я фактически объявляю значения в шаблоне, например так:
-@ val name:String
-@ val address:String
The address for #{name} is #{address}
Проблема в том, что это на самом деле хуже, чем просто повторять себя в каждом шаблоне, потому что мне все еще нужно объявить все значения, и я не получаю ленивую оценку.
Есть ли способ (без написания моего предварительного парсера) сделать это в Scalate?