26 Commits

Author SHA1 Message Date
Bradley Richins
5f4414df03 Update README.md 2020-10-28 16:38:05 +00:00
bradley.richins
57a1d729dd added .gitlab-ci.yml 2020-10-28 10:10:08 -06:00
bradley.richins
67db2e32ef Updated README.md 2020-10-24 10:38:28 -06:00
bradley.richins
2bb7ca6ccd Updated Recources
Improved/Fixed CSV formatting issues
2020-10-23 12:19:49 -06:00
bradley.richins
2610d98ae1 Updated Translation tests 2020-10-23 12:19:16 -06:00
bradley.richins
32d533ff61 Added supprot for Gek, Vykeen and Atlas
Eng2Atl & Atl2Eng - NEW
Eng2Gek & Gek2Eng - NEW
Eng2Vyk & Vyk2Eng - NEW
Eng2Kor & Kor2Eng
2020-10-23 12:15:34 -06:00
bradley.richins
ac68a20697 Updated recources
korvax-lang.csv
glyphs/GLYPH-0.png
glyphs/GLYPH-1.png
glyphs/GLYPH-2.png
glyphs/GLYPH-3.png
glyphs/GLYPH-4.png
glyphs/GLYPH-5.png
glyphs/GLYPH-6.png
glyphs/GLYPH-7.png
glyphs/GLYPH-8.png
glyphs/GLYPH-9.png
glyphs/GLYPH-A.png
glyphs/GLYPH-B.png
glyphs/GLYPH-C.png
glyphs/GLYPH-D.png
glyphs/GLYPH-E.png
glyphs/GLYPH-F.png

atlas-lang.csv  - NEW
gek-lang.csv    - NEW
vykeen-lang.csv - NEW
2020-10-23 09:48:14 -06:00
bradley.richins
0b90141dcd Updated README.md
https://gitlab.com/bradley.richins/nmslib/-/tree/develop#translate-korvax-to-english-with-korvax2eng
https://gitlab.com/bradley.richins/nmslib/-/tree/develop#translate-english-to-korvax-with-eng2korvax

https://gitlab.com/bradley.richins/nmslib/-/tree/develop#usage
2020-10-22 13:43:26 -06:00
bradley.richins
5bc5711f09 Updated README.md
https://gitlab.com/bradley.richins/nmslib/-/tree/develop#translate-korvax-to-english-with-korvax2eng
https://gitlab.com/bradley.richins/nmslib/-/tree/develop#translate-english-to-korvax-with-eng2korvax
2020-10-22 13:38:16 -06:00
bradley.richins
00411f015c Complete redesign of lang.go
Some code is now reusable

- openCSV()
- toKor()
- toEng()

the new translation syantax is

```golang
korvax := Translate{"Contraband"}
fmt.Println(korvax.Eng2Kor())
// or
fmt.Println(Translate{"KIHTYOMOLES"}.Kor2Eng())
```

output:

`Zelidovoso`
2020-10-22 13:11:03 -06:00
bradley.richins
ab9799b273 Rewrite on all lang translation tests 2020-10-22 13:10:59 -06:00
bradley.richins
d8dbc66b27 Added/Changed tests
Changed or added the fallowing tests
TestPortal2Galactic:
	P2gc("41EDF9554C2F")

TestGalactic2portal:
	Gc2p("042F:0079:0D55:006A", 1)
	Gc2p("042E:0078:0D53:01ED", 4)

TestKorvax2Eng:
	Korvax2Eng("rodiashikhv")
	Korvax2Eng("KIHTYOMOLES")
	Korvax2Eng("Zelidovoso")
	Eng2Korvax("contraband")
	Eng2Korvax("CONTRABAND")
	Eng2Korvax("Contraband")
2020-10-21 11:36:20 -06:00
bradley.richins
08ed8866d0 Improved translations
Upper case and CAPLOCK words are now properly translated

Began prepering code for rewrite
TODO:   make code reusable\
	add support for:
		Gek
		Vykeen
		Atlas

added some annotations
2020-10-21 11:28:26 -06:00
bradley.richins
620d0ef9de Improved Galactic coords to protal code conversion
Removed un-needed error check

