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);
            }
Example #2
0
 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);
 }