2016-05-26 50 views
3

是否可以使用Pebble Template Engine从字符串中构建模板而不必提供文件名?在Pebble模板引擎中解析字符串模板而不是文件

val engine = PebbleEngine.Builder().build() 
val writer = StringWriter(); 
engine.getTemplate("test.html").evaluate(writer); 

而不是提供test.html,我将如何提供以下格式的模板?

val template = "Hello {{world}} - {{count}} - {{tf}}" 

我目前在卵石2.2.1

<!-- Pebble --> 
<dependency> 
    <groupId>com.mitchellbosecke</groupId> 
    <artifactId>pebble</artifactId> 
    <version>2.2.1</version> 
</dependency> 

根据我收到的答案解决方案

val context = HashMap<String, Any>() 
... 
val engine = PebbleEngine.Builder().loader(StringLoader()).build(); 
val writer = StringWriter(); 
engine.getTemplate(template).evaluate(writer, context); 
println(writer.toString()); 

回答

3

to the tests,你只需要设置发动机上升了一个StringLoader

val engine = PebbleEngine.Builder().loader(StringLoader()).build() 
+0

就像鹅卵石回购完成后检查出你的回答,nooice! –

2

你需要一个StringLoader提供给发动机,像这样:

val engine = PebbleEngine.Builder() 
    .loader(StringLoader()) 
    .build() 

val writer = StringWriter() 
engine.getTemplate("<p>{{name}}</p>").evaluate(writer, mapOf("name" to "Stack Overflow")) 
val result = writer.toString() // "<p>Stack Overflow</p>