Added ability to pick planet id (0-6)
   Gc2p(gc string) ->> Gc2p(gc string, p int)
2020-10-21 11:26:54 -06:00
bradley.richins
312d38ac6d Updated: add package module github.com/nfnt/resize 2020-10-20 19:17:54 -06:00
bradley.richins
4aec0e4e9a Auto resize image to 768x64
Using http://github.com/nfnt/resize to resize banners
2020-10-20 19:15:06 -06:00
bradley.richins
4f1002ee2d Optimized 2020-10-20 16:23:57 -06:00
bradley.richins
f291891139 Temp directory renamed to nms-{SEED} 2020-10-20 15:14:42 -06:00
bradley.richins
230cefb85d Temp files are now stored in system temp dir 2020-10-20 14:47:04 -06:00
bradley.richins
84df8142c6 Updated 2020-10-20 14:45:49 -06:00
bradley.richins
38e45c4f60 Minnor change
Renamed strut Korvaxlang to KorvaxWord and
English > english
KorvaxWord > korvax
KWCaps > kwcaps
KWALLCAPS > kwallcaps
2020-10-20 12:43:19 -06:00
bradley.richins
221f4e59e1 Updated README.md 2020-10-20 00:08:37 -06:00
bradley.richins
8ccafd5c0c Renamed from LICENSE 2020-10-20 00:06:19 -06:00
bradley.richins
59fcf3e2f0 Renamed to COPYING 2020-10-20 00:05:33 -06:00
bradley.richins
59cc61105a Updated README.md 2020-10-19 22:37:00 -06:00
bradley.richins
ea438a7f40 Example Glyph Banner 2020-10-19 22:36:42 -06:00
11 changed files with 642 additions and 359 deletions

9
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,9 @@
stages:
- test
test:
stage: test
image: golang:1.15.3
script:
- go test

View File

BIN
NewLennon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

131
README.md
View File

