-
Notifications
You must be signed in to change notification settings - Fork 6
/
templates
78 lines (65 loc) · 1.67 KB
/
templates
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package main
import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"os"
"strings"
"text/template"
"github.com/iancoleman/strcase"
)
type Ability struct {
Name string
Types []string
}
//FileStruct abilities dataset from json
type FileStruct struct {
Abilities []Ability
Actions []Ability
StaticConfigs []Ability
}
var fns = template.FuncMap{
"last": func(x int, a []string) bool {
fmt.Printf("x -%d len-%v\n", x, len(a))
return x == len(a)-1
},
"ToUpper": strings.ToUpper,
"ToLower": strings.ToLower,
"ToCamel": strcase.ToCamel,
}
func outputTemple(f io.Writer, ab *FileStruct, templateBaseName, templatefile string) {
t, err := template.New(templateBaseName).Funcs(fns).ParseFiles(templatefile)
if err != nil {
panic(err)
}
err = t.Execute(f, ab)
if err != nil {
panic(err)
}
}
func outputTemplate(outputfile string, ab *FileStruct, templateBaseName, templatefile string) {
filename := outputfile
if filename == "-" {
outputTemple(os.Stdout, ab, templateBaseName, templatefile)
}
f, err := os.Create(filename)
if err != nil {
panic(err)
}
defer f.Close()
fmt.Printf("\noutputfile file -%s\n", filename)
outputTemple(f, ab, templateBaseName, templatefile)
f.Sync()
}
func main() {
ab := &FileStruct{}
byteValue, err := ioutil.ReadFile("tools/cmd/templates/inputdata.json")
if err != nil {
panic(err)
}
json.Unmarshal(byteValue, &ab)
outputTemplate("Enumerators.cs", ab, "csharpabilities.parse", "tools/cmd/templates/csharpabilities.parse")
outputTemplate("enum.sol", ab, "soliditybilities.parse", "tools/cmd/templates/soliditybilities.parse")
outputTemplate("ability.go", ab, "goabilities.parse", "tools/cmd/templates/goabilities.parse")
}