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

feat: 인자로 받은 문자의 초성, 중성, 종성 위치 가능 여부를 파악하는 함수 추가 #36

Closed evan-moon closed 6 months ago

evan-moon commented 6 months ago

Overview

24 를 통해 이슈레이징 했던 인자로 문자를 받아 초성, 중성, 종성 위치가 가능한 문자인지 검사하는 함수입니다.

함수의 동작은 소스 내부의 HANGUL_CHARACTERS_BY_FIRST_INDEX, HANGUL_CHARACTERS_BY_MIDDLE_INDEX, HANGUL_CHARACTERS_BY_LAST_INDEX에 종속됩니다.

이처럼 함수의 동작이 HANGUL_CHARACTERS_BY_FIRST_INDEX, HANGUL_CHARACTERS_BY_MIDDLE_INDEX, HANGUL_CHARACTERS_BY_LAST_INDEX의 구성에 종속된다면, , 과 같은 값은 false로 평가되는데요.

이는 곧 라이브러리 내부의 특수한 비즈니스 로직에 종속되는 것이기 때문에 추후 #18 을 구현하기에는 이와 같은 동작이 편리할 수 있지만, 유저가 사용하기에는 다소 헷갈릴 수 있는 동작일 수 있습니다.

같은 값은 실제로 유저가 입력하기에는 번거로운 값이기 때문에 ㄱㅅ와 같은 형태로 검사하는 것이 합리적이지만, 와 같이 조합된 모음은 유저가 쉽게 입력할 수 있는 값이기 때문에 어떻게 처리해줘야 할지에 대한 고민이 필요합니다.

PR Checklist

  1. I have read the Contributing Guide
  2. I have written documents and tests, if needed.
changeset-bot[bot] commented 6 months ago

🦋 Changeset detected

Latest commit: 3bc395662dc09b1a763b25c6e6063cee59b228a0

The changes in this PR will be included in the next version bump.

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

💥 An error occurred when fetching the changed packages and changesets in this PR ``` Some errors occurred when validating the changesets config: The package or glob expression "es-hangul" specified in the `fixed` option does not match any package in the project. You may have misspelled the package name or provided an invalid glob expression. Note that glob expressions must be defined according to https://www.npmjs.com/package/micromatch. ```
netlify[bot] commented 6 months ago

Deploy Preview for es-hangul ready!

Name Link
Latest commit 3bc395662dc09b1a763b25c6e6063cee59b228a0
Latest deploy log https://app.netlify.com/sites/es-hangul/deploys/661dda049acc180008a00569
Deploy Preview https://deploy-preview-36--es-hangul.netlify.app
Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

evan-moon commented 6 months ago

Conflict를 수정하며 Array#includeshttps://github.com/toss/es-hangul/pull/38 에서 추가된 hasValueInReadOnlyStringList로 변경하였습니다.

cc. @ssi02014

evan-moon commented 6 months ago

현재 utils.ts 파일에 있는 메서드들은 es-hangul내부에서만 유틸적으로 사용하는 메서드 들인가용!?

josa나, disassembleHangul 과 같은 경우는 별도 파일로 구분되어있는데, 이제보니 canBe 시리즈 메서드들은 utils.ts파일내에 속해있지만, 유저가 직접 Import해서 사용할 경우가 있다고 생각하는데요.

메서드들이 별도 파일에 위치해야할지, utils.ts 에 위치해야할지는 어떠한 기준을 갖고 구분하는게 좋을까요? 🙋

이번에 추가한 canBe* 함수들은 라이브러리 외부로 노출하는 것을 염두에 두기는 했습니다. 만약 내부에서만 사용하는 함수라면 _internal.ts 과 같은 모듈을 하나 만들고 Entry에서 export 하지 않음으로써 노출의 정도를 조절해볼 수 있을 것 같아요 ㅎㅎ (assemble 함수 만드는 브랜치에서는 요렇게 작업하고 있었습니다)