github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/examples/gno.land/r/demo/math_eval/math_eval.gno (about)

     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
     4  package eval
     5  
     6  import (
     7  	evalint32 "gno.land/p/demo/math_eval/int32"
     8  	"gno.land/p/demo/ufmt"
     9  )
    10  
    11  func Render(p string) string {
    12  	if len(p) == 0 {
    13  		return `
    14  evaluates 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  }