math_eval.gno

0.60 Kb ยท 30 lines
 1// eval realm is capable of evaluating 32-bit integer
 2// expressions as they would appear in Go. For example:
 3// /r/demo/math_eval:(4+12)/2-1+11*15
 4package eval
 5
 6import (
 7	evalint32 "gno.land/p/demo/math_eval/int32"
 8	"gno.land/p/demo/ufmt"
 9)
10
11func Render(p string) string {
12	if len(p) == 0 {
13		return `
14evaluates 32-bit integer expressions. for example:
15		
16[(4+12)/2-1+11*15](/r/demo/math_eval:(4+12)/2-1+11*15)
17
18`
19	}
20	expr, err := evalint32.Parse(p)
21	if err != nil {
22		return err.Error()
23	}
24	res, err := evalint32.Eval(expr, nil)
25	if err != nil {
26		return err.Error()
27	}
28
29	return ufmt.Sprintf("%s = %d", p, res)
30}