Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5f4414df03 | ||
|
|
57a1d729dd | ||
|
|
67db2e32ef | ||
|
|
2bb7ca6ccd | ||
|
|
2610d98ae1 | ||
|
|
32d533ff61 | ||
|
|
ac68a20697 | ||
|
|
0b90141dcd | ||
|
|
5bc5711f09 | ||
|
|
00411f015c | ||
|
|
ab9799b273 | ||
|
|
d8dbc66b27 | ||
|
|
08ed8866d0 | ||
|
|
620d0ef9de | ||
|
|
312d38ac6d | ||
|
|
4aec0e4e9a | ||
|
|
4f1002ee2d | ||
|
|
f291891139 | ||
|
|
230cefb85d | ||
|
|
84df8142c6 | ||
|
|
38e45c4f60 | ||
|
|
221f4e59e1 | ||
|
|
8ccafd5c0c | ||
|
|
59fcf3e2f0 | ||
|
|
59cc61105a | ||
|
|
ea438a7f40 |
9
.gitlab-ci.yml
Normal file
9
.gitlab-ci.yml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
stages:
|
||||||
|
- test
|
||||||
|
|
||||||
|
test:
|
||||||
|
stage: test
|
||||||
|
image: golang:1.15.3
|
||||||
|
script:
|
||||||
|
- go test
|
||||||
|
|
||||||
BIN
NewLennon.png
Normal file
BIN
NewLennon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 228 KiB |
133
README.md
133
README.md
@@ -1,9 +1,12 @@
|
|||||||
# NMSlib
|
# NMSlib
|
||||||
|
|
||||||
|
**master Branch** : 
|
||||||
|
|
||||||
|
**develop Branch** : 
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
@@ -31,13 +36,129 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
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)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 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)
|
||||||
|
|||||||
17
convert.go
17
convert.go
@@ -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]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
5
go.mod
@@ -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
2
go.sum
@@ -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
254
lang.go
@@ -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
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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")
|
} else {
|
||||||
if want != "eapoluch" {
|
fmt.Printf("Testing Translate{\"Alinichel\"}.Kor2Eng(): got %q, want: %q.\n", want.Kor2Eng(), "Emergency")
|
||||||
t.Errorf("Testing Eng2Korvax(\"emergency\"): got %q, want: %q.\n", want, "eapoluch")
|
}
|
||||||
} else {
|
fmt.Printf("\nTesting complete.\nStatus: ")
|
||||||
fmt.Printf("Testing Eng2Korvax(\"emergency\"): got %q, want: %q.\n", want, "eapoluch")
|
|
||||||
}
|
|
||||||
|
|
||||||
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: ")
|
|
||||||
}
|
}
|
||||||
|
|||||||
411
resources.go
411
resources.go
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user