hangulx v0.6.3
hangulx π
hangulx is a TypeScript library designed to work with Hangul (Korean characters) in various formats, providing utility functions for detecting, parsing, and manipulating Korean syllables and jamo (individual consonant and vowel components). This package can be especially useful for applications that need to handle Hangul text at a granular level, linguistic research, and educational tools for learning Korean.
Installation
Install the package using package manager
npm install hangulx
yarn add hangulx
Browser
Script tag (using CDN)
<script src="https://unpkg.com/hangulx" type="text/javascript"></script>
Script tag
<script src="hangulx.min.js" type="text/javascript"></script>
Usage
Node.js
import {Hangul} from 'hangulx';
import * as hangulx from 'hangulx';
AMD
<script type="text/javascript">
(function () {
hangulx.Hangul.disassemble('νκΈ'); // ['γ
', 'γ
', 'γ΄', 'γ±', 'γ
‘', 'γΉ']
})();
</script>
API
Hangul
import
import {Hangul} from 'hangulx';
<script type="text/javascript">
(function () {
var Hangul = hangulx.Hangul; // or
const {Hangul} = hangulx;
})();
</script>
Hangul.disassemble(str: string, option?: Hangul.DisassembleOption): string[]
νκΈμ μλͺ¨λ‘ λΆλ¦¬ν©λλ€.
Splits Korean Hangul characters into their phonetic components(jamo)
Hangul.disassemble('κ°'); // [ 'γ±', 'γ
', 'γ
' ]
Hangul.disassemble('μ»'); // [ 'γ
', 'γ
', 'γ½' ]
νκΈμ΄ μλ λ¬Έμλ λ°νλ©λλ€.
Non-Hangul characters are returned as they are.
Hangul.disassemble('ABC123θ!'); // [ 'A', 'B', 'C', '1', '2', '3', 'θ', '!' ]
Hangul.disassemble('νκΈA'); // [ 'γ
', 'γ
', 'γ΄', 'γ±', 'γ
‘', 'γΉ', 'A' ]
볡ν©μμ(μμμ) (γ², γΈ, γ
... ) λΆλ¦¬
splitting complex consonants (double consonants) such as γ², γΈ, γ
.
Hangul.disassemble('κΉλ', {doubleConsonant: true}); // [ 'γ±', 'γ±', 'γ
', 'γ·', 'γ
', 'γΊ' ]
Hangul.disassemble('κΊΎλ€', {doubleConsonant: true}); // [ 'γ±', 'γ±', 'γ
', 'γ±', 'γ±', 'γ·', 'γ
' ]
μμκ΅°(κ²Ήλ°μΉ¨) (γ³, γ΅, γ
... ) λΆλ¦¬
splitting consonant clusters (compound final consonants) such as γ³, γ΅, γ
.
Hangul.disassemble('κΉλ', {clusterConsonant: true}); // [ 'γ²', 'γ
', 'γ·', 'γ
', 'γΉ', 'γ±' ]
Hangul.disassemble('μ½λ€', {clusterConsonant: true}); // [ 'γ
', 'γ
£', 'γΉ', 'γ±', 'γ·', 'γ
' ]
볡ν©μμ(μμμ) λ° μμκ΅°(κ²Ήλ°μΉ¨) λΆλ¦¬
splitting complex consonants (double consonants) and consonant clusters (compound final consonants) such as γ², γΈ, γ
, γ³, γ΅, γ
.
const option: Hangul.DisassembleOption = {
doubleConsonant: true, // μμμ(γ², γΈ, γ
, γ
, γ
) λΆλ¦¬ μ¬λΆ(κ°μ λ³μ)
clusterConsonant: true, // 볡ν©μμ(γ³, γ΅, γΆ, γΊ ...) λΆλ¦¬ μ¬λΆ(ν©μ© λ³μ)
};
Hangul.disassemble('μ»', option); // [ 'γ
', 'γ
', 'γ
', 'γ±', 'γ
' ]
Hangul.disassemble('λλ³Άμν', option); // [ 'γ·', 'γ
', 'γΉ', 'γ±', 'γ
', 'γ
', 'γ±', 'γ±', 'γ
', 'γ
‘', 'γ
', 'γ
', 'γ
', 'γ
' ]
Hangul.disassembleToString(str: string, option?: Hangul.DisassembleToStringOption): string
νκΈμ λΆν΄νμ¬ μλͺ¨λ‘ λΆλ¦¬λ λ¬Έμμ΄λ‘ λ°νν©λλ€.
Hangul.disassembleToString('νκΈ'); // γ
γ
γ΄γ±γ
‘γΉ
Hangul.disassembleToString('ꡬκΈ'); // γ±γ
γ±γ
‘γΉ
Separator μ¬μ©
Hangul.disassembleToString('νκΈ', {separator: ','}); // γ
,γ
,γ΄,γ±,γ
‘,γΉ
Hangul.disassembleToString('ꡬκΈ', {separator: ','}); // γ±,γ
,γ±,γ
‘,γΉ
Hangul.disassembleToGroup(str: string, option?: Hangul.DisassembleOption): string
νκΈμ κΈμλ³λ‘ μλͺ¨λ‘ λΆλ¦¬ν©λλ€.
Splits Korean Hangul into individual jamos for each character.
Hangul.disassembleToGroup('νλμ€'); // [['γ
', 'γ
‘'], ['γΉ', 'γ
', 'γ
'], ['γ
', 'γ
‘']]
Interface: Hangul.DisassembleOption
Option | Description | Required |
---|---|---|
doubleConsonant | μμμ(γ², γΈ, γ , γ , γ ) λΆλ¦¬ μ¬λΆ Determines whether double consonants (e.g., γ², γΈ, γ , γ , γ ) should be disassembled | N |
clusterConsonant | 볡ν©μμ(γ³, γ΅, γΆ, γΊ ...) λΆλ¦¬ μ¬λΆ Determines whether cluster consonants (e.g., γ³, γ΅, γΆ, γΊ) should be disassembled | N |
risingJDiphthong | γ £(οΌ»jοΌ½)κ³ μμΉμ΄μ€λͺ¨μ(γ , γ , γ , γ , γ , γ ) λΆλ¦¬ μ¬λΆ Determines whether rising diphthongs with γ £j should be disassembled | N |
risingWDiphthong | γ /γ (w)κ³ μμΉμ΄μ€λͺ¨μ(γ , γ , γ , γ ) λΆλ¦¬ μ¬λΆ Determines whether rising diphthongs with γ /γ w should be disassembled | N |
fallingDiphthong | νκ°μ΄μ€λͺ¨μ(γ ’) λΆλ¦¬ μ¬λΆ Determines whether falling diphthongs should be disassembled | N |
Syllable
νκΈμ μμ λΆλ¦¬/μ‘°ν© λ° κΈ°ν κΈ°λ₯μ μ 곡ν©λλ€.
Provides functions for splitting and combining Korean Hangul syllables, along with other features.
import
import {Syllable} from 'hangulx';
<script type="text/javascript">
(function () {
var Syllable = hangulx.Syllable; // or
const {Syllable} = hangulx;
})();
</script>
Syllable.disassemble(str: string): ISyllable[]
λ¬Έμμ΄μ μμ (μ΄μ±, μ€μ±, μ’
μ±)λ‘ λΆλ¦¬ν©λλ€.
Splits a string into syllables consisting of initial sounds (cho), medial sounds (jung), and final sounds (jong).
Syllable.disassemble('κ°μ'); // [{ cho: 'γ±', jung: 'γ
', jong: undefined }, { cho: 'γ
', jung: 'γ
', jong: undefined }]
μμ λ‘ λλ μ μλ λ¬Έμλ μ κ±°λμ΄ λ°νλ©λλ€.
Characters that cannot be divided into syllables are removed and not returned.
Syllable.disassemble('κ°-A1γ
'); // [{ cho: 'γ±', jung: 'γ
', jong: 'γ
' }]
Syllable.disassemble('γ±γ³A1'); // []
Syllable.disassembleFromChar(char: string): ISyllable | null
λ¬Έμλ₯Ό μμ (μ΄μ±, μ€μ±, μ’
μ±)λ‘ λΆλ¦¬ν©λλ€.
Splits single character into syllables consisting of initial sounds (cho), medial sounds (jung), and final sounds (jong).
Syllable.disassembleFromChar('κ°'); // { cho: 'γ±', jung: 'γ
', jong: 'γ
' }
Syllable.disassembleFromChar('λ'); // { cho: 'γ·', jung: 'γ
', jong: undefined }
κΈΈμ΄κ° 1μ μ΄κ³Όνλ κ²½μ° μ²«λ²μ§Έ λ¬Έμλ₯Ό λΆλ¦¬ν©λλ€. 1κ° μ΄μμ λ¬Έμλ₯Ό μμ λΆλ¦¬νλ €λ©΄ Syllable.disassemble ν¨μλ₯Ό μ¬μ©ν©λλ€.
If the length exceeds 1, only the first character is split into syllables. To disassemble more than one character into syllables, use the Syllable.disassemble function.
Syllable.disassembleFromChar('μΈμ’
λμ'); // { cho: 'γ
', jung: 'γ
', jong: undefined }
λΆλ¦¬ν μ μλ λ¬Έμλ null λ°νλ©λλ€.
Characters that cannot be split are returned as null.
Syllable.disassembleFromChar('γ
'); // null
Syllable.disassembleFromChar('A'); // null
Syllable.disassembleFromChar('7'); // null
Syllable.disassembleFromChar('-'); // null
Syllable.assemble(syllable: ISyllable | ISyllable[]): string
μμ (μ΄μ±, μ€μ±, μ’
μ±)μ λ³ν©νμ¬ λ¬Έμμ΄λ‘ λ°νν©λλ€.
Merges syllables consisting of initial sounds (cho), medial sounds (jung), and final sounds (jong) into a string.
Syllable.assemble({cho: 'γ±', jung: 'γ
'}); // κ°
Syllable.assemble({cho: 'γ
', jung: 'γ
', jong: 'γ
'}); // ν©
Syllable.assemble({cho: 'γ
', jung: 'γ
', jong: 'γ²'}); // μ
Syllable.assemble({cho: 'γ
', jung: 'γ
', jong: 'γΌ'}); // λ°
Syllable.assemble({cho: 'A', jung: 'γ
', jong: 'γ΄'}) // Error - Invalid cho("A" can not be cho)
Syllable.assemble({cho: 'γ±', jung: 'γ
', jong: 'γ
'}) // Error - Invalid jong("γ
" can not be jong)
Syllable.assemble({cho: 'γ
', jung: 'A', jong: 'γ΄'}) // Error - Invalid jung("A" can not be jung)
μ¬λ¬κ°μ μμ μ λ³ν©ν μ μμ΅λλ€.
Multiple syllables can be merged.
const syllables: ISyllable[] = [
{cho: 'γ±', jung: 'γ
', jong: 'γ
'},
{cho: 'γ
', jung: 'γ
', jong: undefined},
{cho: 'γ΄', jung: 'γ
', jong: 'γ΄'},
];
Syllable.assemble(syllables); // κ°μ€λ
Syllable.disassemble ν¨μλ‘ λΆλ¦¬ν μμ μ λ€μ ν©μΉ μ μμ΅λλ€.
Syllables split using the Syllable.disassemble function can be recombined.
const syllables: ISyllable[] = Syllable.disassemble('μΈμ’
λμ');
/* [
{ cho: 'γ
', jung: 'γ
', jong: undefined },
{ cho: 'γ
', jung: 'γ
', jong: 'γ
' },
{ cho: 'γ·', jung: 'γ
', jong: undefined },
{ cho: 'γ
', jung: 'γ
', jong: 'γ
' }
] */
Syllable.assemble(syllables); // μΈμ’
λμ
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
9 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
9 months ago