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 components
    • choseong: 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 syllable
  • Error(NonHangulCharacter): Input is not a Korean character
  • Error(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"]]
Search Document