From f49d16f8e2e28765f90c7c48e376abe46fbd2c83 Mon Sep 17 00:00:00 2001 From: kimpure Date: Fri, 22 May 2026 15:00:11 +0000 Subject: [PATCH] Add full width number mapping --- packages/utils/emoji-descriptions.json | 3 ++- packages/utils/saferKorean.ts | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/packages/utils/emoji-descriptions.json b/packages/utils/emoji-descriptions.json index a5906c2..fc75f1b 100644 --- a/packages/utils/emoji-descriptions.json +++ b/packages/utils/emoji-descriptions.json @@ -211,6 +211,7 @@ "๐Ÿ‘…": "ํ˜€", "๐Ÿ‘„": "์ž…", "๐Ÿซฆ": "์ž…์ˆ ์„ ๊นจ๋ฌผ๋‹ค", + "๐Ÿง›โ€โ™‚๏ธ": "๋ฑ€ํŒŒ์ด์–ด", "๐Ÿ‘ถ": "์•„๊ธฐ", "๐Ÿง’": "์–ด๋ฆฐ์ด", "๐Ÿ‘ฆ": "์†Œ๋…„", @@ -1265,7 +1266,7 @@ "โšœ": "ํ”Œ๋ขฐ๋ฅด ๋“œ ๋ฆฌ", "๐Ÿ”ฑ": "์‚ผ์ง€์ฐฝ ์— ๋ธ”๋Ÿผ", "๐Ÿ“›": "์ด๋ฆ„๋ฐฐ์ง€", - "๐Ÿ”ฐ": "์ดˆ๊ธ‰์„ ๋œปํ•˜๋Š” ์ผ๋ณธ์–ด ๊ธฐํ˜ธ", + "๐Ÿ”ฐ": "์ดˆ๊ธ‰ ๊ธฐํ˜ธ", "โญ•": "์†์ด ๋นˆ ๋ถ‰์€ ์›", "โœ…": "์ฒดํฌ ํ‘œ์‹œ ๋ฒ„ํŠผ", "โ˜‘": "์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์žˆ๋Š” ์ฒดํฌ๋ฐ•์Šค", diff --git a/packages/utils/saferKorean.ts b/packages/utils/saferKorean.ts index 6e2ebb7..533291e 100644 --- a/packages/utils/saferKorean.ts +++ b/packages/utils/saferKorean.ts @@ -57,6 +57,7 @@ export function processKorean(input: string): string { } export namespace processKorean { export const DoubleMixedChoseongMap = { + ใ…‡ใ…ƒใ……ใ„น: "์ด์œ์‚ฌ๋ž‘", ใ…‡ใ…ˆใ„น: "์ด์ง€๋ž„", ใ…ˆใ„นใ„ด: "์ง€๋ž„๋…ธ", ใ…Žใ…‡: "ํ•˜์ด", @@ -519,9 +520,27 @@ export namespace processIsolatedSymbol { }; } +export function processFullWidth(input: string): string { + return input.replace( + /[๏ผ‘๏ผ’๏ผ“๏ผ”๏ผ•๏ผ–๏ผ—๏ผ˜๏ผ™๏ผ]/g, + (i) => + processFullWidth.FullWidthNumberMap[ + i as keyof typeof processFullWidth.FullWidthNumberMap + ], + ); +} +export namespace processFullWidth { + // prettier-ignore + export const FullWidthNumberMap = { + "๏ผ": "0", "๏ผ‘": "1", "๏ผ’": "2", "๏ผ“": "3", "๏ผ”": "4", + "๏ผ•": "5", "๏ผ–": "6", "๏ผ—": "7", "๏ผ˜": "8", "๏ผ™": "9", + }; +} + export function saferKorean(input: string): string { return (input.normalize() + " ") .let((i) => processUnsounds(i)) + .let((i) => processFullWidth(i)) .let((i) => processIsolatedSymbol(i)) .let((i) => processMarkdown(i)) .let((i) => processKorean(i))