huskyhoochu/num-to-korean

한글 맞춤법에 따른 띄어쓰기 제안

tkddn204 opened this issue · 2 comments

안녕하세요. 개발해주신 라이브러리를 아주 잘 사용하고 있는 개발자입니다. 노고에 깊은 감사드립니다.

다름이 아니라 라이브러리를 사용하던 도중에 문득 궁금해져서 한글 맞춤법 규정을 검색해본 결과, 한글 맞춤법 제5장 제2절 제44항에 명시되어있는 규정이 있어 띄어쓰기 여부를 제안드립니다.

규정 내용을 보면 금액을 적을 경우에는 띄어쓰지 않아도 괜찮다는 말이 있으나, 라이브러리의 용도가 범용인지, 은행용인지 애매한 것 같아서 일단 제안 요청만 드리고자 합니다.

+ 임의로 index.ts에 코딩도 진행해보았습니다.

	// 불필요하게 첨가된 단위 제거
	const removeUnusedDot = splitEvery(4, koreanArr).filter(
		(slicedByDot: string[]) => !dotSymbol.includes(slicedByDot.join(''))
	);

	return flatten(removeUnusedDot)
+		.reverse()
+		.map(
+			(letter: string, index: number, array: Array<string>) =>
+				letter && array.length - 1 > index && dotSymbol.includes(letter.slice(letter.length - 1))
+					? letter + ' '
+					: letter
+		)
+		.join('');

안녕하세요, @tkddn204 님! 먼저 이 프로젝트에 관심 가져 주셔서 감사드립니다. 저도 이제 처음으로 하나의 프로젝트를 maintain하는 입장이다보니 앞으로도 잘 부탁드리겠습니다.

말씀 주신 띄어쓰기 부분은 저도 다음 단계로 고려하고 있는 사항이었습니다. 맞춤법 규칙에도 나와 있듯이 띄어쓰기를 한다면 만 단위로 띄어쓰는 게 일반적이라고 생각됩니다.

은행의 표기법이 좀 더 융통성이 떨어지는 것 같습니다. 띄어쓰기를 적용하지 않고, 평상시 언어 습관에서 '일' 표기를 생략하는 것과 달리(ex: 10,000='만', 1,001,000='백만 천') '일만', '일백만일천'이라고 모든 숫자를 밝혀 쓰죠.

이 프로젝트가 범용인지 은행용인지 애매하다고 말씀하신 부분에 대해 짧은 답을 드리자면 범용을 의도하고 있다는 것입니다. 다만 최초 버전의 코드가 순전히 은행용 금액 표기만을 의도하고 있었던지라 그렇게 받아들여질 수 있었다고 생각합니다. 소개 글에도 '금액-한글'이라고 한정적으로 써 뒀던 탓도 있고요.

제가 로드맵으로 구상하고 있는 부분은 세 가지입니다.

  1. 만 단위 띄어쓰기 구현 (ex: 팔십일억 삼천오백이십칠만 사천구백육십일)
  2. 숫자-단위 혼용법 (ex: 11만 7,000) <- 토스Toss에서 사용되는 표기법입니다
  3. 구어체 표기 ('일' 생략, ex: 1,001,000='백만 천')

보내주신 코드도 잘 확인했습니다. dotSymbol에 담긴 요소가 배열 안에 확인된다면 띄어쓰기를 추가하라는 아이디어로 받아들였고 잘 다듬어서 적용해보도록 하겠습니다.

지금 제 고민은 띄어쓰기 기능을 켜고 끄기 위해 파라미터를 어떤식으로 전달해야 할까, 아니면 아예 객체형 설계로 바꿔야 하나, 그런 쪽으로 가고 있습니다. numeral.js나 moment.js처럼 format 메서드를 제공해서 어떤 옵션을 넣느냐에 따라 다른 결과물을 주도록 할지, 아니면 date-fns처럼 각각 기능을 모두 다른 함수로 따로 구현할지 이런 건데요. 정리되는 대로 새 커밋을 올려보도록 하겠습니다.

다른 아이디어가 있으시면 코멘트 부탁드리겠습니다! 감사합니다.

v0.2.0부터 띄어쓰기 기능을 지원합니다. 감사합니다.