-
Notifications
You must be signed in to change notification settings - Fork 96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: 숫자를 날짜를 나타내는 순우리말로 바꿔주는 함수 중 days를 추가 #228
Conversation
🦋 Changeset detectedLatest commit: 0922f46 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 |
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #228 +/- ##
=======================================
Coverage 99.82% 99.83%
=======================================
Files 29 31 +2
Lines 584 600 +16
Branches 141 145 +4
=======================================
+ Hits 583 599 +16
Misses 1 1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
우선 너무 잘 구현해주셔서 감사합니다.
기본값은 열닷새, 스무하루처럼 유저에게 제공하되, 아래처럼 옵션을 받아서 자주쓰는(대안어) 를 제공해주도록 하는 것은 어떨까요~?
day(15) // 열닷새
day(15, {
useAlternateExpression: true
}) // 보름
src/constants.ts
Outdated
|
||
export const DATE_DAYS_MAP = { | ||
1: '하루', | ||
2: '이틀', | ||
3: '사흘', | ||
4: '나흘', | ||
5: '닷새', | ||
6: '엿새', | ||
7: '이레', | ||
8: '여드레', | ||
9: '아흐레', | ||
10: '열', | ||
20: '스무', | ||
} as const; | ||
|
||
export const DATE_DAYS_ONLY_TENS_MAP = { | ||
10: '열흘', | ||
20: '스무날', | ||
30: '서른날', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요것도 date에 종속된 상수이므로 standardizePronunciation.constants.ts
처럼
day.constants.ts
로 분리되면 좋을 것 같아요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저에게도 보기 더 좋아보여요.
as-is
canbe.ts
를 참고해서 폴더구조나 컨벤션을 가져갔어요.
to-be
제안 주신 방식대로 refactor: date의 확장을 고려해 폴더구조를 변경에 개선해 보았어요.
검토부탁드려요 🙏🏻
docs/src/pages/docs/api/date.ko.mdx
Outdated
```ts index.ts | ||
import { canBeJongseong } from 'es-hangul'; | ||
|
||
console.log(canBeJongseong('ㄱ')); | ||
``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
import { days } from 'es-hangul';
console.log(days(3));
console.log(days(4));
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
찾아주셔서 감사해요!
docs: 잘못된 예제 수정에서 수정되었습니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
잘못 어프롭눌러서 수정합니당!! 감사해요
8aa1273
to
2531d0a
Compare
아직 반영 전 이기하지만 이런 인터페이스는 어떨까요? day(15) // 열닷새
day(15, {
alternateExpressionDays: [15]
}) // 보름 추후 보름이 아닌 덜 알려진 날짜(세이레)의 지원도 고려했을 때
|
boolean값만 받아서 내부적으로 분기하는게 사용하는쪽에서도, 구현측면에서도 깔끔하다고 생각이 들어요.
boolean으로 옵션을 받아도 말씀해주신 요구사항은 충분히 반영가능해보여요!
막상 코드를 적어보니, boolean, array 둘다 사용하는 쪽에선 verbose한 느낌이 나네요 ㅠㅠㅋㅋ |
describe('date', () => { | ||
describe('days', () => { | ||
const validNumbers = [ | ||
{ num: 1, word: '하루' }, | ||
{ num: 2, word: '이틀' }, | ||
{ num: 3, word: '사흘' }, | ||
{ num: 4, word: '나흘' }, | ||
{ num: 5, word: '닷새' }, | ||
{ num: 6, word: '엿새' }, | ||
{ num: 7, word: '이레' }, | ||
{ num: 8, word: '여드레' }, | ||
{ num: 9, word: '아흐레' }, | ||
{ num: 10, word: '열흘' }, | ||
{ num: 11, word: '열하루' }, | ||
{ num: 20, word: '스무날' }, | ||
{ num: 21, word: '스무하루' }, | ||
{ num: 30, word: '서른날' }, | ||
]; | ||
|
||
const invalidNumbers = [0, -1, 31, 1.1, -1.1, Infinity, -Infinity, NaN]; | ||
|
||
validNumbers.forEach(({ num, word }) => { | ||
it(`${num} - 순 우리말 날짜 ${word}로 바꿔 반환해야 한다.`, () => { | ||
expect(days(num)).toBe(word); | ||
}); | ||
}); | ||
|
||
invalidNumbers.forEach(num => { | ||
it(`유효하지 않은 숫자 ${num}에 대해 오류를 발생시켜야 한다.`, () => { | ||
expect(() => days(num)).toThrow('지원하지 않는 숫자입니다.'); | ||
}); | ||
}); | ||
}); | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍👍👍👍👍👍👍👍
고민이 많이 되네요 하지만, 말씀해주신것처럼 둘 다 간결하다는 느낌은 들지 않네요. 우선 es-hangul에서는 지금의 형태로 제공하고 제가 가장 염려하는 이후에 더 많은 함수들이 생기고, 확장되는 기능들에 대한 규칙이 정립되면 그때 추가해도 괜찮을 것 같다고 생각이 들었어요 🙂 (나중에는 es-hangul의 함수들을 기반으로 하는 더 많은 확장기능응 제공하는 es-hangul+ 같은게 있어도 재미있을듯하네요 😁) const restDays = 15;
restDays === 15 ? "보름" : days(restDays) |
와우 너무 좋은 의견입니다! 동의해요~! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이슈레이징 및 직접 기능 구현까지 항상 너무 감사드려요!!
섬세한 의견 교류 덕분에 많이 배우고 너무 즐겁습니다. 저도 감사해요! 😊 |
Overview
#217 에서 논의한 함수를 추가합니다.
당시에는
date
라는 함수명을 제안드렸으나, 조사 과정에서 비단 날(day) 뿐만 아니라 달(month)을 뜻하는 순 우리말이 있다는 사실을 알게되었습니다.하여,
date
파일의days
라는 이름으로 작성하였습니다.함께 논의되고 싶은 사항은 다음과 같습니다:
PR Checklist