From 9d844f31333475a0394dd14b901ea50674b281f8 Mon Sep 17 00:00:00 2001 From: Alex Bogdanovski Date: Mon, 16 May 2022 19:19:47 +0300 Subject: [PATCH] added option to escape HTML when compiling Mustache templates --- .../java/com/erudika/para/core/utils/Utils.java | 14 ++++++++++++-- .../com/erudika/para/core/utils/UtilsTest.java | 8 ++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/para-core/src/main/java/com/erudika/para/core/utils/Utils.java b/para-core/src/main/java/com/erudika/para/core/utils/Utils.java index 3e030df7..6ba617dd 100644 --- a/para-core/src/main/java/com/erudika/para/core/utils/Utils.java +++ b/para-core/src/main/java/com/erudika/para/core/utils/Utils.java @@ -330,13 +330,13 @@ public static String markdownToHtml(String markdownString, boolean htmlTagsRende * @param template a Mustache template * @return the compiled template string */ - public static String compileMustache(Map context, String template) { + public static String compileMustache(Map context, String template, boolean escapeHtml) { if (context == null || StringUtils.isBlank(template)) { return ""; } Writer writer = new StringWriter(); try { - Mustache.compiler().escapeHTML(false).emptyStringIsFalse(true).compile(template).execute(context, writer); + Mustache.compiler().escapeHTML(escapeHtml).emptyStringIsFalse(true).compile(template).execute(context, writer); } finally { try { writer.close(); @@ -347,6 +347,16 @@ public static String compileMustache(Map context, String templat return writer.toString(); } + /** + * @see #compileMustache(java.util.Map, java.lang.String, boolean) + * @param context a map of fields and values + * @param template a Mustache template + * @return the compiled template string + */ + public static String compileMustache(Map context, String template) { + return compileMustache(context, template, false); + } + /** * Abbreviates a string. * @param str a string diff --git a/para-server/src/test/java/com/erudika/para/core/utils/UtilsTest.java b/para-server/src/test/java/com/erudika/para/core/utils/UtilsTest.java index 0f7021aa..a9f3e236 100644 --- a/para-server/src/test/java/com/erudika/para/core/utils/UtilsTest.java +++ b/para-server/src/test/java/com/erudika/para/core/utils/UtilsTest.java @@ -17,17 +17,15 @@ */ package com.erudika.para.core.utils; -import com.erudika.para.core.utils.Config; -import com.erudika.para.core.utils.Utils; -import com.erudika.para.core.annotations.Locked; import com.erudika.para.core.App; import com.erudika.para.core.ParaObject; import com.erudika.para.core.Sysprop; import com.erudika.para.core.Tag; import com.erudika.para.core.User; import com.erudika.para.core.Votable; -import static com.erudika.para.core.utils.Utils.*; +import com.erudika.para.core.annotations.Locked; import static com.erudika.para.core.utils.ParaObjectUtils.*; +import static com.erudika.para.core.utils.Utils.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -114,6 +112,8 @@ public void testCompileMustache() { Map map = new HashMap<>(); map.put("test", "string"); assertEquals("string", compileMustache(map, "{{test}}")); + map.put("test", "string"); + assertEquals("<b>string</b>", compileMustache(map, "{{test}}", true)); } @Test