@@ -65,53 +65,36 @@ Also, I have an embeddable code editor written in JavaScript which allows editin
65
65
66
66
## Examples
67
67
68
- [ demo.go ] ( ./docs/examples/demo.go )
68
+ [ Play Online ] ( https://play.golang.org/p/z7T8ytJ1T1d )
69
69
70
70
``` go
71
71
package main
72
72
73
73
import (
74
74
" fmt"
75
- " time"
76
-
77
75
" github.com/antonmedv/expr"
78
76
)
79
77
80
- var expressions = []string {
81
- " foo > 0" ,
82
- " bar.Value in ['a', 'b', 'c']" ,
83
- " name matches '^hello.+$'" ,
84
- " now().Sub(startedAt).String()" ,
85
- " all(tweets, {len(.Message) <= 280}) ? '👍' : '👎'" ,
86
- }
78
+ func main () {
79
+ env := map [string ]interface {}{
80
+ " greet" : " Hello, %v !" ,
81
+ " names" : []string {" world" , " you" },
82
+ " sprintf" : fmt.Sprintf ,
83
+ }
87
84
88
- var environment = map [string ]interface {}{
89
- " foo" : 1 ,
90
- " bar" : struct { Value string }{" c" },
91
- " name" : " hello world" ,
92
- " startedAt" : time.Now (),
93
- " now" : func () time.Time { return time.Now () },
94
- " tweets" : []tweet{{" first tweet" }},
95
- }
85
+ code := ` sprintf(greet, names[0])`
96
86
97
- type tweet struct {
98
- Message string
99
- }
87
+ program , err := expr.Compile (code, expr.Env (env))
88
+ if err != nil {
89
+ panic (err)
90
+ }
100
91
101
- func main () {
102
- for _ , input := range expressions {
103
- program , err := expr.Compile (input, expr.Env (environment))
104
- if err != nil {
105
- panic (err)
106
- }
107
-
108
- output , err := expr.Run (program, environment)
109
- if err != nil {
110
- panic (err)
111
- }
112
-
113
- fmt.Println (output)
92
+ output , err := expr.Run (program, env)
93
+ if err != nil {
94
+ panic (err)
114
95
}
96
+
97
+ fmt.Println (output)
115
98
}
116
99
```
117
100
0 commit comments