mirror of https://github.com/shadowfacts/ekt.git
Add method for passing objects with generic type params
This commit is contained in:
parent
640aed6d5d
commit
86de475391
|
@ -78,12 +78,20 @@ _result.toString()
|
|||
|
||||
// Hack to allow data to be accessed by name from template instead of via bindings map
|
||||
val unwrapBindings = data.keys.map {
|
||||
val type = data[it]!!::class.qualifiedName
|
||||
"val $it = bindings[\"$it\"] as $type;"
|
||||
val value = data[it]!!
|
||||
if (value is Value) {
|
||||
val type = value.type
|
||||
"val $it = (bindings[\"$it\"] as net.shadowfacts.ekt.EKT.Value).value as $type"
|
||||
} else {
|
||||
val type = value::class.qualifiedName
|
||||
"val $it = bindings[\"$it\"] as $type"
|
||||
}
|
||||
}.joinToString("\n")
|
||||
engine.eval(unwrapBindings)
|
||||
|
||||
return engine.eval(script)
|
||||
}
|
||||
|
||||
data class Value(val value: Any, val type: String)
|
||||
|
||||
}
|
|
@ -7,9 +7,7 @@ import java.io.File
|
|||
*/
|
||||
fun main(args: Array<String>) {
|
||||
val res = EKT.render(File("template.ekt"), mapOf(
|
||||
"title" to "EKT Test",
|
||||
"body" to "some test content",
|
||||
"value" to 42
|
||||
"list" to EKT.Value(listOf(1, 2, 3), "List<String>")
|
||||
), dumpGeneratedScript = File("script.kts"))
|
||||
|
||||
File("result.txt").apply {
|
||||
|
|
Loading…
Reference in New Issue