Add init functions to transliterators

This commit is contained in:
Arsen Musayelyan 2021-10-06 09:41:33 -07:00
parent 01bf493c77
commit df743cca96
5 changed files with 14 additions and 6 deletions

View File

@ -12,7 +12,7 @@
### Features
- Notification relay
- Notificstion transliteration
- Notification transliteration
- Music control
- Get info from watch (HRM, Battery level, Firmware version)
- Set current time

View File

@ -120,7 +120,7 @@ var armenianMap = []string{
"ւ", "",
}
func init() {
func (at *ArmenianTranslit) Init() {
lower := armenianMap
for i, val := range lower {
if i%2 == 1 {

View File

@ -12,6 +12,8 @@ import (
// conversion library.
type ChineseTranslit struct{}
func (ChineseTranslit) Init() {}
func (ct *ChineseTranslit) Transliterate(s string) string {
// Create buffer for final output
outBuf := &bytes.Buffer{}

View File

@ -39,6 +39,8 @@ var compatJamoBlock = &unicode.RangeTable{
// This was translated to Go from the code in https://codeberg.org/Freeyourgadget/Gadgetbridge
type KoreanTranslit struct{}
func (KoreanTranslit) Init() {}
// User input consisting of isolated jamo is usually mapped to the KS X 1001 compatibility
// block, but jamo resulting from decomposed syllables are mapped to the modern one. This
// function maps compat jamo to modern ones where possible and returns all other characters

View File

@ -9,9 +9,9 @@ func Transliterate(s string, useMaps ...string) string {
// Create variable to store modified string
out := s
// If custom map exists
if customMap, ok := Transliterators["custom"]; ok {
if custom, ok := Transliterators["custom"]; ok {
// Perform transliteration with it
out = customMap.Transliterate(out)
out = custom.Transliterate(out)
}
// For every map to use
for _, useMap := range useMaps {
@ -20,12 +20,13 @@ func Transliterate(s string, useMaps ...string) string {
continue
}
// Get requested map
translitMap, ok := Transliterators[useMap]
transliterator, ok := Transliterators[useMap]
if !ok {
continue
}
transliterator.Init()
// Perform transliteration
out = translitMap.Transliterate(out)
out = transliterator.Transliterate(out)
}
// Return result
return out
@ -36,6 +37,7 @@ func Transliterate(s string, useMaps ...string) string {
// and returns the resulting string.
type Transliterator interface {
Transliterate(string) string
Init()
}
// Map implements Transliterator using a slice where
@ -47,6 +49,8 @@ func (mt Map) Transliterate(s string) string {
return strings.NewReplacer(mt...).Replace(s)
}
func (Map) Init() {}
// Transliterators stores transliterator implementations for each supported language.
// Some of these were sourced from https://codeberg.org/Freeyourgadget/Gadgetbridge
var Transliterators = map[string]Transliterator{