Hangeul character syllable decomposing/composing Go library
Golang-jamo is a Go Hangeul syllable decomposition/composition library for working with Hangul characters and jamo.
This library support Hangeul syllable decomposition with several options. (e.g. Detailed Jamo decomposition, Qwerty keyboard layout decomposition)
go get -u github.com/ymw0407/jamo
package main
import (
"fmt"
"github.com/ymw0407/jamo/pkg/jamo"
"github.com/ymw0407/jamo/pkg/options"
)
func main() {
fmt.Println(
jamo.DecomposeHangeul("한글 테스트 예시!"),
) // "ㅎㅏㄴㄱㅡㄹ ㅌㅔㅅㅡㅌㅡ ㅇㅖㅅㅣ!"
fmt.Println(
jamo.DecomposeHangeul("한글 테스트 예시!", options.Jamo().SetComplexConsonants(true).SetDiphthong(true).SetTenseConsonants(true)),
) // "ㅎㅏㄴㄱㅡㄹ ㅌㅓㅣㅅㅡㅌㅡ ㅇㅕㅣㅅㅣ!"
fmt.Println(
jamo.DecomposeHangeul("한글 테스트 예시!", options.Qwerty().SetShiftOption(options.QwertyShiftOption1)),
) // "ㅎㅏㄴㄱㅡㄹ ㅌㅔㅅㅡㅌㅡ ㅇㅕㅣㅅㅣ!"
fmt.Println(
jamo.DecomposeHangeul("한글 테스트 예시!", *options.Qwerty().SetShiftOption(options.QwertyShiftOption2)),
) // "ㅎㅏㄴㄱㅡㄹ ㅌㅔㅅㅡㅌㅡ ㅇㅔㅔㅅㅣ!"
fmt.Println(
jamo.ComposeHangeul("ㅎㅏㄴㄱㅡㄹ"),
) // ["한글"], nil
fmt.Println(
jamo.ComposeHangeul("ㅎㅏㄴ ㄱㅡㄹ"), // any other characters except hangeul syllable is unavailable
) // [], JamoError.ErrImpossibleToCompose
fmt.Println(
jamo.ComposeHangeul("english"), // any other characters except hangeul syllable is unavailable
) // [], JamoError.ErrImpossibleToCompose
fmt.Println(
jamo.ComposeHangeul(
jamo.DecomposeHangeul("한글테스트예시", *options.Qwerty().SetShiftOption(options.QwertyShiftOption2)),
), // qwerty decomposition, jamo decomposition available to compose
) // ["한글테스트예시"], nil
fmt.Println(
jamo.ComposeHangeul(
jamo.DecomposeHangeul("ㄱㅡㄹㄱㄱㅣ", *options.Qwerty().SetShiftOption(options.QwertyShiftOption2)),
), // if it can be combined into several other characters, it returns all of them.
) // ["긁기", "글끼"], nil
}
Made with contrib.rocks.
jamo is released under Apache License 2.0. See the LICENSE file for details.