public virtual dynamic Apply(RubyEvaluator 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 static void Test(string s, dynamic expected = null) { try { if (expected != null) { Console.WriteLine("Testing: {0}", s); Console.WriteLine("Expecting {0}", expected); dynamic result = RubyEvaluator.RunScript(s); Console.WriteLine("Result {0}", result); if (result != expected) { Console.WriteLine("ERROR!"); } } else { Console.WriteLine("Testing: {0}", s); RubyEvaluator.RunScript(s); } } catch (Exception e) { Console.WriteLine("Error occured: " + e.Message); } }
public object ExecuteText(string text) { //Parser parser = new Parser(text); //object result = null; //for (var command = parser.ParseCommand(); command != null; command = parser.ParseCommand()) // result = command.Evaluate(this.rootcontext); //return result; return(RubyEvaluator.RunScript(text)); }
public override dynamic Apply(RubyEvaluator e, dynamic self, params dynamic[] args) { return(func(self, args)); }