|
17 | 17 | // |
18 | 18 | package main |
19 | 19 |
|
20 | | -import ( |
21 | | - "github.com/spatialcurrent/go-dfl/dfl" |
22 | | -) |
23 | | - |
24 | 20 | import ( |
25 | 21 | "github.com/gopherjs/gopherjs/js" |
26 | | - "honnef.co/go/js/console" |
| 22 | + "github.com/spatialcurrent/go-dfl/dfl" |
| 23 | + "github.com/spatialcurrent/go-dfl/dfljs" |
27 | 24 | ) |
28 | 25 |
|
29 | | -var GO_DFL_DEFAULT_QUOTES = []string{"\"", "'", "`"} |
30 | | - |
31 | | -type Node struct { |
32 | | - Node dfl.Node |
33 | | - FunctionMap dfl.FunctionMap |
34 | | -} |
35 | | - |
36 | | -func (n Node) Pretty() string { |
37 | | - return n.Node.Dfl(GO_DFL_DEFAULT_QUOTES[1:], true, 0) |
38 | | -} |
39 | | - |
40 | | -func (n Node) Compile() *js.Object { |
41 | | - return js.MakeWrapper(Node{ |
42 | | - Node: n.Node.Compile(), |
43 | | - FunctionMap: dfl.NewFuntionMapWithDefaults(), |
44 | | - }) |
45 | | -} |
46 | | - |
47 | | -func (n Node) Evaluate(options *js.Object) interface{} { |
48 | | - |
49 | | - ctx := map[string]interface{}{} |
50 | | - for _, key := range js.Keys(options) { |
51 | | - ctx[key] = options.Get(key).Interface() |
52 | | - } |
53 | | - |
54 | | - result, err := n.Node.Evaluate(ctx, n.FunctionMap, GO_DFL_DEFAULT_QUOTES[1:]) |
55 | | - if err != nil { |
56 | | - console.Error(err.Error()) |
57 | | - return false |
58 | | - } |
59 | | - return result |
60 | | -} |
61 | | - |
62 | 26 | func main() { |
63 | 27 | js.Global.Set("dfl", map[string]interface{}{ |
64 | 28 | "version": dfl.VERSION, |
65 | | - "Parse": Parse, |
66 | | - "EvaluateBool": EvaluateBool, |
67 | | - "EvaluateInt": EvaluateInt, |
68 | | - "EvaluateFloat": EvaluateFloat64, |
69 | | - "EvaluateString": EvaluateString, |
| 29 | + "Parse": dfljs.Parse, |
| 30 | + "EvaluateBool": dfljs.EvaluateBool, |
| 31 | + "EvaluateInt": dfljs.EvaluateInt, |
| 32 | + "EvaluateFloat": dfljs.EvaluateFloat64, |
| 33 | + "EvaluateString": dfljs.EvaluateString, |
70 | 34 | }) |
71 | 35 | } |
72 | | - |
73 | | -func Parse(s string) *js.Object { |
74 | | - root, err := dfl.Parse(s) |
75 | | - if err != nil { |
76 | | - console.Log(err.Error()) |
77 | | - return js.MakeWrapper(Node{Node: nil}) |
78 | | - } |
79 | | - return js.MakeWrapper(Node{Node: root}) |
80 | | -} |
81 | | - |
82 | | -func EvaluateBool(s string, options *js.Object) bool { |
83 | | - root, err := dfl.Parse(s) |
84 | | - if err != nil { |
85 | | - console.Log(err.Error()) |
86 | | - return false |
87 | | - } |
88 | | - |
89 | | - root = root.Compile() |
90 | | - |
91 | | - ctx := map[string]interface{}{} |
92 | | - for _, key := range js.Keys(options) { |
93 | | - ctx[key] = options.Get(key).Interface() |
94 | | - } |
95 | | - |
96 | | - result, err := dfl.EvaluateBool(root, ctx, dfl.NewFuntionMapWithDefaults(), GO_DFL_DEFAULT_QUOTES[1:]) |
97 | | - if err != nil { |
98 | | - console.Error(err.Error()) |
99 | | - return false |
100 | | - } |
101 | | - |
102 | | - return result |
103 | | -} |
104 | | - |
105 | | -func EvaluateInt(s string, options *js.Object) int { |
106 | | - root, err := dfl.Parse(s) |
107 | | - if err != nil { |
108 | | - console.Error(err.Error()) |
109 | | - return 0 |
110 | | - } |
111 | | - |
112 | | - root = root.Compile() |
113 | | - |
114 | | - ctx := map[string]interface{}{} |
115 | | - for _, key := range js.Keys(options) { |
116 | | - ctx[key] = options.Get(key).Interface() |
117 | | - } |
118 | | - |
119 | | - result, err := dfl.EvaluateInt(root, ctx, dfl.NewFuntionMapWithDefaults(), GO_DFL_DEFAULT_QUOTES[1:]) |
120 | | - if err != nil { |
121 | | - console.Error(err.Error()) |
122 | | - return 0 |
123 | | - } |
124 | | - |
125 | | - return result |
126 | | -} |
127 | | - |
128 | | -func EvaluateFloat64(s string, options *js.Object) float64 { |
129 | | - root, err := dfl.Parse(s) |
130 | | - if err != nil { |
131 | | - console.Error(err.Error()) |
132 | | - return 0.0 |
133 | | - } |
134 | | - |
135 | | - root = root.Compile() |
136 | | - |
137 | | - ctx := map[string]interface{}{} |
138 | | - for _, key := range js.Keys(options) { |
139 | | - ctx[key] = options.Get(key).Interface() |
140 | | - } |
141 | | - |
142 | | - result, err := dfl.EvaluateFloat64(root, ctx, dfl.NewFuntionMapWithDefaults(), GO_DFL_DEFAULT_QUOTES[1:]) |
143 | | - if err != nil { |
144 | | - console.Error(err.Error()) |
145 | | - return 0.0 |
146 | | - } |
147 | | - |
148 | | - return result |
149 | | -} |
150 | | - |
151 | | -func EvaluateString(s string, options *js.Object) string { |
152 | | - root, err := dfl.Parse(s) |
153 | | - if err != nil { |
154 | | - console.Error(err.Error()) |
155 | | - return "" |
156 | | - } |
157 | | - |
158 | | - root = root.Compile() |
159 | | - |
160 | | - ctx := map[string]interface{}{} |
161 | | - for _, key := range js.Keys(options) { |
162 | | - ctx[key] = options.Get(key).Interface() |
163 | | - } |
164 | | - |
165 | | - result, err := dfl.EvaluateString(root, ctx, dfl.NewFuntionMapWithDefaults(), GO_DFL_DEFAULT_QUOTES[1:]) |
166 | | - if err != nil { |
167 | | - console.Error(err.Error()) |
168 | | - return "" |
169 | | - } |
170 | | - |
171 | | - return result |
172 | | -} |
0 commit comments