Disable HTML escaping when rendering Mustache templates

Closes gh-885
This commit is contained in:
Andy Wilkinson
2019-04-05 10:40:50 +01:00
parent 83436ae2ef
commit b387a77e73
2 changed files with 13 additions and 1 deletions

View File

@@ -49,7 +49,8 @@ public class MustacheTemplateRenderer implements TemplateRenderer {
public MustacheTemplateRenderer(String resourcePrefix, Cache templateCache) {
String prefix = (resourcePrefix.endsWith("/") ? resourcePrefix
: resourcePrefix + "/");
this.mustache = Mustache.compiler().withLoader(mustacheTemplateLoader(prefix));
this.mustache = Mustache.compiler().withLoader(mustacheTemplateLoader(prefix))
.escapeHTML(false);
this.keyGenerator = (name) -> String.format("%s%s", prefix, name);
this.templateCache = templateCache;
}

View File

@@ -66,4 +66,15 @@ class MustacheTemplateRendererTests {
.withMessageContaining("does-not-exist");
}
@Test
void htmlEscapingIsDisabled() throws IOException {
MustacheTemplateRenderer render = new MustacheTemplateRenderer(
"classpath:/templates/mustache", this.templatesCache);
assertThat(this.templatesCache.get("classpath:/templates/mustache/test"))
.isNull();
assertThat(
render.render("test", Collections.singletonMap("key", "it's a `<div>`")))
.isEqualTo("it's a `<div>`");
}
}