menumanager: reuse perfectly fine Matcher instances (#1275)

This commit is contained in:
Lucwousin
2019-08-07 17:06:19 +02:00
committed by Ganom
parent 31bad19dd7
commit 28a4d753c2
4 changed files with 22 additions and 7 deletions

View File

@@ -24,8 +24,11 @@
*/ */
package net.runelite.api; package net.runelite.api;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.Getter;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
/** /**
@@ -83,4 +86,18 @@ public class MenuEntry
src.isForceLeftClick() src.isForceLeftClick()
); );
} }
private static final Matcher TAG_REGEXP = Pattern.compile("<[^>]*>").matcher("");
@Getter(lazy = true)
private final String standardizedOption = standardize(option);
@Getter(lazy = true)
private final String standardizedTarget = standardize(LEVEL_MATCHER.reset(target).replaceAll(""));
public String standardize(String string)
{
return TAG_REGEXP.reset(string).replaceAll("").replace('\u00A0', ' ').trim();
}
private static final Matcher LEVEL_MATCHER = Pattern.compile("\\(level-[0-9]*\\)").matcher("");
} }

View File

@@ -28,7 +28,6 @@ import javax.annotation.Nonnull;
import joptsimple.internal.Strings; import joptsimple.internal.Strings;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import net.runelite.api.MenuEntry; import net.runelite.api.MenuEntry;
import static net.runelite.client.menus.MenuManager.LEVEL_PATTERN;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@@ -52,7 +51,7 @@ public class BaseComparableEntry extends AbstractComparableEntry
public boolean matches(@Nonnull MenuEntry entry) public boolean matches(@Nonnull MenuEntry entry)
{ {
String opt = Text.standardize(entry.getOption()); String opt = entry.getStandardizedOption();
if (strictOption && !opt.equals(option) || !strictOption && !opt.contains(option)) if (strictOption && !opt.equals(option) || !strictOption && !opt.contains(option))
{ {
@@ -61,7 +60,7 @@ public class BaseComparableEntry extends AbstractComparableEntry
if (strictTarget || !Strings.isNullOrEmpty(target)) if (strictTarget || !Strings.isNullOrEmpty(target))
{ {
String tgt = Text.standardize(LEVEL_PATTERN.matcher(entry.getTarget()).replaceAll("")); String tgt = entry.getStandardizedTarget();
if (strictTarget && !tgt.equals(target) || !strictTarget && !tgt.contains(target)) if (strictTarget && !tgt.equals(target) || !strictTarget && !tgt.contains(target))
{ {

View File

@@ -40,7 +40,6 @@ import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.inject.Inject; import javax.inject.Inject;
@@ -75,7 +74,6 @@ public class MenuManager
*/ */
private static final int IDX_LOWER = 4; private static final int IDX_LOWER = 4;
private static final int IDX_UPPER = 8; private static final int IDX_UPPER = 8;
static final Pattern LEVEL_PATTERN = Pattern.compile("\\(level-[0-9]*\\)");
private final Client client; private final Client client;
private final EventBus eventBus; private final EventBus eventBus;

View File

@@ -30,6 +30,7 @@ import com.google.common.base.Joiner;
import com.google.common.base.Splitter; import com.google.common.base.Splitter;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import org.apache.commons.text.WordUtils; import org.apache.commons.text.WordUtils;
@@ -38,7 +39,7 @@ import org.apache.commons.text.WordUtils;
*/ */
public class Text public class Text
{ {
private static final Pattern TAG_REGEXP = Pattern.compile("<[^>]*>"); private static final Matcher TAG_REGEXP = Pattern.compile("<[^>]*>").matcher("");
private static final Splitter COMMA_SPLITTER = Splitter private static final Splitter COMMA_SPLITTER = Splitter
.on(",") .on(",")
.omitEmptyStrings() .omitEmptyStrings()
@@ -78,7 +79,7 @@ public class Text
*/ */
public static String removeTags(String str) public static String removeTags(String str)
{ {
return TAG_REGEXP.matcher(str).replaceAll(""); return TAG_REGEXP.reset(str).replaceAll("");
} }
/** /**