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
This commit is contained in:
Kamiel
2018-10-08 15:18:48 +02:00
committed by Tomas Slusny
parent 82bb383883
commit 44dcba2f10
2 changed files with 25 additions and 3 deletions

View File

@@ -25,10 +25,11 @@
*/ */
package net.runelite.client.plugins.chatnotifications; package net.runelite.client.plugins.chatnotifications;
import com.google.common.base.Splitter;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.Arrays; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import static java.util.regex.Pattern.quote; import static java.util.regex.Pattern.quote;
@@ -56,6 +57,8 @@ import net.runelite.client.util.Text;
) )
public class ChatNotificationsPlugin extends Plugin public class ChatNotificationsPlugin extends Plugin
{ {
private static final Splitter SPLITTER = Splitter.on(",").trimResults().omitEmptyStrings();
@Inject @Inject
private Client client; private Client client;
@@ -115,8 +118,8 @@ public class ChatNotificationsPlugin extends Plugin
if (!config.highlightWordsString().trim().equals("")) if (!config.highlightWordsString().trim().equals(""))
{ {
String[] items = config.highlightWordsString().trim().split(", "); List<String> items = SPLITTER.splitToList(config.highlightWordsString());
String joined = Arrays.stream(items) String joined = items.stream()
.map(Pattern::quote) .map(Pattern::quote)
.collect(Collectors.joining("|")); .collect(Collectors.joining("|"));
highlightMatcher = Pattern.compile("\\b(" + joined + ")\\b", Pattern.CASE_INSENSITIVE); highlightMatcher = Pattern.compile("\\b(" + joined + ")\\b", Pattern.CASE_INSENSITIVE);

View File

@@ -24,9 +24,12 @@
*/ */
package net.runelite.client.plugins.chatnotifications; package net.runelite.client.plugins.chatnotifications;
import com.google.common.base.Splitter;
import com.google.inject.Guice; import com.google.inject.Guice;
import com.google.inject.testing.fieldbinder.Bind; import com.google.inject.testing.fieldbinder.Bind;
import com.google.inject.testing.fieldbinder.BoundFieldModule; import com.google.inject.testing.fieldbinder.BoundFieldModule;
import java.util.Iterator;
import java.util.List;
import javax.inject.Inject; import javax.inject.Inject;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.Client; import net.runelite.api.Client;
@@ -34,6 +37,7 @@ import net.runelite.api.MessageNode;
import net.runelite.api.events.SetMessage; import net.runelite.api.events.SetMessage;
import net.runelite.client.Notifier; import net.runelite.client.Notifier;
import net.runelite.client.chat.ChatMessageManager; import net.runelite.client.chat.ChatMessageManager;
import static org.junit.Assert.assertEquals;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
@@ -88,4 +92,19 @@ public class ChatNotificationsPluginTest
verify(messageNode).setValue("<colHIGHLIGHT>Deathbeam<colNORMAL>, <colHIGHLIGHT>Deathbeam<colNORMAL> OSRS"); verify(messageNode).setValue("<colHIGHLIGHT>Deathbeam<colNORMAL>, <colHIGHLIGHT>Deathbeam<colNORMAL> OSRS");
} }
@Test
public void highlightListTest()
{
when(config.highlightWordsString()).thenReturn("this,is, a , test, ");
final Splitter splitter = Splitter.on(",").trimResults().omitEmptyStrings();
final List<String> higlights = splitter.splitToList(config.highlightWordsString());
assertEquals(4, higlights.size());
final Iterator<String> iterator = higlights.iterator();
assertEquals("this", iterator.next());
assertEquals("is", iterator.next());
assertEquals("a", iterator.next());
assertEquals("test", iterator.next());
}
} }