public virtual dynamic Apply(JavaScriptEvaluator e, dynamic self, params dynamic[] args) { var originalContext = e.env; var originalReturningState = e.isReturning; dynamic result = null; try { e.env = capture.AddBinding("this", self); e.isReturning = false; int i = 0; foreach (var p in parms.Nodes) { e.AddBinding(p.Text, args[i++]); } e.Eval(body); result = e.result; } finally { e.result = null; e.env = originalContext; e.isReturning = originalReturningState; } return(result); }
public Expression AddBinding(string name, Expression exp) { env = env.AddBinding(name, exp); return(exp); }
public dynamic AddBinding(string name, dynamic x) { env = env.AddBinding(name, x); return(x); }