98 lines
2.0 KiB
Go
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
|
|
}
|