toss / es-hangul

A modern JavaScript library for handling Hangul characters.
https://es-hangul.slash.page/
MIT License
1.34k stars 95 forks source link

[Feature]: josa 함수가 받침 유무를 판단할 수 없을 때 보여줄 문자열 옵션 #120

Closed RanolP closed 3 months ago

RanolP commented 5 months ago

Description

사용자 닉네임이나 사용자가 직접 설정할 수 있는 아이템 이름 등, 문자열이 알파벳이나 숫자 등으로 끝날 수 있는 경우엔 조사를 판단할 수 없으므로 해당 경우에 보여줄 문자열을 설정할 수 있으면 좋을 것 같습니다.

Possible Solution

폴백 문자열을 직접 지정하는 API나

josa('플레이어1', '은/는', { nonHangul: '(은)는' }) // 플레이어1(은)는
josa('냉동참치2', '은/는', { nonHangul: '은' }) // 냉동참치2은

그냥 첫번째로 언제나 선택하는 옵션 (기본 값)

josa('Flame', '은/는', { nonHangul: PICK_FIRST }) // Flame은

과 같이 선택지를 주면 좋을 것 같습니다.

etc.

No response

okinawaa commented 4 months ago

좋은 의견 감사합니다! 이러한 사용 경우가 있을 것 같아 공감이 되네요. 하지만, 메이저한 케이스는 아니라고 생각하는데, 라이브러리에서 처리하지 않고, 사용하는 쪽에서, 컨트롤 할 수 있을 것 같은데 어떻게 생각하시나요?

https://github.com/toss/es-hangul/issues/32#issuecomment-2053544682

이 이슈의 코맨트를 참고하였어요


const  word = getWordFromServer()
const isPureHangulWord = work.test(...한글인지 테스트하는 정규식)

const 조사가_붙은_단어 = isPureHangulWord ? josa(word, "은/는") : word + "은"
RanolP commented 4 months ago

~~그렇다면 한글인지 테스트하는 정규식을 es-hangul이 제공하는 것도 좋은 방향성일 것 같네요! 오픈소스 프로젝트를 둘러보다보면 간간히 /[ㄱ-힣]/ 같은 요상한 regex를 사용하는 코드를 보는데, HANGUL_COMPLETE = /[가-힣]/, HANGUL_WITH_PARTS = /[가-힣ㄱ-ㅎㅏ-ㅣ]/ 등등을 es-hangul에서 제공하면 좋을 것 같아요~~

assertHangul, parseHangul 등이 이미 있군요. last 가져와서 검사하면 되겠네요

okinawaa commented 3 months ago

해결된 것 같아서 이슈 닫도록 할게요! 의문이 생기면 언제든 다시 열어주세요 감사합니다