From bae71f143fdd9b3a674374b97bd31913e8898d70 Mon Sep 17 00:00:00 2001 From: askmeaboutloom Date: Fri, 27 Sep 2024 21:37:28 +0200 Subject: [PATCH] Use letter and number classes in tag replacements For Mastodon-alikes, Misskey, Bluesky and Twitter. Instead of replacing all non-English letters and non-Arabic digits with nothing and causing those tags to disappear, they now use proper Unicode character classes for letters and numbers that will allow other scripts through while still replacing punctuation and whatnot. --- electron-app/src/server/websites/bluesky/bluesky.service.ts | 4 +++- .../src/server/websites/megalodon/megalodon.service.ts | 4 +++- electron-app/src/server/websites/misskey/misskey.service.ts | 2 +- electron-app/src/server/websites/twitter/twitter.service.ts | 4 +++- 4 files changed, 10 insertions(+), 4 deletions(-) diff --git a/electron-app/src/server/websites/bluesky/bluesky.service.ts b/electron-app/src/server/websites/bluesky/bluesky.service.ts index 770bfdd2..ad5e2d12 100644 --- a/electron-app/src/server/websites/bluesky/bluesky.service.ts +++ b/electron-app/src/server/websites/bluesky/bluesky.service.ts @@ -182,7 +182,9 @@ export class Bluesky extends Website { formatTags(tags: string[]) { return this.parseTags( - tags.map(tag => tag.replace(/[^a-z0-9]/gi, ' ')).map(tag => tag.split(' ').join('')), + tags + .map(tag => tag.replace(/[^\p{Letter}\p{Number}]/giu, ' ')) + .map(tag => tag.split(' ').join('')), { spaceReplacer: '_' }, ).map(tag => `#${tag}`); } diff --git a/electron-app/src/server/websites/megalodon/megalodon.service.ts b/electron-app/src/server/websites/megalodon/megalodon.service.ts index d7bfcca0..ecf1eac7 100644 --- a/electron-app/src/server/websites/megalodon/megalodon.service.ts +++ b/electron-app/src/server/websites/megalodon/megalodon.service.ts @@ -220,7 +220,9 @@ export abstract class Megalodon extends Website { formatTags(tags: string[]) { return this.parseTags( - tags.map(tag => tag.replace(/[^a-z0-9]/gi, ' ')).map(tag => tag.split(' ').join('')), + tags + .map(tag => tag.replace(/[^\p{Letter}\p{Number}]/giu, ' ')) + .map(tag => tag.split(' ').join('')), { spaceReplacer: '_' }, ).map(tag => `#${tag}`); } diff --git a/electron-app/src/server/websites/misskey/misskey.service.ts b/electron-app/src/server/websites/misskey/misskey.service.ts index fd2c7847..ad4d89d1 100644 --- a/electron-app/src/server/websites/misskey/misskey.service.ts +++ b/electron-app/src/server/websites/misskey/misskey.service.ts @@ -213,7 +213,7 @@ export class MissKey extends Website { formatTags(tags: string[]) { return this.parseTags( tags - .map(tag => tag.replace(/[^a-z0-9]/gi, ' ')) + .map(tag => tag.replace(/[^\p{Letter}\p{Number}]/giu, ' ')) .map(tag => tag .split(' ') diff --git a/electron-app/src/server/websites/twitter/twitter.service.ts b/electron-app/src/server/websites/twitter/twitter.service.ts index 51918c9b..38939a6d 100644 --- a/electron-app/src/server/websites/twitter/twitter.service.ts +++ b/electron-app/src/server/websites/twitter/twitter.service.ts @@ -61,7 +61,9 @@ export class Twitter extends Website { formatTags(tags: string[]) { return this.parseTags( - tags.map(tag => tag.replace(/[^a-z0-9]/gi, ' ')).map(tag => tag.split(' ').join('')), + tags + .map(tag => tag.replace(/[^\p{Letter}\p{Number}]/giu, ' ')) + .map(tag => tag.split(' ').join('')), { spaceReplacer: '_' }, ).map(tag => `#${tag}`); }