From 44dcba2f105e6bc1191d5e8813c760b38f78a904 Mon Sep 17 00:00:00 2001 From: Kamiel <35824069+Kamielvf@users.noreply.github.com> Date: Mon, 8 Oct 2018 15:18:48 +0200 Subject: [PATCH] Fix chat notification highlight words split regex (#5798) Fixes an issue where the chat notifications plugin would not split word highlights with input as `some,highlight` even though they are supposed to be valid --- .../ChatNotificationsPlugin.java | 9 ++++++--- .../ChatNotificationsPluginTest.java | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPlugin.java index ecbd4730bc..3199e27fe4 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPlugin.java @@ -25,10 +25,11 @@ */ package net.runelite.client.plugins.chatnotifications; +import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.google.common.eventbus.Subscribe; import com.google.inject.Provides; -import java.util.Arrays; +import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import static java.util.regex.Pattern.quote; @@ -56,6 +57,8 @@ import net.runelite.client.util.Text; ) public class ChatNotificationsPlugin extends Plugin { + private static final Splitter SPLITTER = Splitter.on(",").trimResults().omitEmptyStrings(); + @Inject private Client client; @@ -115,8 +118,8 @@ public class ChatNotificationsPlugin extends Plugin if (!config.highlightWordsString().trim().equals("")) { - String[] items = config.highlightWordsString().trim().split(", "); - String joined = Arrays.stream(items) + List items = SPLITTER.splitToList(config.highlightWordsString()); + String joined = items.stream() .map(Pattern::quote) .collect(Collectors.joining("|")); highlightMatcher = Pattern.compile("\\b(" + joined + ")\\b", Pattern.CASE_INSENSITIVE); diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPluginTest.java index 93afbc9850..59e687a8c8 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPluginTest.java @@ -24,9 +24,12 @@ */ package net.runelite.client.plugins.chatnotifications; +import com.google.common.base.Splitter; import com.google.inject.Guice; import com.google.inject.testing.fieldbinder.Bind; import com.google.inject.testing.fieldbinder.BoundFieldModule; +import java.util.Iterator; +import java.util.List; import javax.inject.Inject; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; @@ -34,6 +37,7 @@ import net.runelite.api.MessageNode; import net.runelite.api.events.SetMessage; import net.runelite.client.Notifier; import net.runelite.client.chat.ChatMessageManager; +import static org.junit.Assert.assertEquals; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -88,4 +92,19 @@ public class ChatNotificationsPluginTest verify(messageNode).setValue("Deathbeam, Deathbeam OSRS"); } + + @Test + public void highlightListTest() + { + when(config.highlightWordsString()).thenReturn("this,is, a , test, "); + final Splitter splitter = Splitter.on(",").trimResults().omitEmptyStrings(); + final List higlights = splitter.splitToList(config.highlightWordsString()); + assertEquals(4, higlights.size()); + + final Iterator iterator = higlights.iterator(); + assertEquals("this", iterator.next()); + assertEquals("is", iterator.next()); + assertEquals("a", iterator.next()); + assertEquals("test", iterator.next()); + } } \ No newline at end of file