@@ -1,9 +1,12 @@
# NMSlib # NMSlib
**master Branch** : ![](https://gitlab.com/bradley.richins/nmslib/badges/master/pipeline.svg)
**develop Branch** : ![](https://gitlab.com/bradley.richins/nmslib/badges/develop/pipeline.svg)
NMSlib is a GoLang package for dealing with converting Galactic coordinates to Portal codes and vice versa. NMSlib is a GoLang package for dealing with converting Galactic coordinates to Portal codes and vice versa.
NMSlib also translates known Korvax words to English and back. NMSlib also translates in game languages to english.
- Gek, Vykeen, etc will be added in the future
## Installation ## Installation
@@ -16,6 +19,8 @@ go get -u gitlab.com/bradley.richins/nmslib
## Usage ## Usage
**Example:**
```golang ```golang
package main package main
@@ -32,12 +37,128 @@ func main() {
panic(err) panic(err)
} }
fmt.Printf("Input:\t%s\nExpecting:\t042F:0079:0D55:006A\nHave:\t%s\n", portalcode, tstvar) fmt.Printf("Input:\t%s\nExpecting:\t042F:0079:0D55:006A\nHave:\t%s\n", portalcode, tstvar)
nmslib.CreateBanner(portalcode, "NewLennon.png", 0) nmslib.CreateBanner(portalcode, "NewLennon.png", 0)
fmt.Println(nmslib.Korvax2Eng("eapoluch")) fmt.Println(Translate{"KIHTYOMOLES"}.Kor2Eng())
fmt.Println(nmslib.Eng2Korvax("emergency")) korvax := Translate{"Contraband"}
fmt.Println(korvax.Eng2Kor())
} }
``` ```
### Creating a Glyph banner with CreateBanner()
This function takes 3 parameters:
* portalcode: 12 char hex string of portal location
* savename: Save location and name
* Horizontal/Vertical layout: 0 is horizontal, 1 is vertical
**Example:**
Horizontal Layout for Galactic Hub [HUB10-6A Icarus Sun](https://nomanssky.gamepedia.com/HUB10-6A_Icarus_Sun) Eniwa 68/L3
```golang
nmslib.CreateBanner("006afa556c30", "NewLennon.png", 0)
```
![](NewLennon.png)
### Converting Portal code to Galactic address with P2gc()
This function only takes 1 parameter and returns a string and error
* portalcode: 12 char hex string of portal glyphs
**Example:**
```golang
ga, _ := nmslib.P3gc("006afa556c30")
fmt.Println(ga)
```
Output:
``042F:0079:0D55:006A``
### Converting Galactic coordinates to Portal codes with Gc2p()
This function only takes 1 parameter and returns a string and error
* galacticaddress: 16 char 4 block hex address
**Example:**
```golang
pc, _ := nmslib.P3gc("042F:0079:0D55:006A")
fmt.Println(pc)
```
Output:
``006AFA556C30``
## Translate Words
Supported languages
- Korvax
- Gek
- Vy'keen
- Atlas
### Translate Atlas to English with Atl2Eng()
This function takes only 1 parameter and returns a string
* Word: Any known Atlas word (ex. Paka)
**Example:**
```golang
fmt.Println(Translate{"Paka"}.Atl2Eng())
```
Output:
``Awake``
### Translate English to Korvax with Eng2Korvax()
This function takes only 1 parameter and returns a string
* engword: English word to attempt conversion
**Example:**
```golang
korvax := Translate{"Contraband"}
fmt.Println(korvax.Eng2Kor())
```
Output:
``Zelidovoso``
### Language commands
Gek:
- ``Translate{word}.Gek2Eng()``
- ``Translate{word}.Eng2Gek()``
Korvax:
- ``Translate{word}.Kor2Eng()``
- ``Translate{word}.Eng2Kor()``
Vy'keen:
- ``Translate{word}.Vyk2Eng()``
- ``Translate{word}.Eng2Vyk()``
Atlas:
- ``Translate{word}.Atl2Eng()``
- ``Translate{word}.Eng2Atl()``
## License ## License
[MIT](https://choosealicense.com/licenses/mit/) [MIT](COPYING)

View File

@@ -70,22 +70,23 @@ func P2gc(p string) (gc string, err error) {
/* /*
Gc2p - Galactic coordinates to portal code Gc2p - Galactic coordinates to portal code
Requires 1 string and returns a string and error Requires 1 string and 1 int returns a string and error
var gc string var gc string
Galactic address (ex. 042F:0079:0D55:006A) Galactic address (ex. 042F:0079:0D55:006A)
var p int
Planet ID [1-6]
Return var string Return var string
Portal Glyph hex string 12 chars in len (ex. 006afa556c30) Portal Glyph hex string 12 chars in len (ex. 006afa556c30)
*/ */
func Gc2p(gc string) (portalcode string, err error) { func Gc2p(gc string, p int) (portalcode string, err error) {
if err != nil {
panic(err)
}
/*TODO: add option for Planet choice (1-6)*/
// split and store string // split and store string
// coords[0] == X; coords[1] == Y coords[2] == Z; // coords[0] == X; coords[1] == Y coords[2] == Z;
// coords[3] == SSI coords[4] == P // coords[3] == SSI coords[4] == P
coords := strings.Split(gc+":1", ":") if p > 6 {
p = 1
}
nustring := fmt.Sprintf("%s:%d", gc, p)
coords := strings.Split(nustring, ":")
for n := 0; n < len(coords); n++ { for n := 0; n < len(coords); n++ {
portalcode = portalcode + coords[n] portalcode = portalcode + coords[n]
} }

View File

@@ -7,6 +7,8 @@ import (
"os" "os"
"strconv" "strconv"
"github.com/nfnt/resize"
gim "github.com/ozankasikci/go-image-merge" gim "github.com/ozankasikci/go-image-merge"
) )
@@ -24,6 +26,16 @@ func CreateBanner(portalhex string, savename string, vopt int) {
var err error var err error
var GlyphHex [12]int64 var GlyphHex [12]int64
var glyphImg [12]string var glyphImg [12]string
var vert int
var horz int
// Setup temp dir
tempdir, err := ioutil.TempDir("", "nmslib-")
if err != nil {
panic(err)
}
defer os.RemoveAll(tempdir)
// verify len of portalhex // verify len of portalhex
if len(portalhex) == 12 { if len(portalhex) == 12 {
// get hex value from each digit in given string to an array of int64 // get hex value from each digit in given string to an array of int64
@@ -35,7 +47,7 @@ func CreateBanner(portalhex string, savename string, vopt int) {
} }
// assign image location of its glyph hex value to an array of strings // assign image location of its glyph hex value to an array of strings
for j := 0; j < len(glyphImg); j++ { for j := 0; j < len(glyphImg); j++ {
glyphImg[j] = fmt.Sprintf("tmp.nmslib/glyphs/GLYPH-%X.png", GlyphHex[j]) glyphImg[j] = fmt.Sprintf("glyphs/GLYPH-%X.png", GlyphHex[j])
} }
// pull images need from glyph.go and saved them to ./glyphs/ // pull images need from glyph.go and saved them to ./glyphs/
for k := 0; k < len(glyphImg); k++ { for k := 0; k < len(glyphImg); k++ {
@@ -43,49 +55,47 @@ func CreateBanner(portalhex string, savename string, vopt int) {
if err != nil { if err != nil {
panic(err) panic(err)
} }
_, err2 := os.Stat("tmp.nmslib/glyphs") _, err2 := os.Stat(tempdir + "/glyphs/")
if os.IsNotExist(err2) { if os.IsNotExist(err2) {
errDir := os.MkdirAll("tmp.nmslib/glyphs", 0755) errDir := os.MkdirAll(tempdir+"/glyphs", 0755)
if errDir != nil { if errDir != nil {
panic(errDir) panic(errDir)
} }
} }
err = ioutil.WriteFile(glyphImg[k], []byte(data), 0644)
err = ioutil.WriteFile(tempdir+"/"+glyphImg[k], []byte(data), 0644)
} }
} }
// load images for processing using github.com/ozankasikci/go-image-merge // load images for processing using github.com/ozankasikci/go-image-merge
grids := []*gim.Grid{ grids := []*gim.Grid{
{ImageFilePath: glyphImg[0]}, {ImageFilePath: glyphImg[1]}, {ImageFilePath: tempdir + "/" + glyphImg[0]}, {ImageFilePath: tempdir + "/" + glyphImg[1]},
{ImageFilePath: glyphImg[2]}, {ImageFilePath: glyphImg[3]}, {ImageFilePath: tempdir + "/" + glyphImg[2]}, {ImageFilePath: tempdir + "/" + glyphImg[3]},
{ImageFilePath: glyphImg[4]}, {ImageFilePath: glyphImg[5]}, {ImageFilePath: tempdir + "/" + glyphImg[4]}, {ImageFilePath: tempdir + "/" + glyphImg[5]},
{ImageFilePath: glyphImg[6]}, {ImageFilePath: glyphImg[7]}, {ImageFilePath: tempdir + "/" + glyphImg[6]}, {ImageFilePath: tempdir + "/" + glyphImg[7]},
{ImageFilePath: glyphImg[8]}, {ImageFilePath: glyphImg[9]}, {ImageFilePath: tempdir + "/" + glyphImg[8]}, {ImageFilePath: tempdir + "/" + glyphImg[9]},
{ImageFilePath: glyphImg[10]}, {ImageFilePath: glyphImg[11]}, {ImageFilePath: tempdir + "/" + glyphImg[10]}, {ImageFilePath: tempdir + "/" + glyphImg[11]},
} }
if vopt == 1 {
// Merge images horizontally if vopt == 1 { // set vertical rendering
rgba, err := gim.New(grids, 1, 12).Merge() vert, horz = 1, 12
if err != nil { } else { // set horizontal rendering (default)
panic(err) vert, horz = 12, 1
} }
// save the output to png
fmt.Printf("Saving %s to %s in vertical format\n", portalhex, savename) // create new image from grids
file, err := os.Create(savename) rgba, err := gim.New(grids, vert, horz).Merge()
err = png.Encode(file, rgba)
} else {
// Merge images vertically
rgba, err := gim.New(grids, 12, 1).Merge()
if err != nil { if err != nil {
panic(err) panic(err)
} }
// Resize banner 768x64
nuimg := resize.Resize(768, 64, rgba, resize.Lanczos3)
// save the output to png // save the output to png
fmt.Printf("Saving %s to %s\n", portalhex, savename) fmt.Printf("Saving %s to %s\n", portalhex, savename)
file, err := os.Create(savename) file, err := os.Create(savename)
err = png.Encode(file, rgba) err = png.Encode(file, nuimg)
} if err != nil {
// remove glyphs folder to keep it clean fmt.Println(err)
errDir := os.RemoveAll("tmp.nmslib/glyphs")
if errDir != nil {
panic(errDir)
} }
} }

5
go.mod
View File

@@ -2,4 +2,7 @@ module gitlab.com/bradley.richins/nmslib
go 1.15 go 1.15
require github.com/ozankasikci/go-image-merge v0.2.2 require (
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
github.com/ozankasikci/go-image-merge v0.2.2
)

2
go.sum
View File

@@ -1,2 +1,4 @@
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6Oo2LfFZAehjjQMERAvZLEDnQ=
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8=
github.com/ozankasikci/go-image-merge v0.2.2 h1:K370BLLTIsamwjAeViiPntf7GiG3h9pXzDmxXCbN8/0= github.com/ozankasikci/go-image-merge v0.2.2 h1:K370BLLTIsamwjAeViiPntf7GiG3h9pXzDmxXCbN8/0=
github.com/ozankasikci/go-image-merge v0.2.2/go.mod h1:NQ2aN0b21buFx3p+5x4dZrKuPSLh2uBukK7F30BrYTo= github.com/ozankasikci/go-image-merge v0.2.2/go.mod h1:NQ2aN0b21buFx3p+5x4dZrKuPSLh2uBukK7F30BrYTo=

254
lang.go
View File

@@ -9,119 +9,183 @@ import (
) )
/* /*
Korvaxlang - set up structure of a word iteration Translate words
*/ */
type Korvaxlang struct { type Translate struct {
English string word string
KorvaxWord string }
KWCaps string
KWALLCAPS string // 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
} }
/* /*
Korvax2Eng - convert known korvax words into english Kor2Eng translate korvax word to english word
*/ */
func Korvax2Eng(kvwrd string) string { func (t Translate) Kor2Eng() (returnstring string) {
data, err := Asset("tmp.nmslib/korvax-lang.csv") csvlines := openCSV("korvax-lang.csv")
if err != nil { for range csvlines {
panic(err) returnstring = (toEng(t, csvlines))
} }
_, err2 := os.Stat("tmp.nmslib/") return
if os.IsNotExist(err2) {
errDir := os.MkdirAll("tmp.nmslib/", 0755)
if errDir != nil {
panic(errDir)
}
}
err = ioutil.WriteFile("tmp.nmslib/korvax-lang.csv", []byte(data), 0644)
csvFile, err := os.Open("tmp.nmslib/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 := Korvaxlang{
English: line[0],
KorvaxWord: line[1],
KWCaps: line[2],
KWALLCAPS: line[3],
}
if kvwrd == klang.KorvaxWord {
errDir := os.RemoveAll("tmp.nmslib")
if errDir != nil {
panic(errDir)
}
return klang.English
} else if kvwrd == klang.KWCaps {
errDir := os.RemoveAll("tmp.nmslib")
if errDir != nil {
panic(errDir)
}
return strings.Title(strings.ToLower(klang.English))
} else if kvwrd == klang.KWALLCAPS {
errDir := os.RemoveAll("tmp.nmslib")
if errDir != nil {
panic(errDir)
}
return strings.ToUpper(klang.English)
}
}
// remove recource folder to keep it clean
errDir := os.RemoveAll("tmp.nmslib")
if errDir != nil {
panic(errDir)
}
return "*\\Kzzzzzzt\\*" // word not found default
} }
/* /*
Eng2Korvax - Convert (some) english words to Korvax Eng2Kor translate english word to korvax word
*/ */
func Eng2Korvax(enwrd string) string { func (t Translate) Eng2Kor() (returnstring string) {
data, err := Asset("tmp.nmslib/korvax-lang.csv") csvlines := openCSV("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 := openCSV("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 := openCSV("gek-lang.csv")
for range csvlines {
returnstring = (toNMS(t, csvlines))
}
return
}
/*
Vyk2Eng translate vykeen word to english word
*/
func (t Translate) Vyk2Eng() (returnstring string) {
csvlines := openCSV("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 := openCSV("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 := openCSV("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 := openCSV("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 returnstring
}
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
}
func openCSV(lagcsv string) [][]string {
// create temp dir
tempdir, err := ioutil.TempDir("", "nmslib-")
if err != nil { if err != nil {
panic(err) panic(err)
} }
_, err2 := os.Stat("tmp.nmslib/") defer os.RemoveAll(tempdir) // Clean up temp files
if os.IsNotExist(err2) {
errDir := os.MkdirAll("tmp.nmslib/", 0755) // extract language file from resources.go
if errDir != nil { data, err := Asset(lagcsv)
panic(errDir) if err != nil {
panic(err)
} }
}
err = ioutil.WriteFile("tmp.nmslib/korvax-lang.csv", []byte(data), 0644) // wirte extracted data to temp dir
csvFile, err := os.Open("tmp.nmslib/korvax-lang.csv") err = ioutil.WriteFile(tempdir+"/"+lagcsv, []byte(data), 0644)
csvFile, err := os.Open(tempdir + "/" + lagcsv)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
} }
defer csvFile.Close() defer csvFile.Close() // close language file when finished
CsvLines, err := csv.NewReader(csvFile).ReadAll()
// read csv file from memory
csvlines, err := csv.NewReader(csvFile).ReadAll()
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
} }
for _, line := range CsvLines { return csvlines
klang := Korvaxlang{
English: line[0],
KorvaxWord: line[1],
KWCaps: line[2],
KWALLCAPS: line[3],
}
if enwrd == klang.English {
errDir := os.RemoveAll("tmp.nmslib")
if errDir != nil {
panic(errDir)
}
return klang.KorvaxWord
}
}
// remove recource folder to keep it clean
errDir := os.RemoveAll("tmp.nmslib")
if errDir != nil {
panic(errDir)
}
return "*\\Kzzzzzzt\\*" // word not found default
} }

