Add init functions to transliterators

This commit is contained in:
Elara 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 ### Features
- Notification relay - Notification relay
- Notificstion transliteration - Notification transliteration
- Music control - Music control
- Get info from watch (HRM, Battery level, Firmware version) - Get info from watch (HRM, Battery level, Firmware version)
- Set current time - Set current time

View File

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

View File

@ -12,6 +12,8 @@ import (
// conversion library. // conversion library.
type ChineseTranslit struct{} type ChineseTranslit struct{}
func (ChineseTranslit) Init() {}
func (ct *ChineseTranslit) Transliterate(s string) string { func (ct *ChineseTranslit) Transliterate(s string) string {
// Create buffer for final output // Create buffer for final output
outBuf := &bytes.Buffer{} 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 // This was translated to Go from the code in https://codeberg.org/Freeyourgadget/Gadgetbridge
type KoreanTranslit struct{} type KoreanTranslit struct{}
func (KoreanTranslit) Init() {}
// User input consisting of isolated jamo is usually mapped to the KS X 1001 compatibility // 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 // 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 // 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 // Create variable to store modified string
out := s out := s
// If custom map exists // If custom map exists
if customMap, ok := Transliterators["custom"]; ok { if custom, ok := Transliterators["custom"]; ok {
// Perform transliteration with it // Perform transliteration with it
out = customMap.Transliterate(out) out = custom.Transliterate(out)
} }
// For every map to use // For every map to use
for _, useMap := range useMaps { for _, useMap := range useMaps {
@ -20,12 +20,13 @@ func Transliterate(s string, useMaps ...string) string {
continue continue
} }
// Get requested map // Get requested map
translitMap, ok := Transliterators[useMap] transliterator, ok := Transliterators[useMap]
if !ok { if !ok {
continue continue
} }
transliterator.Init()
// Perform transliteration // Perform transliteration
out = translitMap.Transliterate(out) out = transliterator.Transliterate(out)
} }
// Return result // Return result
return out return out
@ -36,6 +37,7 @@ func Transliterate(s string, useMaps ...string) string {
// and returns the resulting string. // and returns the resulting string.
type Transliterator interface { type Transliterator interface {
Transliterate(string) string Transliterate(string) string
Init()
} }
// Map implements Transliterator using a slice where // Map implements Transliterator using a slice where
@ -47,6 +49,8 @@ func (mt Map) Transliterate(s string) string {
return strings.NewReplacer(mt...).Replace(s) return strings.NewReplacer(mt...).Replace(s)
} }
func (Map) Init() {}
// Transliterators stores transliterator implementations for each supported language. // Transliterators stores transliterator implementations for each supported language.
// Some of these were sourced from https://codeberg.org/Freeyourgadget/Gadgetbridge // Some of these were sourced from https://codeberg.org/Freeyourgadget/Gadgetbridge
var Transliterators = map[string]Transliterator{ var Transliterators = map[string]Transliterator{