[Feature]: 초성검색 시 겹자음 검색
Description
Windows OS의 경우 자음을 연달아 입력 할 경우 겹자음이 입력됨 (예: 'ㄹㅁ' 입력 시 -> 'ㄻ' 입력 됨)
chosungIncludes('라면', 'ㄹㅁ') // true
chosungIncludes('라면', 'ㄻ') // false
Possible Solution
https://github.com/toss/es-hangul/blob/7bec39c6bd339605b0da229e730cddeb1de62cb3/src/chosungIncludes.ts#L27 to be
if (disassembled.length === 1 || disassembled.length === 2) {
return disassembled.every(canBeChosung);
}
return false;
or
if (disassembled.length === 1) {
return canBeChosung(disassembled[0]);
}
if (disassembled.length === 2) {
return canBeChosung(disassembled[0]) && canBeJungsung(disassembled[1]);
}
return false;
or
switch (disassembled.length) {
case 1:
return canBeChosung(disassembled[0]);
case 2:
return canBeChosung(disassembled[0]) && canBeJungsung(disassembled[1]);
}
return false;
https://github.com/toss/es-hangul/blob/7bec39c6bd339605b0da229e730cddeb1de62cb3/src/chosungIncludes.ts#L12 to be
const chosungY = disassembleHangul(trimmedY);
https://github.com/toss/es-hangul/blob/7bec39c6bd339605b0da229e730cddeb1de62cb3/src/chosungIncludes.ts#L1 to be
import { disassembleHangulToGroups, disassembleHangul } from './disassemble';
etc.
No response
안녕하세요! 좋은 이슈 제보해주셔서 감사합니다,
chosungIncludes 메서드 내에서 ㄻ(겹자음)를 대응해줘야하는지 고민을 해보았는데, 제 의견은 다음과 같습니다.
- Mac, android, ios와 같은 대부분의 OS 에서는 ㄹㅁ로 표기되지만, Window OS에서만 ㄻ 로 표기되는 마이너한 상황인 것 같습니다.
- "ㄻ" 는 2pt가 아닌 1pt인데 라면 은 2pt라서 글자수 자체가 다르다고 생각합니다.
위 이유를 토대로, 최대한 라이브러리에서는 복잡성을 다루지 않고 메이저한 케이스만 다루며, 예측 가능한 행동 만 하면 좋을 것 같다고 생각했습니다. 1번에 이어서, 마이너한 이슈를 라이브러리에서 다루는 방향은 최대한 지양 하면 좋을 것 같다고 생각했습니다.
이러한 마이너한 케이스를 다루고 싶을때는 다음과 같이 사용해 보는 것은 어떨까요?
const dissembledHangul = disassembleHangul('ㄻ');
chosungIncludes('라면', dissembledHangul)
이러한 문제가 지속적으로 제기되면, docs에도 겹자음을 대응하는 방법에 표기하면 좋을 것 같아요. 혹시 더 좋은 의견 있으시다면 편하게 말씀해주세요!
좋은 의견 제공해주셔서 감사해요. 더 이상 논의가 진행되지 않아서 이슈를 닫아 둘게요. 혹시 더 논의해야한다면 언제든 이슈를 열어주세요.