66 lines
3.2 KiB
Java
66 lines
3.2 KiB
Java
package com.discord.utilities.textprocessing;
|
|
|
|
import c.a.t.b.b.e;
|
|
import com.discord.api.channel.Channel;
|
|
import com.discord.api.role.GuildRole;
|
|
import com.discord.models.domain.emoji.EmojiSet;
|
|
import com.discord.models.guild.Guild;
|
|
import com.discord.models.user.User;
|
|
import com.discord.simpleast.core.node.Node;
|
|
import com.discord.simpleast.core.parser.Parser;
|
|
import com.discord.simpleast.core.parser.Rule;
|
|
import d0.t.n;
|
|
import d0.z.d.m;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.regex.Pattern;
|
|
/* compiled from: MessageUnparser.kt */
|
|
public final class MessageUnparser {
|
|
public static final MessageUnparser INSTANCE = new MessageUnparser();
|
|
private static final Pattern PATTERN_CHANNEL_MENTION = Pattern.compile("^<#?(\\d+)>");
|
|
private static final Pattern PATTERN_CUSTOM_EMOJI = Pattern.compile("^<(a)?:(\\w+):(\\d+)>");
|
|
private static final Pattern PATTERN_ROLE_MENTION = Pattern.compile("^<@&?(\\d+)>");
|
|
private static final Pattern PATTERN_USER_MENTION = Pattern.compile("^<@!?(\\d+)>");
|
|
|
|
private MessageUnparser() {
|
|
}
|
|
|
|
private final <T, S> Rule<T, Node<T>, S> getChannelMentionRule(Map<Long, Channel> map) {
|
|
Pattern pattern = PATTERN_CHANNEL_MENTION;
|
|
m.checkNotNullExpressionValue(pattern, "PATTERN_CHANNEL_MENTION");
|
|
return new MessageUnparser$getChannelMentionRule$1(this, map, pattern);
|
|
}
|
|
|
|
private final <T, S> Rule<T, Node<T>, S> getCustomEmojiRule(EmojiSet emojiSet) {
|
|
Pattern pattern = PATTERN_CUSTOM_EMOJI;
|
|
m.checkNotNullExpressionValue(pattern, "PATTERN_CUSTOM_EMOJI");
|
|
return new MessageUnparser$getCustomEmojiRule$1(this, emojiSet, pattern);
|
|
}
|
|
|
|
private final <T, S> Rule<T, Node<T>, S> getRoleMentionRule(List<GuildRole> list) {
|
|
Pattern pattern = PATTERN_ROLE_MENTION;
|
|
m.checkNotNullExpressionValue(pattern, "PATTERN_ROLE_MENTION");
|
|
return new MessageUnparser$getRoleMentionRule$1(this, list, pattern);
|
|
}
|
|
|
|
private final <T, S> Rule<T, Node<T>, S> getUserMentionRule(Map<Long, ? extends User> map) {
|
|
Pattern pattern = PATTERN_USER_MENTION;
|
|
m.checkNotNullExpressionValue(pattern, "PATTERN_USER_MENTION");
|
|
return new MessageUnparser$getUserMentionRule$1(this, map, pattern);
|
|
}
|
|
|
|
public static final CharSequence unparse(String str, Guild guild, Map<Long, Channel> map, Map<Long, ? extends User> map2, EmojiSet emojiSet) {
|
|
List<GuildRole> list;
|
|
m.checkNotNullParameter(str, "rawMessageContent");
|
|
m.checkNotNullParameter(map, "channels");
|
|
m.checkNotNullParameter(map2, "users");
|
|
m.checkNotNullParameter(emojiSet, "emojiSet");
|
|
Parser parser = new Parser(false, 1, null);
|
|
MessageUnparser messageUnparser = INSTANCE;
|
|
Parser addRule = parser.addRule(messageUnparser.getUserMentionRule(map2));
|
|
if (guild == null || (list = guild.getRoles()) == null) {
|
|
list = n.emptyList();
|
|
}
|
|
return AstRenderer.render(Parser.parse$default(addRule.addRule(messageUnparser.getRoleMentionRule(list)).addRule(messageUnparser.getChannelMentionRule(map)).addRule(messageUnparser.getCustomEmojiRule(emojiSet)).addRule(e.h.d()), str, null, null, 4, null), null);
|
|
}
|
|
}
|