diff --git a/commons/src/main/java/org/wikimedia/commons/modifications/TemplateRemoveModifier.java b/commons/src/main/java/org/wikimedia/commons/modifications/TemplateRemoveModifier.java index 4cc6bc84f..ebb74adf0 100644 --- a/commons/src/main/java/org/wikimedia/commons/modifications/TemplateRemoveModifier.java +++ b/commons/src/main/java/org/wikimedia/commons/modifications/TemplateRemoveModifier.java @@ -12,10 +12,6 @@ public class TemplateRemoveModifier extends PageModifier { public static final String PARAM_TEMPLATE_NAME = "template"; - public static final Pattern PATTERN_TEMPLATE_OPEN = Pattern.compile("\\{\\{"); - public static final Pattern PATTERN_TEMPLATE_CLOSE = Pattern.compile("\\}\\}"); - - public TemplateRemoveModifier(String templateName) { super(MODIFIER_NAME); try { @@ -30,6 +26,7 @@ public class TemplateRemoveModifier extends PageModifier { this.params = data; } + // Never get into a land war in Asia. @Override public String doModification(String pageName, String pageContents) { String templateRawName = params.optString(PARAM_TEMPLATE_NAME); @@ -47,13 +44,14 @@ public class TemplateRemoveModifier extends PageModifier { int startIndex = matcher.start(); int curIndex = matcher.end(); while(curIndex < pageContents.length()) { - if(PATTERN_TEMPLATE_OPEN.matcher(pageContents).find(curIndex)) { + if(pageContents.substring(curIndex, curIndex + 2).equals("{{")) { braceCount++; - } else if(PATTERN_TEMPLATE_CLOSE.matcher(pageContents).find(curIndex)) { + } else if(pageContents.substring(curIndex, curIndex + 2).equals("}}")) { braceCount--; } curIndex++; if(braceCount == 0) { + curIndex++; // To account for the last brace in the closing }} pair break; } }