forked from Elara6331/itd
		
	Add init functions to transliterators
This commit is contained in:
		| @@ -120,7 +120,7 @@ var armenianMap = []string{ | ||||
| 	"ւ", "", | ||||
| } | ||||
|  | ||||
| func init() { | ||||
| func (at *ArmenianTranslit) Init() { | ||||
| 	lower := armenianMap | ||||
| 	for i, val := range lower { | ||||
| 		if i%2 == 1 { | ||||
|   | ||||
| @@ -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{} | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
| @@ -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{ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user