Files
nmslib/lang.go
2020-10-20 15:14:42 -06:00

98 lines
2.0 KiB
Go

package nmslib
import (
"encoding/csv"
"fmt"
"io/ioutil"
"os"
"strings"
)
// KorvaxWord - set up structure of a word iteration
type korvaxWord struct {
english string
korvax string
kwcaps string
kwallcaps string
}
/*
Korvax2Eng - Translate a Korvax word to English
*/
func Korvax2Eng(kvwrd string) string {
tempdir, err := ioutil.TempDir("", "nmslib-")
if err != nil {
panic(err)
}
defer os.RemoveAll(tempdir)
data, err := Asset("korvax-lang.csv")
if err != nil {
panic(err)
}
err = ioutil.WriteFile(tempdir+"/korvax-lang.csv", []byte(data), 0644)
csvFile, err := os.Open(tempdir + "/korvax-lang.csv")
if err != nil {
fmt.Println(err)
}
defer csvFile.Close()
csvlines, err := csv.NewReader(csvFile).ReadAll()
if err != nil {
fmt.Println(err)
}
for _, line := range csvlines {
klang := korvaxWord{
english: line[0],
korvax: line[1],
kwcaps: line[2],
kwallcaps: line[3],
}
if kvwrd == klang.korvax {
return klang.english
} else if kvwrd == klang.korvax {
return strings.Title(strings.ToLower(klang.english))
} else if kvwrd == klang.kwallcaps {
return strings.ToUpper(klang.english)
}
}
return "*\\Kzzzzzzt\\*" // word not found default
}
/*
Eng2Korvax - Convert (some) english words to Korvax
*/
func Eng2Korvax(enwrd string) string {
tempdir, err := ioutil.TempDir("", "nmslib")
if err != nil {
panic(err)
}
defer os.RemoveAll(tempdir)
data, err := Asset("korvax-lang.csv")
if err != nil {
panic(err)
}
err = ioutil.WriteFile(tempdir+"/korvax-lang.csv", []byte(data), 0644)
csvFile, err := os.Open(tempdir + "/korvax-lang.csv")
if err != nil {
fmt.Println(err)
}
defer csvFile.Close()
csvlines, err := csv.NewReader(csvFile).ReadAll()
if err != nil {
fmt.Println(err)
}
for _, line := range csvlines {
klang := korvaxWord{
english: line[0],
korvax: line[1],
kwcaps: line[2],
kwallcaps: line[3],
}
if enwrd == klang.english {
return klang.korvax
}
}
return "*\\Kzzzzzzt\\*" // word not found default
}