public override ScriptVariable Invoke(ScriptExecutionEnvironment env, IList <ScriptVariable> args) { env.Variables.EnterScope(); try { int index = 0; foreach (var p in this.Parameters) { if (this.IsParams && index == this.Parameters.Count - 1) { List <ScriptVariable> @params = new List <ScriptVariable>(); for (; index < args.Count; index++) { @params.Add(args[index]); } env.Variables.Declare(p.Identifier, new ListVariable(@params), VariableStorage.FieldProperty.Default); break; } else if (index < args.Count) { env.Variables.Declare(p.Identifier, args[index], VariableStorage.FieldProperty.Default); } else { env.Variables.Declare(p.Identifier, null, VariableStorage.FieldProperty.Default); } index++; } ScriptVariable ret; this.Body.Execute(env, out ret); return(ret); } finally { env.Variables.ExitScope(); } }
public override ScriptVariable Invoke(ScriptExecutionEnvironment env, IList <ScriptVariable> args) { env.Console.Warn("Meaningless Function Call for " + this.GetType().Name); return(this); }
public override ScriptVariable Invoke(ScriptExecutionEnvironment env, IList <ScriptVariable> args) { return(env.Console.CallFunction(_name, args)); }
public abstract ScriptVariable Invoke(ScriptExecutionEnvironment env, IList <ScriptVariable> args);