From 50c4b37626cc89dd00cb9e72ec50d1d921ffdaec Mon Sep 17 00:00:00 2001 From: qwreey Date: Sat, 6 Jun 2026 15:51:16 +0000 Subject: [PATCH] feat: more structed StrangeRepeatableRegex --- packages/utils/saferKorean.ts | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/packages/utils/saferKorean.ts b/packages/utils/saferKorean.ts index e6cb7e5..b3ba885 100644 --- a/packages/utils/saferKorean.ts +++ b/packages/utils/saferKorean.ts @@ -22,8 +22,6 @@ export function processUnsounds(input: string): string { // 흐아..하아아.. // 아!아!아!아!아! // 흐으..흐아아..헤...하아.. -// 이런 것들을 단일 단어로 치환합니다. 하지만 -// untested // 혀어어어어어어어엉........ 핫. 혀엉..... 흑... 하앗... 흐윽... 형. 하앙. // 혀엉.... 하앙... 흐윽... 항. 항. 형... 하앙. 흐으윽... 형... 흡... 혀엉.. // 하아아앗. 혀엉.. 흡... 흐읍... 형.. 하앗. 하아앙... 형... 하앙... 흐윽... @@ -38,11 +36,26 @@ export function processCensor(input: string): string { /([흐하해헤혀형][아으앙응앗웅응ㅡ!?.,><~'"/]+)/g, (content: string) => content[0] ?? "", ) - .replace( - /[아ㅏ어ㅓ으ㅡ우ㅜ에오ㅗ야ㅑ읍앙읏웃앗엣웅응흐해헤헼헥하형혀흡흑협혓핫헵햅あアうおーaAoOuU][아ㅏ어ㅓ으ㅡ우ㅜ에오ㅗ야ㅑ읍앙읏웃앗엣웅응흐해헤헼헥하형혀흡흑협혓핫헵햅あアうおーaAoOuU!.,><~'"/]{2,}/g, - (content: string) => content.substring(0, 3), + .replace(processCensor.StrangeRepeatableRegex, (content: string) => + content.substring(0, 3), ); } +export namespace processCensor { + // prettier-ignore + export const StrangeRepeatable = [ + "아", "ㅏ", "어", "ㅓ", "으", "ㅡ", "우", "ㅜ", + "에", "오", "ㅗ", "야", "ㅑ", "읍", "앙", "읏", + "웃", "엉", "앗", "엣", "웅", "응", "흐", "해", + "헤", "헼", "헥", "하", "형", "혀", "흡", "흑", + "협", "혓", "핫", "헵", "햅", "잇", + "あ", "ア", "う", "お", "ー", + "a", "A", "o", "O", "u", "U", + ]; + export const StrangeRepeatableRegex = new RegExp( + `[${StrangeRepeatable.join("")}][${StrangeRepeatable.join("")}!.,><~'"/]{2,}`, + "g", + ); +} // 핵토파스칼, 바, 핵타르 AU (에이커 인치 피트 야드)