From 6d3a57d31c41f7f1ffa52f37d1aae6be02f05c42 Mon Sep 17 00:00:00 2001 From: Raum0x2A Date: Thu, 20 May 2021 19:05:29 -0600 Subject: [PATCH] Revert "WIP - rebuilding translator" This reverts commit ab420a0a449887463aacbaa5d1f56cac6df4095b. --- init.go | 2 +- lang.go | 195 +++++++++++++++++++++++++++++++-------- nmslib-translate_test.go | 30 ++++-- 3 files changed, 177 insertions(+), 50 deletions(-) diff --git a/init.go b/init.go index 7fa35d9..9ee9436 100644 --- a/init.go +++ b/init.go @@ -54,7 +54,7 @@ func init() { if err != nil { panic(errors.New("can not load: " + fileloc[x])) } - err = ioutil.WriteFile(NmsTemp+"/assets/lang/"+fileloc[x], []byte(data), 0644) + err = ioutil.WriteFile(NmsTemp+"/"+fileloc[x], []byte(data), 0644) if err != nil { panic(errors.New("can not write " + fileloc[x] + " to temp dir")) } diff --git a/lang.go b/lang.go index a121dc4..aec0d20 100644 --- a/lang.go +++ b/lang.go @@ -2,61 +2,176 @@ package nmslib import ( "encoding/csv" + "fmt" "os" "strings" ) +func readCSV(lagcsv string) [][]string { + fileloc := NmsTemp + "/" + lagcsv + csvFile, err := os.Open(fileloc) + if err != nil { + fmt.Println(err) + } + defer csvFile.Close() // close language file when finished + + // read csv file from memory + csvlines, err := csv.NewReader(csvFile).ReadAll() + if err != nil { + fmt.Println(err) + } + return csvlines + +} + +/* +Create struct of Word string +*/ type Translate struct { - Lang string + Word string } -func (t Translate) ToEng(word string) (translation string) { - return translate2english(word, langFile(t.Lang)) +// trans - set up structure of a word iteration +type trans0 struct { + english string // english word + word string // no caps word + capword string // Capitalized word + acpword string // ALL CAPITALIZED WORD } -func langFile(lang string) [][]string { - filepath := NmsTemp + "/assets/lang/" + lang + "-lang.csv" - csvFile, err := os.Open(filepath) - if err != nil { - panic(err) +/* +Kor2Eng translate korvax word to english word +*/ +func (t Translate) Kor2Eng() (returnstring string) { + csvlines := readCSV("korvax-lang.csv") + for range csvlines { + returnstring = (toEng(t, csvlines)) } - defer csvFile.Close() - - lines, err := csv.NewReader(csvFile).ReadAll() - if err != nil { - panic(err) - } - return lines + return } -func translate2english(w string, knowledgeStone [][]string) string { - var rt string - for _, line := range knowledgeStone { - engl := line[0] - alien := line[1] - acap := line[2] - alcap := line[3] - if strings.EqualFold(w, alien) { - rt = strings.ToLower(engl) - } else if strings.EqualFold(w, acap) { - rt = strings.Title(engl) - } else if strings.EqualFold(w, alcap) { - rt = strings.ToUpper(engl) - } else { - rt = "*\\Kzzzzzzt\\*" +/* +Eng2Kor translate english word to korvax word +*/ +func (t Translate) Eng2Kor() (returnstring string) { + csvlines := readCSV("korvax-lang.csv") + for range csvlines { + returnstring = (toNMS(t, csvlines)) + } + return +} + +/* +Gek2Eng translate Gek word to english word +*/ +func (t Translate) Gek2Eng() (returnstring string) { + csvlines := readCSV("gek-lang.csv") + for range csvlines { + returnstring = (toEng(t, csvlines)) + } + return +} + +/* +Eng2Gek translate english word to Gek word +*/ +func (t Translate) Eng2Gek() (returnstring string) { + csvlines := readCSV("gek-lang.csv") + for range csvlines { + returnstring = (toNMS(t, csvlines)) + } + return +} + +/* +Vyk2Eng translate Vy'keen word to english word +*/ +func (t Translate) Vyk2Eng() (returnstring string) { + csvlines := readCSV("vykeen-lang.csv") + for range csvlines { + returnstring = (toEng(t, csvlines)) + } + return +} + +/* +Eng2Vyk translate english word to vykeen word +*/ +func (t Translate) Eng2Vyk() (returnstring string) { + csvlines := readCSV("vykeen-lang.csv") + for range csvlines { + returnstring = (toNMS(t, csvlines)) + } + return +} + +/* +Atl2Eng translate Atlas word to english word +*/ +func (t Translate) Atl2Eng() (returnstring string) { + csvlines := readCSV("atlas-lang.csv") + for range csvlines { + returnstring = (toEng(t, csvlines)) + } + return +} + +/* +Eng2Atl translate english word to Atlas word +*/ +func (t Translate) Eng2Atl() (returnstring string) { + csvlines := readCSV("atlas-lang.csv") + for range csvlines { + returnstring = (toNMS(t, csvlines)) + } + return +} + +func toEng(t Translate, csvlines [][]string) string { + returnstring := "*\\Kzzzzzzt\\*" // word not found default + for _, line := range csvlines { + lang := trans0{ + english: strings.ToLower(line[0]), + word: strings.ToLower(line[1]), + capword: strings.ToLower(line[2]), + acpword: strings.ToLower(line[3]), + } + // check translate struct for value + if strings.ToLower(t.Word) == lang.word { + returnstring = lang.english + } else if strings.ToLower(t.Word) == lang.capword { + returnstring = strings.Title(strings.ToLower(lang.english)) + } else if strings.ToLower(t.Word) == lang.acpword { + returnstring = strings.ToUpper(lang.english) } } - return rt + return returnstring } -func translate2game(source string, target string) string { - var sourceCsv [][]string - var targetCsv [][]string - if source == "english" { - sourceCsv = langFile(target) - targetCsv = sourceCsv - } else { - sourceCsv = langFile(source) - targetCsv = langFile(target) +func toNMS(t Translate, csvlines [][]string) string { + returnstring := "*\\Kzzzzzzt\\*" // word not found default + for _, line := range csvlines { + lang := trans0{ + english: line[0], + word: line[1], + capword: line[2], + acpword: line[3], + } + if t.Word == lang.english { + if lang.word != "" { + returnstring = lang.word + } + } + if t.Word == strings.Title(strings.ToLower(lang.english)) { + if lang.capword != "" { + returnstring = strings.Title(strings.ToLower(lang.capword)) + } + } + if t.Word == strings.ToUpper(lang.english) { + if lang.acpword != "" { + returnstring = strings.ToUpper(lang.acpword) + } + } } + return returnstring } diff --git a/nmslib-translate_test.go b/nmslib-translate_test.go index 267ecab..0cf0c01 100644 --- a/nmslib-translate_test.go +++ b/nmslib-translate_test.go @@ -6,20 +6,32 @@ import ( ) func TestTranslate(t *testing.T) { - kor2eng := Translate{Lang: "korvax"} - if kor2eng.ToEng("Alinichel") != "Emergency" { - t.Errorf("\nTesting Translate{Lang: \"korvax\"}.ToEng(\"Alinichel\"): got %q, want: %q.\n", kor2eng.ToEng("Alinichel"), "Emergency") + want := Translate{"Paka"} + if want.Atl2Eng() != "Awake" { + t.Errorf("\nTesting Translate{\"Paka\"}.Atl2Eng(): got %q, want: %q.\n", want.Atl2Eng(), "Awake") } else { - fmt.Printf("\nTesting Translate{Lang: \"korvax\"}.ToEng(\"Alinichel\"): got %q, want: %q.\n", kor2eng.ToEng("Alinichel"), "Emergency") + fmt.Printf("\nTesting Translate{\"Paka\"}.Atl2Eng(): got %q, want: %q.\n", want.Atl2Eng(), "Awake") + } + want = Translate{"hofsos"} + if want.Gek2Eng() != "answer" { + t.Errorf("Testing Translate{\"hofsos\"}.Gek2Eng(): got %q, want: %q.\n", want.Gek2Eng(), "answer") + } else { + fmt.Printf("Testing Translate{\"hofsos\"}.Gek2Eng(): got %q, want: %q.\n", want.Gek2Eng(), "answer") } - vyk2eng := Translate{"vykeen"} - if vyk2eng.ToEng("Aqo") != "Foes" { - t.Errorf("Testing Translate{Lang: \"vykeen\"}.ToEng(\"Aqo\"): got %q, want: %q.\n", vyk2eng.ToEng("Aqo"), "Foes") + want = Translate{"Aqo"} + if want.Vyk2Eng() != "Foes" { + t.Errorf("Testing Translate{\"Aqo\"}.Vyk2Eng(): got %q, want: %q.\n", want.Vyk2Eng(), "Foes") } else { - fmt.Printf("Testing Translate{Lang: \"vykeen\"}.ToEng(\"Aqo\"): got %q, want: %q.\n", vyk2eng.ToEng("Aqo"), "Foes") + fmt.Printf("Testing Translate{\"Aqo\"}.Vyk2Eng(): got %q, want: %q.\n", want.Vyk2Eng(), "Foes") } + want = Translate{"Alinichel"} + if want.Kor2Eng() != "Emergency" { + t.Errorf("Testing Translate{\"Alinichel\"}.Kor2Eng(): got %q, want: %q.\n", want.Kor2Eng(), "Emergency") + } else { + fmt.Printf("Testing Translate{\"Alinichel\"}.Kor2Eng(): got %q, want: %q.\n", want.Kor2Eng(), "Emergency") + } + fmt.Printf("\nTesting complete.\nStatus: ") CleanUp() - fmt.Printf("\nTesting complete.\nStatus: ") }