hanguleam/parser
Types
pub type DisassembleError {
IncompleteHangul
NonHangulCharacter
EmptyString
}
Constructors
-
IncompleteHangul -
NonHangulCharacter -
EmptyString
Values
pub fn disassemble(text: String) -> String
Disassembles Korean Hangul characters into their constituent jamo (consonants and vowels). This function breaks down complete Hangul syllables and individual jamo into their basic components. Non-Korean characters and whitespace are preserved as-is.
Examples
disassemble("값")
// -> "ㄱㅏㅂㅅ"
disassemble("값이 비싸다")
// -> "ㄱㅏㅂㅅㅇㅣ ㅂㅣㅆㅏㄷㅏ"
disassemble("ㅘ")
// -> "ㅗㅏ"
disassemble("ㄵ")
// -> "ㄴㅈ"
disassemble("hello 안녕")
// -> "hello ㅇㅏㄴㄴㅕㅇ"
pub fn disassemble_complete_character(
char: String,
) -> Result(types.HangulSyllable, DisassembleError)
Disassembles a single complete Korean Hangul character into its constituent parts. This function only works with complete Hangul syllables (가-힣 range) and returns detailed information about the choseong (initial), jungseong (medial), and jongseong (final) components.
Return Value
Ok(HangulSyllable): Contains the disassembled componentschoseong: Initial consonant (e.g., “ㄱ”)jungseong: Medial vowel (e.g., “ㅏ”)jongseong: Final consonant(s) (e.g., “ㅂㅅ” or “” if none)
Error(IncompleteHangul): Input is a Hangul jamo but not a complete syllableError(NonHangulCharacter): Input is not a Korean characterError(EmptyString): Input string is empty
Examples
disassemble_complete_character("값")
// -> Ok(HangulSyllable(Choseong("ㄱ"), Jungseong("ㅏ"), Jongseong("ㅂㅅ")))
disassemble_complete_character("리")
// -> Ok(HangulSyllable(Choseong("ㄹ"), Jungseong("ㅣ"), Jongseong("")))
disassemble_complete_character("ㅏ")
// -> Error(IncompleteHangul)
disassemble_complete_character("a")
// -> Error(NonHangulCharacter)
disassemble_complete_character("")
// -> Error(EmptyString)
pub fn disassemble_to_groups(text: String) -> List(List(String))
Disassembles Korean Hangul characters into groups of jamo components.
Unlike disassemble, this function returns a 2D array where each character
is represented as a separate array of its constituent jamo.
Examples
disassemble_to_groups("사과")
// -> [["ㅅ", "ㅏ"], ["ㄱ", "ㅗ", "ㅏ"]]
disassemble_to_groups("ㅘ")
// -> [["ㅗ", "ㅏ"]]
disassemble_to_groups("ㄵ")
// -> [["ㄴ", "ㅈ"]]
disassemble_to_groups("hello")
// -> [["h"], ["e"], ["l"], ["l"], ["o"]]