From e0c23a6038411b2295dd83bf7021ae2c3534f523 Mon Sep 17 00:00:00 2001 From: YuviPanda Date: Tue, 23 Apr 2013 20:38:36 +0530 Subject: [PATCH] Make TemplateRemoveer *actually* remove templates Strangely, the \}\} regex seems to match the | character. Weird, confusing and scary. This *might* be an ICU Regex vs Java native Regex thing, or it might be something more subtle / obvious that I am missing. However since we're simply doing character matches, doing a simple equals should suffice for this. Goddamn wikitext. Bug: 47380 --- .../commons/modifications/TemplateRemoveModifier.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) 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; } }