koroman
Version:
KOROMAN: Korean Romanizer with pronunciation rules based on 국립국어원 표기법
65 lines (56 loc) • 3.07 kB
TypeScript
declare module 'koroman' {
export type CasingOption =
| 'lowercase' | 'lower' | 'l' | 'lc' | 0
| 'uppercase' | 'upper' | 'u' | 'uc' | 1
| 'capitalize-line' | 'cap-line' | 'cline' | 'cl' | 2
| 'capitalize-word' | 'cap-word' | 'cword' | 'cw' | 3;
export type NormalizedCasingOption = 'lowercase' | 'uppercase' | 'capitalize-line' | 'capitalize-word';
export interface RomanizeOptions {
usePronunciationRules?: boolean;
casingOption?: CasingOption;
/**
* 발음상 혼동이 우려되는 음절 경계에 자동으로 붙임표(-)를 삽입한다.
* - 종성 ᆼ(ng) + 모음 시작 음절 (예: 중앙 → jung-ang)
* - 종성 ᆫ(n) + ㄱ(g) 시작 음절 (예: 반구대 → ban-gudae)
* - 받침 없음 + 모음 시작 음절 (예: 해운대 → hae-undae, 세운 → se-un)
* 기본값 false.
*/
useHyphen?: boolean;
/**
* 모듈에 미리 등록된 내부 사용자 사전(setCustomDictionary 등으로 관리)을
* 적용할지 여부. 기본 true. false면 내부 사전을 무시한다.
* 옵션의 {@link customDictionary} 는 이 값과 무관하게 항상 적용된다.
*/
useCustomDictionary?: boolean;
/**
* 일회성 사용자 사전. 매칭되는 한국어 단어는 지정된 로마자 표기로 최우선 변환된다.
* 내부 사전이 활성화된 경우 내부 사전과 병합되며, 동일 키는 이 옵션이 우선한다.
* - 사전 값은 casing 옵션의 영향을 받지 않음 (사용자 지정 그대로 보존)
* - 음운 규칙도 적용되지 않음
* - 키 길이가 긴 항목부터 우선 매칭 (부분 매칭 방지)
*
* 예: { "김철수": "Kim Chul-soo", "서울": "Seoul" }
*/
customDictionary?: Record<string, string>;
}
export function romanize(str: string, options?: RomanizeOptions): string;
export function normalizeCasingOption(opt: CasingOption | string | number | null | undefined): NormalizedCasingOption;
/**
* 모듈 내부 사용자 사전을 통째로 교체한다.
* dict가 null/undefined/빈 객체면 전체 비움과 동일.
*/
export function setCustomDictionary(dict?: Record<string, string> | null): void;
/**
* 모듈 내부 사용자 사전에 항목을 추가/병합한다.
* - addCustomDictionary({ "김철수": "Kim Chul-soo" })
* - addCustomDictionary("김철수", "Kim Chul-soo")
*/
export function addCustomDictionary(dict: Record<string, string>): void;
export function addCustomDictionary(key: string, value: string): void;
/** 내부 사용자 사전에서 키를 제거한다. 제거되었으면 true. */
export function removeCustomDictionaryEntry(key: string): boolean;
/** 내부 사용자 사전을 모두 비운다. */
export function clearCustomDictionary(): void;
/** 현재 내부 사용자 사전의 스냅샷(얕은 복사)을 반환한다. */
export function getCustomDictionary(): Record<string, string>;
}