Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f291891139 | ||
|
|
230cefb85d | ||
|
|
84df8142c6 | ||
|
|
38e45c4f60 | ||
|
|
221f4e59e1 | ||
|
|
8ccafd5c0c | ||
|
|
59fcf3e2f0 | ||
|
|
59cc61105a | ||
|
|
ea438a7f40 | ||
|
|
1cb2bac407 |
BIN
NewLennon.png
Normal file
BIN
NewLennon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 228 KiB |
131
README.md
Normal file
131
README.md
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
# NMSlib
|
||||||
|
|
||||||
|
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.
|
||||||
|
- Gek, Vykeen, etc will be added in the future
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
To install this module use `go get`
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go get -u gitlab.com/bradley.richins/nmslib
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```golang
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"gitlab.com/bradley.richins/nmslib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
portalcode := "006afa556c30"
|
||||||
|
tstvar, err := nmslib.P2gc(portalcode)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
fmt.Printf("Input:\t%s\nExpecting:\t042F:0079:0D55:006A\nHave:\t%s\n", portalcode, tstvar)
|
||||||
|
|
||||||
|
nmslib.CreateBanner(portalcode, "NewLennon.png", 0)
|
||||||
|
|
||||||
|
fmt.Println(nmslib.Korvax2Eng("eapoluch"))
|
||||||
|
fmt.Println(nmslib.Eng2Korvax("emergency"))
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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
|
||||||
|
|
||||||
|
* 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
|
||||||
|
|
||||||
|
* galacticaddress: 16 char 4 block hex address
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```golang
|
||||||
|
pc, _ := nmslib.P3gc("042F:0079:0D55:006A")
|
||||||
|
fmt.Println(pc)
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
``006AFA556C30``
|
||||||
|
|
||||||
|
### Translate Korvax to English with Korvax2Eng()
|
||||||
|
|
||||||
|
This function takes only 1 parameter and returns a string
|
||||||
|
|
||||||
|
* korvaxword: Any known Korvaxen word (ex. eapoluch)
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```golang
|
||||||
|
fmt.Println(Korvax2Eng("eapoluch"))
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
``emergency``
|
||||||
|
|
||||||
|
### Translate English to Korvax with Eng2Korvax()
|
||||||
|
|
||||||
|
This function takes only 1 parameter and returns a string
|
||||||
|
|
||||||
|
* engword: English word to attempt conversion
|
||||||
|
|
||||||
|
**Example:**
|
||||||
|
|
||||||
|
```golang
|
||||||
|
fmt.Println(Eng2Korvax("emergency"))
|
||||||
|
```
|
||||||
|
|
||||||
|
Output:
|
||||||
|
|
||||||
|
``eapoluch``
|
||||||
|
|
||||||
|
## License
|
||||||
|
[MIT](COPYING)
|
||||||
@@ -24,6 +24,14 @@ 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
|
||||||
|
|
||||||
|
// 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 +43,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,24 +51,25 @@ 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 {
|
if vopt == 1 {
|
||||||
// Merge images horizontally
|
// Merge images horizontally
|
||||||
@@ -83,9 +92,4 @@ func CreateBanner(portalhex string, savename string, vopt int) {
|
|||||||
file, err := os.Create(savename)
|
file, err := os.Create(savename)
|
||||||
err = png.Encode(file, rgba)
|
err = png.Encode(file, rgba)
|
||||||
}
|
}
|
||||||
// remove glyphs folder to keep it clean
|
|
||||||
errDir := os.RemoveAll("tmp.nmslib/glyphs")
|
|
||||||
if errDir != nil {
|
|
||||||
panic(errDir)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
120
lang.go
120
lang.go
@@ -8,73 +8,53 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
// KorvaxWord - set up structure of a word iteration
|
||||||
Korvaxlang - set up structure of a word iteration
|
type korvaxWord struct {
|
||||||
*/
|
english string
|
||||||
type Korvaxlang struct {
|
korvax string
|
||||||
English string
|
kwcaps string
|
||||||
KorvaxWord string
|
kwallcaps string
|
||||||
KWCaps string
|
|
||||||
KWALLCAPS string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Korvax2Eng - convert known korvax words into english
|
Korvax2Eng - Translate a Korvax word to English
|
||||||
*/
|
*/
|
||||||
func Korvax2Eng(kvwrd string) string {
|
func Korvax2Eng(kvwrd string) string {
|
||||||
data, err := Asset("tmp.nmslib/korvax-lang.csv")
|
tempdir, err := ioutil.TempDir("", "nmslib-")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
_, err2 := os.Stat("tmp.nmslib/")
|
defer os.RemoveAll(tempdir)
|
||||||
if os.IsNotExist(err2) {
|
|
||||||
errDir := os.MkdirAll("tmp.nmslib/", 0755)
|
data, err := Asset("korvax-lang.csv")
|
||||||
if errDir != nil {
|
if err != nil {
|
||||||
panic(errDir)
|
panic(err)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
err = ioutil.WriteFile("tmp.nmslib/korvax-lang.csv", []byte(data), 0644)
|
err = ioutil.WriteFile(tempdir+"/korvax-lang.csv", []byte(data), 0644)
|
||||||
csvFile, err := os.Open("tmp.nmslib/korvax-lang.csv")
|
csvFile, err := os.Open(tempdir + "/korvax-lang.csv")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
defer csvFile.Close()
|
defer csvFile.Close()
|
||||||
CsvLines, err := csv.NewReader(csvFile).ReadAll()
|
csvlines, err := csv.NewReader(csvFile).ReadAll()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
for _, line := range CsvLines {
|
for _, line := range csvlines {
|
||||||
klang := Korvaxlang{
|
klang := korvaxWord{
|
||||||
English: line[0],
|
english: line[0],
|
||||||
KorvaxWord: line[1],
|
korvax: line[1],
|
||||||
KWCaps: line[2],
|
kwcaps: line[2],
|
||||||
KWALLCAPS: line[3],
|
kwallcaps: line[3],
|
||||||
}
|
}
|
||||||
if kvwrd == klang.KorvaxWord {
|
if kvwrd == klang.korvax {
|
||||||
errDir := os.RemoveAll("tmp.nmslib")
|
return klang.english
|
||||||
if errDir != nil {
|
} else if kvwrd == klang.korvax {
|
||||||
panic(errDir)
|
return strings.Title(strings.ToLower(klang.english))
|
||||||
}
|
} else if kvwrd == klang.kwallcaps {
|
||||||
return klang.English
|
return strings.ToUpper(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
|
return "*\\Kzzzzzzt\\*" // word not found default
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,46 +62,36 @@ func Korvax2Eng(kvwrd string) string {
|
|||||||
Eng2Korvax - Convert (some) english words to Korvax
|
Eng2Korvax - Convert (some) english words to Korvax
|
||||||
*/
|
*/
|
||||||
func Eng2Korvax(enwrd string) string {
|
func Eng2Korvax(enwrd string) string {
|
||||||
data, err := Asset("tmp.nmslib/korvax-lang.csv")
|
tempdir, err := ioutil.TempDir("", "nmslib")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
_, err2 := os.Stat("tmp.nmslib/")
|
defer os.RemoveAll(tempdir)
|
||||||
if os.IsNotExist(err2) {
|
|
||||||
errDir := os.MkdirAll("tmp.nmslib/", 0755)
|
data, err := Asset("korvax-lang.csv")
|
||||||
if errDir != nil {
|
if err != nil {
|
||||||
panic(errDir)
|
panic(err)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
err = ioutil.WriteFile("tmp.nmslib/korvax-lang.csv", []byte(data), 0644)
|
err = ioutil.WriteFile(tempdir+"/korvax-lang.csv", []byte(data), 0644)
|
||||||
csvFile, err := os.Open("tmp.nmslib/korvax-lang.csv")
|
csvFile, err := os.Open(tempdir + "/korvax-lang.csv")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
defer csvFile.Close()
|
defer csvFile.Close()
|
||||||
CsvLines, err := csv.NewReader(csvFile).ReadAll()
|
csvlines, err := csv.NewReader(csvFile).ReadAll()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
for _, line := range CsvLines {
|
for _, line := range csvlines {
|
||||||
klang := Korvaxlang{
|
klang := korvaxWord{
|
||||||
English: line[0],
|
english: line[0],
|
||||||
KorvaxWord: line[1],
|
korvax: line[1],
|
||||||
KWCaps: line[2],
|
kwcaps: line[2],
|
||||||
KWALLCAPS: line[3],
|
kwallcaps: line[3],
|
||||||
}
|
}
|
||||||
if enwrd == klang.English {
|
if enwrd == klang.english {
|
||||||
errDir := os.RemoveAll("tmp.nmslib")
|
return klang.korvax
|
||||||
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
|
return "*\\Kzzzzzzt\\*" // word not found default
|
||||||
}
|
}
|
||||||
|
|||||||
344
resources.go
344
resources.go
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user