korean-gotong
Version:
한글이 인생에 고통을 선사할 때마다 기능이 추가될 예정입니다.
170 lines (137 loc) • 6.05 kB
Markdown
# korean-gotong
한글에 고통받다가 만든 라이브러리
```typescript
import { getKoreanHanjaNumeral } from "korean-gotong/hanjaNumberTools";
import {
getTopicParticle,
getLinkingParticle,
을를,
} from "korean-gotong/particleTools";
console.log(getTopicParticle("사과")); // '는'
console.log(을를("참외")); // '참외를'
console.log(getKoreanHanjaNumeral(12345)); // '만 이천삼백사십오'
let a = 24;
let b = 36;
console.log(`${a}${getLinkingParticle(getKoreanHanjaNumeral(a))} ${b}`); // '24와 36'
```
## 설명
```typescript
// default export
import Gotong from "korean-gotong";
const { HanjaNumberTools, ParticleTools, HangulCodes } = Gotong;
```
### HanjaNumberTools
```typescript
import { HanjaNumberTools } from "korean-gotong";
// or
import * as HanjaNumberTools from "korean-gotong/hanjaNumberTools";
```
- `HanjaNumberTools.getKoreanHanjaNumeral`
- 숫자를 한국어 한자 기수법으로 변환
- **주의:** 숫자 '6(六)'에는 항상 두음법칙이 적용되어 '육'으로 씀
```typescript
import { getKoreanHanjaNumeral } from "korean-gotong/hanjaNumberTools";
getKoreanHanjaNumeral(12345); // '만 이천삼백사십오'
getKoreanHanjaNumeral(-12345.006, {
useSpaceEvery10K: false, // 만, 억, 조 등 단위 뒤에 공백을 넣지 않음
omitOneInDigits: false, // 자릿수가 1인 자리에서 '일'을 생략하지 않음
}); // '마이너스 일만이천삼백사십오 점 영영육`
```
### ParticleTools
```typescript
import { ParticleTools } from "korean-gotong";
// or
import * as ParticleTools from "korean-gotong/particleTools";
```
- `ParticleTools.getEndsWithFinal`
- 마지막 음절의 종성 음가가 있는 한글 문자열에 대해 `true` 반환
```typescript
import { getEndsWithFinal } from "korean-gotong/particleTools";
getEndsWithFinal("감귤"); // true
// 음절을 이루지 않는 자음은 '기역, 니은' 식으로 읽는 것으로 간주
getEndsWithFinal("ㅋㅋㅋ"); // true
getEndsWithFinal("사과"); // false
// 음절을 이루지 않는 모음은 '아, 야, 어, 여' 식으로 읽는 것으로 간주
getEndsWithFinal("ㅏㅑㅓㅕ"); // false
```
- `ParticleTools.getTopicParticle`
- 주어진 한글 문자열에 따라 '은' 혹은 '는' 반환
- `ParticleTools.getSubjectParticle`
- 주어진 한글 문자열에 따라 '이' 혹은 '가' 반환
- `ParticleTools.getObjectParticle`
- 주어진 한글 문자열에 따라 '을' 혹은 '를' 반환
- `ParticleTools.getLinkingParticle`
- 주어진 한글 문자열에 따라 '과' 혹은 '와' 반환
```typescript
import { ParticleTools } from "korean-gotong";
ParticleTools.getTopicParticle("오늘"); // '은'
ParticleTools.getSubjectParticle("점심"); // '이'
ParticleTools.getObjectParticle("메뉴"); // '를'
ParticleTools.getLinkingParticle("순두부"); // '와'
```
- `ParticleTools.addTopicParticle`
- `ParticleTools.은는`으로도 사용 가능
- 주어진 한글 문자열에 따라 '은' 혹은 '는'을 덧붙임
- `ParticleTools.addSubjectParticle`
- `ParticleTools.이가`로도 사용 가능
- 주어진 한글 문자열에 따라 '이' 혹은 '가'를 덧붙임
- `ParticleTools.addObjectParticle`
- `ParticleTools.을를`로도 사용 가능
- 주어진 한글 문자열에 따라 '을' 혹은 '를'을 덧붙임
- `ParticleTools.addLinkingParticle`
- `ParticleTools.과와`로도 사용 가능
- 주어진 한글 문자열에 따라 '과' 혹은 '와'를 덧붙임
```typescript
import { ParticleTools } from "korean-gotong";
ParticleTools.addTopicParticle("내일"); // '내일은'
ParticleTools.addSubjectParticle("저녁"); // '저녁이'
ParticleTools.addObjectParticle("식사"); // '식사를'
ParticleTools.addLinkingParticle("햄버거"); // '햄버거와'
ParticleTools.은는("내일"); // '내일은'
ParticleTools.이가("저녁"); // '저녁이'
ParticleTools.을를("식사"); // '식사를'
ParticleTools.과와("햄버거"); // '햄버거와'
```
### HanjaNumberTools와 ParticleTools 함께 사용하기
```typescript
import {
getEndsWithFinal,
getLinkingParticle,
} from "korean-gotong/particleTools";
import { getKoreanHanjaNumeral } from "korean-gotong/hanjaNumberTools";
function describeHeight(
name1: string,
name2: string,
height1: number,
height2: number
) {
return `${name1}${getEndsWithFinal(name1) ? "이와" : "와"} ${name2}${
getEndsWithFinal(name2) ? "이의" : "의"
} 키는 각각 ${height1}${getLinkingParticle(
getKoreanHanjaNumeral(height1)
)} ${height2}센티미터이다.`;
}
// "승연이와 민하의 키는 각각 170.3과 168.5센티미터이다."
console.log(describeHeight("승연", "민하", 170.3, 168.5));
// "민하와 승연이의 키는 각각 168.5와 170.3센티미터이다."
console.log(describeHeight("민하", "승연", 168.5, 170.3));
```
### HangulCodes
```typescript
import { HangulCodes } from "korean-gotong";
// or
import * as HangulCodes from "korean-gotong/hangulCodes";
```
- `HangulCodes.UTF8Blocks`
- `UTF8Block`: 문자 코드 범위 정보를 사용하기 위한 클래스
- `UTF8Block.has`: 특정 코드가 범위 내에 포함되는지 확인
- `UTF8Block.join`: 여러 개의 `UTF8Block` 객체에 대해 같은 범위를 나타내는 하나의 `UTF8Block` 객체 반환
- `HangulCodes.Blocks`
- `Jamo`: UTF-8의 한글 자모 영역
- `Syllables`: UTF-8의 완성형 한글 음절 영역
- `Compatibility`: KS X 1001 조합형 자모 호환 영역 (**주의:** 테스트되지 않음)
- `ExtendedA`: UTF-8의 한글 자모 확장 A 영역 (조합형 옛한글 모음)
- `ExtendedB`: UTF-8의 한글 자모 확장 B 영역 (조합형 옛한글 자모)
- `HangulCodes.All`
- `AllConsonant`: 모든 자음 낱자를 포함하는 `UTF8Block` 객체
- `AllVowel`: 모든 모음 낱자를 포함하는 `UTF8Block` 객체