[BUG] Fix Markdown not being stripped when formatting is disabled. SDLink
This commit is contained in:
@@ -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());
|
||||||
|
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user