layer parsing
This commit is contained in:
parent
914e2cb667
commit
abbf16b4bd
47
layerconfig/layerconfig.go
Normal file
47
layerconfig/layerconfig.go
Normal file
@ -0,0 +1,47 @@
|
||||
package layerconfig
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
)
|
||||
|
||||
type LayerContainer struct {
|
||||
Layers []Layer `json:"layers"`
|
||||
}
|
||||
|
||||
type Layer struct {
|
||||
Id int `json:"id"`
|
||||
Name string `json:"name"`
|
||||
To int `json:"to"`
|
||||
From int `json:"from"`
|
||||
}
|
||||
|
||||
var DefaultLayers []Layer
|
||||
|
||||
func init(){
|
||||
DefaultLayers = []Layer{
|
||||
Layer{
|
||||
Id: 0,
|
||||
Name: "Base",
|
||||
From: -16,
|
||||
To: 160,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func ParseFile(filename string) ([]Layer, error) {
|
||||
|
||||
data, err := ioutil.ReadFile(filename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
lc := LayerContainer{}
|
||||
|
||||
err = json.Unmarshal(data, &lc)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return lc.Layers, nil
|
||||
}
|
26
layerconfig/layerconfig_test.go
Normal file
26
layerconfig/layerconfig_test.go
Normal file
@ -0,0 +1,26 @@
|
||||
package layerconfig
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestReadJson(t *testing.T){
|
||||
layers, err := ParseFile("./testdata/layers.json")
|
||||
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if layers == nil {
|
||||
t.Fatal("no data")
|
||||
}
|
||||
|
||||
if len(layers) != 1 {
|
||||
t.Fatal("length mismatch")
|
||||
}
|
||||
|
||||
if layers[0].Name != "Base" {
|
||||
t.Fatal("name mismatch")
|
||||
}
|
||||
|
||||
}
|
8
layerconfig/testdata/layers.json
vendored
Normal file
8
layerconfig/testdata/layers.json
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"layers": [{
|
||||
"id": 0,
|
||||
"name": "Base",
|
||||
"from": -16,
|
||||
"to": 160
|
||||
}]
|
||||
}
|
Loading…
Reference in New Issue
Block a user