3 Commits

5 changed files with 36 additions and 15 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

@@ -4,7 +4,9 @@ import (
"strings"
)
type ArmenianTranslit struct{}
type ArmenianTranslit struct {
initComplete bool
}
var armenianMap = []string{
"աու", "au",
@@ -120,7 +122,8 @@ var armenianMap = []string{
"ւ", "",
}
func init() {
func (at *ArmenianTranslit) Init() {
if !at.initComplete {
lower := armenianMap
for i, val := range lower {
if i%2 == 1 {
@@ -131,6 +134,8 @@ func init() {
armenianMap = append(armenianMap, capital, strings.Title(armenianMap[i+1]))
}
}
at.initComplete = true
}
}
func (at *ArmenianTranslit) Transliterate(s string) string {

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{}
@@ -37,6 +39,14 @@ func (ct *ChineseTranslit) Transliterate(s string) string {
outBuf.WriteRune(char)
}
}
if tmpBuf.Len() > 0 {
// Convert to pinyin (without tones)
out := pinyin.LazyConvert(tmpBuf.String(), nil)
// Write space-separated string to output
outBuf.WriteString(strings.Join(out, " "))
// Reset temporary buffer
tmpBuf.Reset()
}
// Return output string
return outBuf.String()
}

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{