diff --git a/build.gradle b/build.gradle index 3bd50a8..01ed79c 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ plugins { } group 'com.docutools' -version = '4.1.0' +version = '4.1.1' java { toolchain { diff --git a/src/main/java/com/docutools/jocument/impl/ParsingUtils.java b/src/main/java/com/docutools/jocument/impl/ParsingUtils.java index 488c59e..4b843fd 100644 --- a/src/main/java/com/docutools/jocument/impl/ParsingUtils.java +++ b/src/main/java/com/docutools/jocument/impl/ParsingUtils.java @@ -3,10 +3,13 @@ import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; public class ParsingUtils { private static final Pattern PLACEHOLDER_PATTERN = Pattern.compile("\\{\\{([^{}]+)?}}"); + private static final Logger logger = LogManager.getLogger(); private ParsingUtils() { } @@ -21,7 +24,13 @@ public static String stripBrackets(String value) { if (value.length() < 4) { return value; } - return value.substring(2, value.length() - 2); + Matcher matcher = PLACEHOLDER_PATTERN.matcher(value); + if (matcher.find()) { + return matcher.group(1); + } else { + logger.debug("String {} did not contain a placeholder", value); + return value; + } } public static List getMatchingLoopEnds(String placeholder) { diff --git a/src/main/java/com/docutools/jocument/impl/word/WordGenerator.java b/src/main/java/com/docutools/jocument/impl/word/WordGenerator.java index e612c2b..30cbd73 100644 --- a/src/main/java/com/docutools/jocument/impl/word/WordGenerator.java +++ b/src/main/java/com/docutools/jocument/impl/word/WordGenerator.java @@ -139,7 +139,7 @@ private boolean isCustomPlaceholder(IBodyElement element) { return element instanceof XWPFParagraph xwpfParagraph && resolver.resolve( ParsingUtils.stripBrackets( - WordUtilities.toString(xwpfParagraph).trim() + WordUtilities.toString(xwpfParagraph) )).map(PlaceholderData::getType) .map(type -> type == PlaceholderType.CUSTOM) .orElse(false);