VcNarrator: Improve username cleaning to support non ascii chars

This commit is contained in:
V 2023-05-29 16:00:02 +02:00
parent 9023d45d9e
commit 7568bbaed0
No known key found for this signature in database
GPG Key ID: A1DC0CFB5615D905

View File

@ -59,17 +59,20 @@ function speak(text: string, settings: any = Settings.plugins.VcNarrator) {
speechSynthesis.speak(speech);
}
function clean(str: string, fallback: string) {
function clean(str: string) {
const replacer = Settings.plugins.VcNarrator.latinOnly
? /[^\p{Script=Latin}\p{Number}\p{Punctuation}\s]/gu
: /[^\p{Letter}\p{Number}\p{Punctuation}\s]/gu;
return str.normalize("NFKC")
.replace(/[^\w ]/g, "")
.trim()
|| fallback;
.replace(replacer, "")
.trim();
}
function formatText(str: string, user: string, channel: string) {
return str
.replaceAll("{{USER}}", clean(user, user ? "Someone" : ""))
.replaceAll("{{CHANNEL}}", clean(channel, "channel"));
.replaceAll("{{USER}}", clean(user) || user ? "Someone" : "")
.replaceAll("{{CHANNEL}}", clean(channel) || "channel");
}
/*
@ -235,6 +238,11 @@ export default definePlugin({
type: OptionType.BOOLEAN,
default: false
},
latinOnly: {
description: "Strip non latin characters from names before saying them",
type: OptionType.BOOLEAN,
default: false
},
joinMessage: {
type: OptionType.STRING,
description: "Join Message",