[BUG] Fix Markdown not being stripped when formatting is disabled. SDLink

This commit is contained in:
2024-07-21 12:28:22 +02:00
parent e895a71cad
commit df50b0e82d
3 changed files with 37 additions and 5 deletions

View File

@@ -14,12 +14,9 @@ import net.minecraft.Util;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.core.HolderLookup; import net.minecraft.core.HolderLookup;
import net.minecraft.core.RegistryAccess; import net.minecraft.core.RegistryAccess;
import net.minecraft.data.registries.VanillaRegistries;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.Style; import net.minecraft.network.chat.Style;
import java.util.function.Consumer;
public class ChatUtils { public class ChatUtils {
private static final GsonComponentSerializer adventureSerializer = GsonComponentSerializer.builder().options( private static final GsonComponentSerializer adventureSerializer = GsonComponentSerializer.builder().options(
@@ -70,7 +67,7 @@ public class ChatUtils {
public static String resolve(net.kyori.adventure.text.Component component, boolean formatted) { public static String resolve(net.kyori.adventure.text.Component component, boolean formatted) {
Component c = adventureToMojang(component); Component c = adventureToMojang(component);
String returnVal = ChatFormatting.stripFormatting(c.getString()); String returnVal = ChatFormatting.stripFormatting(DiscordMarkdownStripper.stripMarkdown(c.getString()));
if (formatted) { if (formatted) {
returnVal = DiscordSerializer.INSTANCE.serialize(safeCopy(c).copy()); returnVal = DiscordSerializer.INSTANCE.serialize(safeCopy(c).copy());

View File

@@ -0,0 +1,35 @@
package com.hypherionmc.craterlib.utils;
import org.jetbrains.annotations.NotNull;
import java.util.regex.Pattern;
public class DiscordMarkdownStripper {
// Patterns for different markdown syntaxes
private static final Pattern BOLD = Pattern.compile("\\*\\*(.*?)\\*\\*");
private static final Pattern ITALIC_UNDERSCORE = Pattern.compile("_(.*?)_");
private static final Pattern ITALIC_ASTERISK = Pattern.compile("\\*(.*?)\\*");
private static final Pattern UNDERLINE = Pattern.compile("__(.*?)__");
private static final Pattern STRIKETHROUGH = Pattern.compile("~~(.*?)~~");
private static final Pattern CODE_BLOCK = Pattern.compile("```(.+?)```", Pattern.DOTALL);
private static final Pattern INLINE_CODE = Pattern.compile("`([^`]*)`");
private static final Pattern BLOCKQUOTE = Pattern.compile("^> (.*?$)", Pattern.MULTILINE);
private static final Pattern MARKDOWN_LINK = Pattern.compile("\\[(.*?)\\]\\((.*?)\\)");
private static final Pattern PLAIN_URL = Pattern.compile("\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]");
public static String stripMarkdown(@NotNull String text) {
text = BOLD.matcher(text).replaceAll("$1");
text = ITALIC_UNDERSCORE.matcher(text).replaceAll("$1");
text = ITALIC_ASTERISK.matcher(text).replaceAll("$1");
text = UNDERLINE.matcher(text).replaceAll("$1");
text = STRIKETHROUGH.matcher(text).replaceAll("$1");
text = CODE_BLOCK.matcher(text).replaceAll("$1");
text = INLINE_CODE.matcher(text).replaceAll("$1");
text = BLOCKQUOTE.matcher(text).replaceAll("$1");
text = MARKDOWN_LINK.matcher(text).replaceAll("$1");
text = PLAIN_URL.matcher(text).replaceAll("<$0>");
return text;
}
}

View File

@@ -2,7 +2,7 @@
version_major=2 version_major=2
version_minor=0 version_minor=0
version_patch=2 version_patch=2
version_build=1 version_build=0
#Mod #Mod
mod_author=HypherionSA mod_author=HypherionSA