♻️ 优化切分正则

*PostID: 46252606
*thanks @Lightczx
This commit is contained in:
BTMuli
2023-12-10 20:55:06 +08:00
parent d4818448b5
commit 0965524003

View File

@@ -62,7 +62,7 @@ onMounted(async () => {
mode.value = "emoji"; mode.value = "emoji";
} else if (count > 1) { } else if (count > 1) {
mode.value = "emojis"; mode.value = "emojis";
emojis.value = await parseEmojis(props.data); emojis.value = parseEmojis(props.data);
} else { } else {
mode.value = "text"; mode.value = "text";
} }
@@ -79,29 +79,15 @@ function countEmoji(text: string): number {
} }
// 解析表情 // 解析表情
async function parseEmojis(text: TpText): Promise<TpText[]> { function parseEmojis(text: TpText): TpText[] {
if (localEmojis.value == null) { // thanks, @Lightczx & webstorm
localEmojis.value = JSON.stringify(await getEmojis()); const reg = /(?<=\n|.+?|^)(_\(.+?\)(?=\n|.+?|$))/g;
localStorage.setItem("emojis", localEmojis.value); return text.insert.split(reg).map((item) => {
} return {
const parseEmojis = JSON.parse(localEmojis.value); insert: item,
const res: TpText[] = []; attributes: text.attributes,
const reg = /_\((.*?)\)/g; };
const resSplit = text.insert.split(reg); });
for (let i = 0; i < resSplit.length; i++) {
const item = resSplit[i];
if (parseEmojis[item]) {
res.push({
insert: `_(${item})`,
});
} else {
res.push({
insert: item,
attributes: text.attributes,
});
}
}
return res;
} }
// 解析文本样式 // 解析文本样式