From 3f35cb25c3ade1dc833df37e8e4e19c65bd96776 Mon Sep 17 00:00:00 2001 From: Krazy Date: Tue, 19 Aug 2014 21:24:36 +0000 Subject: [PATCH] Temporary fix for multiple search terms being treated as one. --- .../java/forge/itemmanager/SFilterUtil.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/forge-gui/src/main/java/forge/itemmanager/SFilterUtil.java b/forge-gui/src/main/java/forge/itemmanager/SFilterUtil.java index 0bbf94f711f..d37ed9745df 100644 --- a/forge-gui/src/main/java/forge/itemmanager/SFilterUtil.java +++ b/forge-gui/src/main/java/forge/itemmanager/SFilterUtil.java @@ -35,11 +35,15 @@ public class SFilterUtil { return Predicates.alwaysTrue(); } - BooleanExpression expression = new BooleanExpression(text, inName, inType, inText, inCost); - - Predicate filter = expression.evaluate(); - if (filter != null) { - return Predicates.compose(invert ? Predicates.not(filter) : filter, PaperCard.FN_GET_RULES); + if (BooleanExpression.isExpression(text)) { + + BooleanExpression expression = new BooleanExpression(text, inName, inType, inText, inCost); + + Predicate filter = expression.evaluate(); + if (filter != null) { + return Predicates.compose(invert ? Predicates.not(filter) : filter, PaperCard.FN_GET_RULES); + } + } String[] splitText = text.replaceAll(",", "").replaceAll(" ", " ").split(" "); @@ -123,6 +127,10 @@ public class SFilterUtil { parse(); } + private static boolean isExpression(String text) { + return text.contains(Operation.AND.token) || text.contains(Operation.OR.token); + } + private void parse() { Tokenizer tokenizer = new Tokenizer(text);