#region using
using System.Collections.Generic;
using Irony.Compiler;
using ScriptNET.Runtime;
#endregion
namespace ScriptNET.Ast
{
///
///
///
internal class ScriptSwitchStatement : ScriptStatement
{
private List cases;
private ScriptSwitchDefaultStatement defaultCase;
public ScriptSwitchStatement(AstNodeArgs args)
: base(args)
{
cases = new List();
foreach (ScriptSwitchCaseStatement caseStatement in ChildNodes[0].ChildNodes)
{
cases.Add(caseStatement);
}
if (ChildNodes.Count == 2)
defaultCase = ChildNodes[1] as ScriptSwitchDefaultStatement;
}
public override void Evaluate(IScriptContext context)
{
foreach (ScriptSwitchCaseStatement caseStatement in cases)
{
caseStatement.Evaluate(context);
if (context.IsBreak() || context.IsReturn())
{
context.SetBreak(false);
return;
}
}
if (defaultCase != null)
defaultCase.Evaluate(context);
}
}
}