annotate vendor/github.com/eknkc/amber/runtime.go @ 66:787b5ee0289d draft

Use vendored modules Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Sun, 23 Jul 2023 13:18:53 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
1 package amber
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
2
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
3 import (
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
4 "encoding/json"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
5 "fmt"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
6 "html/template"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
7 "reflect"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
8 )
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
9
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
10 var FuncMap = template.FuncMap{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
11 "__amber_add": runtime_add,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
12 "__amber_sub": runtime_sub,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
13 "__amber_mul": runtime_mul,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
14 "__amber_quo": runtime_quo,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
15 "__amber_rem": runtime_rem,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
16 "__amber_minus": runtime_minus,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
17 "__amber_plus": runtime_plus,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
18 "__amber_eql": runtime_eql,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
19 "__amber_gtr": runtime_gtr,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
20 "__amber_lss": runtime_lss,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
21
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
22 "json": runtime_json,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
23 "unescaped": runtime_unescaped,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
24 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
25
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
26 func runtime_add(x, y interface{}) interface{} {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
27 vx, vy := reflect.ValueOf(x), reflect.ValueOf(y)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
28 switch vx.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
29 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
30 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
31 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
32 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
33 return vx.Int() + vy.Int()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
34 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
35 return float64(vx.Int()) + vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
36 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
37 return fmt.Sprintf("%d%s", vx.Int(), vy.String())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
38 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
39 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
40 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
41 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
42 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
43 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
44 return vx.Float() + float64(vy.Int())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
45 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
46 return vx.Float() + vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
47 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
48 return fmt.Sprintf("%f%s", vx.Float(), vy.String())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
49 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
50 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
51 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
52 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
53 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
54 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
55 return fmt.Sprintf("%s%d", vx.String(), vy.Int())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
56 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
57 return fmt.Sprintf("%s%f", vx.String(), vy.Float())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
58 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
59 return fmt.Sprintf("%s%s", vx.String(), vy.String())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
60 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
61 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
62 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
63
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
64 return "<nil>"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
65 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
66
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
67 func runtime_sub(x, y interface{}) interface{} {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
68 vx, vy := reflect.ValueOf(x), reflect.ValueOf(y)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
69 switch vx.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
70 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
71 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
72 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
73 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
74 return vx.Int() - vy.Int()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
75 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
76 return float64(vx.Int()) - vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
77 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
78 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
79 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
80 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
81 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
82 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
83 return vx.Float() - float64(vy.Int())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
84 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
85 return vx.Float() - vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
86 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
87 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
88 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
89
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
90 return "<nil>"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
91 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
92
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
93 func runtime_mul(x, y interface{}) interface{} {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
94 vx, vy := reflect.ValueOf(x), reflect.ValueOf(y)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
95 switch vx.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
96 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
97 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
98 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
99 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
100 return vx.Int() * vy.Int()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
101 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
102 return float64(vx.Int()) * vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
103 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
104 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
105 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
106 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
107 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
108 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
109 return vx.Float() * float64(vy.Int())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
110 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
111 return vx.Float() * vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
112 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
113 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
114 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
115
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
116 return "<nil>"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
117 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
118
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
119 func runtime_quo(x, y interface{}) interface{} {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
120 vx, vy := reflect.ValueOf(x), reflect.ValueOf(y)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
121 switch vx.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
122 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
123 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
124 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
125 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
126 return vx.Int() / vy.Int()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
127 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
128 return float64(vx.Int()) / vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
129 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
130 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
131 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
132 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
133 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
134 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
135 return vx.Float() / float64(vy.Int())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
136 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
137 return vx.Float() / vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
138 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
139 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
140 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
141
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
142 return "<nil>"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
143 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
144
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
145 func runtime_rem(x, y interface{}) interface{} {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
146 vx, vy := reflect.ValueOf(x), reflect.ValueOf(y)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
147 switch vx.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
148 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
149 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
150 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
151 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
152 return vx.Int() % vy.Int()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
153 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
154 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
155 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
156
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
157 return "<nil>"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
158 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
159
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
160 func runtime_minus(x interface{}) interface{} {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
161 vx := reflect.ValueOf(x)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
162 switch vx.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
163 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
164 return -vx.Int()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
165 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
166 return -vx.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
167 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
168
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
169 return "<nil>"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
170 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
171
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
172 func runtime_plus(x interface{}) interface{} {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
173 vx := reflect.ValueOf(x)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
174 switch vx.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
175 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
176 return +vx.Int()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
177 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
178 return +vx.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
179 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
180
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
181 return "<nil>"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
182 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
183
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
184 func runtime_eql(x, y interface{}) bool {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
185 vx, vy := reflect.ValueOf(x), reflect.ValueOf(y)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
186 switch vx.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
187 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
188 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
189 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
190 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
191 return vx.Int() == vy.Int()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
192 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
193 return float64(vx.Int()) == vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
194 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
195 return fmt.Sprintf("%d", vx.Int()) == vy.String()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
196 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
197 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
198 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
199 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
200 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
201 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
202 return vx.Float() == float64(vy.Int())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
203 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
204 return vx.Float() == vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
205 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
206 return fmt.Sprintf("%f", vx.Float()) == vy.String()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
207 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
208 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
209 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
210 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
211 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
212 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
213 return vx.String() == fmt.Sprintf("%d", vy.Int())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
214 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
215 return vx.String() == fmt.Sprintf("%f", vy.Float())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
216 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
217 return vx.String() == fmt.Sprintf("%s", vy.String())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
218 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
219 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
220 case reflect.Bool:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
221 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
222 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
223 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
224 return vx.Bool() && vy.Int() != 0
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
225 case reflect.Bool:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
226 return vx.Bool() == vy.Bool()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
227 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
228 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
229 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
230
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
231 return false
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
232 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
233
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
234 func runtime_lss(x, y interface{}) bool {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
235 vx, vy := reflect.ValueOf(x), reflect.ValueOf(y)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
236 switch vx.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
237 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
238 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
239 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
240 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
241 return vx.Int() < vy.Int()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
242 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
243 return float64(vx.Int()) < vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
244 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
245 return fmt.Sprintf("%d", vx.Int()) < vy.String()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
246 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
247 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
248 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
249 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
250 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
251 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
252 return vx.Float() < float64(vy.Int())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
253 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
254 return vx.Float() < vy.Float()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
255 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
256 return fmt.Sprintf("%f", vx.Float()) < vy.String()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
257 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
258 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
259 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
260 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
261 switch vy.Kind() {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
262 case reflect.Int, reflect.Int32, reflect.Int64, reflect.Int16, reflect.Int8:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
263 return vx.String() < fmt.Sprintf("%d", vy.Int())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
264 case reflect.Float32, reflect.Float64:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
265 return vx.String() < fmt.Sprintf("%f", vy.Float())
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
266 case reflect.String:
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
267 return vx.String() < vy.String()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
268 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
269 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
270 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
271
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
272 return false
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
273 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
274
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
275 func runtime_gtr(x, y interface{}) bool {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
276 return !runtime_lss(x, y) && !runtime_eql(x, y)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
277 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
278
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
279 func runtime_json(x interface{}) (res string, err error) {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
280 bres, err := json.Marshal(x)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
281 res = string(bres)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
282 return
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
283 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
284
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
285 func runtime_unescaped(x string) interface{} {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
286 return template.HTML(x)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
287 }