func init // initialize instance if(linked("Result") and sys.is_linked(1)) sys.add_var(this.name, 'dynamic') if(not isdef("Default")) blk_init.println(this.codename, ' = ', this.props("Default").value, ';') end end end func make_parse(data) s = this.props("MathStr").value r = '' if(len(s)) for(n = this.numdatas; n >= 0; n--) pname = this.pt_data(n).name expr = '\\{' + n + '(:|)(\\w+|)\\}' arr = regex_search(s, expr) if(arr.size()) for(i = 0; i < arr.size(); i+=3) s = regex_replace(s, expr, sys.to_type(d(pname), sys.type_code(arr.get(i+2)))) end end end r += code(s) end return('(' + code(replace(r, "\\r\\n", "")) + ')') end func doCalc(data) if(linked("Result")) blk.println(this.codename, ' = ', make_parse(data), ';') event("onResult", this.codename) else event("onResult", make_parse(data)) end end func doDefault(default) blk.println(this.codename, ' = ', d("Default"), ';') end func Result if(sys.is_linked(1)) return(this.codename) else return(make_parse()) end end