#region using
using System.Collections.Generic;
using Irony.Compiler;
using ScriptNET.Runtime;
#endregion
namespace ScriptNET.Ast
{
///
///
///
internal class ScriptFuncParameters : ScriptExpr
{
internal readonly List Identifiers = new List();
public ScriptFuncParameters(AstNodeArgs args)
: base(args)
{
if (ChildNodes.Count == 1)
{
for (int index = 0; index < ChildNodes[0].ChildNodes.Count; index++)
{
AstNode astNode = ChildNodes[0].ChildNodes[index];
Identifiers.Add((astNode as Token).Text);
}
}
//if (ChildNodes[0] is Token)
//{
// Identifiers.Add((ChildNodes[0] as Token).Text);
//}
//else
//{
// for (int index = 0; index < ChildNodes[0].ChildNodes.Count; index++)
// {
// AstNode astNode = ChildNodes[0].ChildNodes[index];
// Identifiers.Add((astNode as Token).Text);
// }
//}
}
public override void Evaluate(IScriptContext context)
{
if (context.Result == null) return;
object[] paramVals = (object[])context.Result;
for (int index=0; index < paramVals.Length; index++)
if (index < Identifiers.Count)
{
context.SetItem(Identifiers[index], paramVals[index]);
}
context.Result = RuntimeHost.NullValue;
}
}
}