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("", ".gotemp") 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("", ".gotemp") 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 }