diff --git a/hwe/ts/ReservedCommand.vue b/hwe/ts/ReservedCommand.vue index b0a1ade8..acf433d3 100644 --- a/hwe/ts/ReservedCommand.vue +++ b/hwe/ts/ReservedCommand.vue @@ -198,7 +198,7 @@ import { mb_strwidth } from "./util/mb_strwidth"; import { parseTime } from "./util/parseTime"; import { parseYearMonth } from "./util/parseYearMonth"; import { sammoAPI } from "./util/sammoAPI"; -import { filter초성 } from "./util/filter초성"; +import { filter초성withAlphabet } from "./util/filter초성withAlphabet"; type commandItem = { value: string; @@ -473,8 +473,8 @@ export default defineComponent({ if(command.searchText){ continue; } - const filteredText = filter초성(command.simpleName).replace(/\s+/g, ''); - command.searchText = `${command.simpleName} ${filteredText}` + const [filteredTextH, filteredTextA] = filter초성withAlphabet(command.simpleName.replace(/\s+/g, '')); + command.searchText = `${command.simpleName} ${filteredTextH} ${filteredTextA}` } } diff --git a/hwe/ts/util/filter초성withAlphabet.ts b/hwe/ts/util/filter초성withAlphabet.ts new file mode 100644 index 00000000..a071b512 --- /dev/null +++ b/hwe/ts/util/filter초성withAlphabet.ts @@ -0,0 +1,24 @@ +export function filter초성withAlphabet(text: string): [string, string] { + const 초성 = [ + "ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", "ㄹ", "ㅁ", "ㅂ", "ㅃ", + "ㅅ", "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", "ㅋ", "ㅌ", "ㅍ", "ㅎ" + ]; + const alphabets = [ + "r", "R", "s", "e", "E", "f", "a", "q", "Q", + "t", "T", "d", "w", "W", "c", "z", "x", "v", "g" + ]; + const resultH: string[] = []; + const resultA: string[] = []; + for (const char of text) { + const code = (char.codePointAt(0) ?? 0) - 44032; + if (0 <= code && code < 11172) { + resultH.push(초성[~~(code / 588)]); + resultA.push(alphabets[~~(code / 588)]); + } + else { + resultH.push(char); + resultA.push(char); + } + } + return [resultH.join(''), resultA.join('')]; +} \ No newline at end of file