View File

@@ -15,64 +15,70 @@ func TestPortal2Galactic(t *testing.T) {
} else { } else {
fmt.Printf("Testing P2gc(\"006afa556c30\"): got: %q, want: %q.\n", want, "042F:0079:0D55:006A") fmt.Printf("Testing P2gc(\"006afa556c30\"): got: %q, want: %q.\n", want, "042F:0079:0D55:006A")
} }
want, err = P2gc("41EDF9554C2F")
if err != nil {
panic(err)
}
if want != "042E:0078:0D53:01ED" {
t.Errorf("Testing P2gc(\"41EDF9554C2F\"): got %q, want: %q.\n", want, "042E:0078:0D53:01ED")
} else {
fmt.Printf("Testing P2gc(\"41EDF9554C2F\"): got: %q, want: %q.\n", want, "042E:0078:0D53:01ED")
}
} }
func TestGalactic2portal(t *testing.T) { func TestGalactic2portal(t *testing.T) {
want, err := Gc2p("042F:0079:0D55:006A") want, err := Gc2p("042F:0079:0D55:006A", 1)
if err != nil { if err != nil {
panic(err) panic(err)
} }
if want != "106AFA556C30" { if want != "106AFA556C30" {
t.Errorf("Testing Gc2p(\"042F:0079:0D55:006A\"): got %q, want: %q.\n", want, "106AFA556C30") t.Errorf("\nTesting Gc2p(\"042F:0079:0D55:006A\"): got %q, want: %q.\n", want, "106AFA556C30")
} else { } else {
fmt.Printf("Testing Gc2p(\"042F:0079:0D55:006A\"): got: %q, want: %q.\n", want, "106AFA556C30") fmt.Printf("\nTesting Gc2p(\"042F:0079:0D55:006A\"): got: %q, want: %q.\n", want, "106AFA556C30")
} }
want, err = Gc2p("044B:0081:0D68:0096") want, err = Gc2p("042E:0078:0D53:01ED", 4)
if err != nil { if err != nil {
panic(err) panic(err)
} }
if want != "109602569C4C" { if want != "41EDF9554C2F" {
t.Errorf("Testing Gc2p(\"044B:0081:0D68:0096\"): got %q, want: %q.\n", want, "109602569C4C") t.Errorf("Testing Gc2p(\"042E:0078:0D53:01ED\"): got %q, want: %q.\n", want, "41EDF9554C2F")
} else { } else {
fmt.Printf("Testing Gc2p(\"044B:0081:0D68:0096\"): got: %q, want: %q.\n", want, "109602569C4C") fmt.Printf("Testing Gc2p(\"042E:0078:0D53:01ED\"): got: %q, want: %q.\n", want, "41EDF9554C2F")
} }
} }
func TestCreateBanner(t *testing.T) { func TestCreateBanner(t *testing.T) {
fmt.Printf("Testing CreateBanner: ") fmt.Printf("\nTesting CreateBanner: ")
CreateBanner("006afa556c30", "/tmp/Test.png", 0) CreateBanner("006afa556c30", "/tmp/Test.png", 0)
} }
func TestKorvax2Eng(t *testing.T) { func TestTranslate(t *testing.T) {
want := Korvax2Eng("eapoluch") want := Translate{"Paka"}
if want != "emergency" { if want.Atl2Eng() != "Awake" {
t.Errorf("Testing Korvax2eng(\"eapoluch\"): got %q, want: %q.\n", want, "emergency") t.Errorf("\nTesting Translate{\"Paka\"}.Atl2Eng(): got %q, want: %q.\n", want.Atl2Eng(), "Awake")
} else { } else {
fmt.Printf("Testing Korvax2eng(\"eapoluch\"): got %q, want: %q.\n", want, "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")
} }
want = Korvax2Eng("notaword") want = Translate{"Aqo"}
if want != "*\\Kzzzzzzt\\*" { if want.Vyk2Eng() != "Foes" {
t.Errorf("Testing Korvax2eng(\"notaword\"): got %q, want: %q.\n", want, "*\\Kzzzzzzt\\*") t.Errorf("Testing Translate{\"Aqo\"}.Vyk2Eng(): got %q, want: %q.\n", want.Vyk2Eng(), "Foes")
} else { } else {
fmt.Printf("Testing Korvax2eng(\"notaword\"): got %q, want: %q.\n", want, "*\\Kzzzzzzt\\*") fmt.Printf("Testing Translate{\"Aqo\"}.Vyk2Eng(): got %q, want: %q.\n", want.Vyk2Eng(), "Foes")
} }
} want = Translate{"Alinichel"}
if want.Kor2Eng() != "Emergency" {
func TestEng2Korvax(t *testing.T) { t.Errorf("Testing Translate{\"Alinichel\"}.Kor2Eng(): got %q, want: %q.\n", want.Kor2Eng(), "Emergency")
want := Eng2Korvax("emergency")
if want != "eapoluch" {
t.Errorf("Testing Eng2Korvax(\"emergency\"): got %q, want: %q.\n", want, "eapoluch")
} else { } else {
fmt.Printf("Testing Eng2Korvax(\"emergency\"): got %q, want: %q.\n", want, "eapoluch") fmt.Printf("Testing Translate{\"Alinichel\"}.Kor2Eng(): got %q, want: %q.\n", want.Kor2Eng(), "Emergency")
} }
fmt.Printf("\nTesting complete.\nStatus: ")
want = Eng2Korvax("notaword")
if want != "*\\Kzzzzzzt\\*" {
t.Errorf("Testing Eng2Korvax(\"notaword\"): got %q, want: %q.\n", want, "*\\Kzzzzzzt\\*")
} else {
fmt.Printf("Testing Eng2Korvax(\"notaword\"): got %q, want: %q.\n", want, "*\\Kzzzzzzt\\*")
}
fmt.Printf("Testing: ")
} }

File diff suppressed because one or more lines are too long