Merge pull request #931 from Joshua-F/feat/removeTags
Add a util method for removing tags
This commit is contained in:
@@ -39,6 +39,7 @@ import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Nightmare Zone"
|
||||
@@ -110,7 +111,7 @@ public class NightmareZonePlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
String msg = event.getMessage().replaceAll("<[^>]*>", " "); //remove color and linebreaks
|
||||
String msg = Text.removeTags(event.getMessage()); //remove color and linebreaks
|
||||
if (msg.contains("The effects of overload have worn off, and you feel normal again."))
|
||||
{
|
||||
notifier.notify("Your overload has worn off");
|
||||
|
||||
@@ -45,6 +45,7 @@ import net.runelite.client.ui.overlay.OverlayPosition;
|
||||
import net.runelite.client.ui.overlay.OverlayPriority;
|
||||
import net.runelite.client.ui.overlay.components.BackgroundComponent;
|
||||
import net.runelite.client.ui.overlay.components.TextComponent;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
class OpponentInfoOverlay extends Overlay
|
||||
{
|
||||
@@ -120,14 +121,14 @@ class OpponentInfoOverlay extends Overlay
|
||||
{
|
||||
lastTime = Instant.now();
|
||||
lastRatio = (float) opponent.getHealthRatio() / (float) opponent.getHealth();
|
||||
opponentName = opponent.getName().replaceAll("<[^>]*>", "");
|
||||
opponentName = Text.removeTags(opponent.getName());
|
||||
lastMaxHealth = oppInfoHealth.get(opponentName + "_" + opponent.getCombatLevel());
|
||||
|
||||
Actor opponentsOpponent = opponent.getInteracting();
|
||||
if (opponentsOpponent != null
|
||||
&& (opponentsOpponent != client.getLocalPlayer() || client.getSetting(Varbits.MULTICOMBAT_AREA) == 1))
|
||||
{
|
||||
opponentsOpponentName = opponentsOpponent.getName().replaceAll("<[^>]*>", "");
|
||||
opponentsOpponentName = Text.removeTags(opponentsOpponent.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -68,6 +68,7 @@ import net.runelite.client.plugins.raids.solver.LayoutSolver;
|
||||
import net.runelite.client.plugins.raids.solver.RotationSolver;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Chambers Of Xeric"
|
||||
@@ -252,7 +253,7 @@ public class RaidsPlugin extends Plugin
|
||||
{
|
||||
if (inRaidChambers && event.getType() == ChatMessageType.CLANCHAT_INFO)
|
||||
{
|
||||
String message = event.getMessage().replaceAll("<[^>]*>", "");
|
||||
String message = Text.removeTags(event.getMessage());
|
||||
|
||||
if (config.raidsTimer() && message.startsWith(RAID_START_MESSAGE))
|
||||
{
|
||||
|
||||
@@ -81,6 +81,7 @@ import net.runelite.client.plugins.screenshot.imgur.ImageUploadResponse;
|
||||
import net.runelite.client.ui.ClientUI;
|
||||
import net.runelite.client.ui.FontManager;
|
||||
import net.runelite.client.ui.overlay.OverlayRenderer;
|
||||
import net.runelite.client.util.Text;
|
||||
import net.runelite.http.api.RuneLiteAPI;
|
||||
import okhttp3.Call;
|
||||
import okhttp3.Callback;
|
||||
@@ -227,7 +228,7 @@ public class ScreenshotPlugin extends Plugin
|
||||
|
||||
if (chatMessage.contains("You have completed") && chatMessage.contains("Treasure"))
|
||||
{
|
||||
Matcher m = NUMBER_PATTERN.matcher(chatMessage.replaceAll("<[^>]*>", ""));
|
||||
Matcher m = NUMBER_PATTERN.matcher(Text.removeTags(chatMessage));
|
||||
if (m.find())
|
||||
{
|
||||
clueNumber = Integer.valueOf(m.group());
|
||||
@@ -238,7 +239,7 @@ public class ScreenshotPlugin extends Plugin
|
||||
|
||||
if (chatMessage.startsWith("Your Barrows chest count is"))
|
||||
{
|
||||
Matcher m = NUMBER_PATTERN.matcher(chatMessage.replaceAll("<[^>]*>", ""));
|
||||
Matcher m = NUMBER_PATTERN.matcher(Text.removeTags(chatMessage));
|
||||
if (m.find())
|
||||
{
|
||||
barrowsNumber = Integer.valueOf(m.group());
|
||||
@@ -248,7 +249,7 @@ public class ScreenshotPlugin extends Plugin
|
||||
|
||||
if (chatMessage.startsWith("Your completed Chambers of Xeric count is:"))
|
||||
{
|
||||
Matcher m = NUMBER_PATTERN.matcher(chatMessage.replaceAll("<[^>]*>", ""));
|
||||
Matcher m = NUMBER_PATTERN.matcher(Text.removeTags(chatMessage));
|
||||
if (m.find())
|
||||
{
|
||||
raidsNumber = Integer.valueOf(m.group());
|
||||
|
||||
@@ -53,6 +53,7 @@ import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.task.Schedule;
|
||||
import net.runelite.client.ui.overlay.Overlay;
|
||||
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Slayer"
|
||||
@@ -155,7 +156,7 @@ public class SlayerPlugin extends Plugin
|
||||
Widget NPCDialog = client.getWidget(WidgetInfo.DIALOG_NPC_TEXT);
|
||||
if (NPCDialog != null)
|
||||
{
|
||||
String NPCText = NPCDialog.getText().replaceAll("<[^>]*>", " "); //remove color and linebreaks
|
||||
String NPCText = Text.removeTags(NPCDialog.getText()); //remove color and linebreaks
|
||||
Matcher mAssign = NPC_ASSIGN_MESSAGE.matcher(NPCText); //number, name
|
||||
Matcher mCurrent = NPC_CURRENT_MESSAGE.matcher(NPCText); //name, number
|
||||
boolean found1 = mAssign.find();
|
||||
@@ -193,7 +194,7 @@ public class SlayerPlugin extends Plugin
|
||||
return;
|
||||
}
|
||||
|
||||
String chatMsg = event.getMessage().replaceAll("<[^>]*>", ""); //remove color and linebreaks
|
||||
String chatMsg = Text.removeTags(event.getMessage()); //remove color and linebreaks
|
||||
if (chatMsg.endsWith("; return to a Slayer master."))
|
||||
{
|
||||
Matcher mComplete = CHAT_COMPLETE_MESSAGE.matcher(chatMsg);
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Joshua Filby <joshua@filby.me>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.util;
|
||||
|
||||
/**
|
||||
* A set of utilities to use when dealing with text.
|
||||
*/
|
||||
public class Text
|
||||
{
|
||||
|
||||
/**
|
||||
* Removes all tags from the given `str`.
|
||||
*
|
||||
* @param str The string to remove tags from.
|
||||
* @return The given `str` with all tags removed from it.
|
||||
*/
|
||||
public static String removeTags(String str)
|
||||
{
|
||||
StringBuilder builder = new StringBuilder(str.length());
|
||||
boolean inTag = false;
|
||||
|
||||
for (int i = 0; i < str.length(); i++)
|
||||
{
|
||||
char currentChar = str.charAt(i);
|
||||
|
||||
if (currentChar == '<')
|
||||
{
|
||||
inTag = true;
|
||||
}
|
||||
else if (currentChar == '>')
|
||||
{
|
||||
inTag = false;
|
||||
}
|
||||
else if (!inTag)
|
||||
{
|
||||
builder.append(currentChar);
|
||||
}
|
||||
}
|
||||
|
||||
return builder.toString();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Joshua Filby <joshua@filby.me>
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.util;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import org.junit.Test;
|
||||
|
||||
public class TextTest
|
||||
{
|
||||
@Test
|
||||
public void removeTags()
|
||||
{
|
||||
assertEquals("Test", Text.removeTags("<col=FFFFFF>Test</col>"));
|
||||
assertEquals("Test", Text.removeTags("<img=1><s>Test</s>"));
|
||||
assertEquals("Zezima (level-126)", Text.removeTags("<col=ffffff><img=2>Zezima<col=00ffff> (level-126)"));
|
||||
assertEquals("", Text.removeTags("<colrandomtext test>"));
|
||||
assertEquals("Not so much.", Text.removeTags("<col=FFFFFF This is a very special message.</col>Not so much."));
|
||||
assertEquals("Remove no tags", Text.removeTags("Remove no tags"));
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user