public override void Execute(RenderingContext context) { if (this.key is CompositeRenderingKey) { var composite = (CompositeRenderingKey)this.key; if (composite.Operator == KeyOperator.Assignment) { var varName = composite.leftSide.ToString(); var val = composite.rightSide.Evaluate(context); context.Set(varName, val); } else { throw new Exception("Expected assignment operator for set node"); } } else if (this.key is CompositeRenderingKey) { var varName = key.ToString(); context.Set(varName, true); } else { } }
public override void Execute(RenderingContext context) { if (inner == null) { throw new Exception("Missing inner branch in Each node"); } var obj = context.EvaluateObject(key); if (obj == null) { return; } var objType = obj.GetType(); if (objType == typeof(int) || objType == typeof(uint) || objType == typeof(long) || objType == typeof(ulong) || objType == typeof(short) || objType == typeof(ushort)) { var n = Convert.ToInt32(obj); obj = Enumerable.Range(1, n).ToArray(); } var list = obj as IEnumerable; if (list != null) { context.operation = RenderingOperation.None; int index = 0; int last = list.Count() - 1; foreach (var item in list) { context.Set("index", index); context.Set("first", index == 0); context.Set("last", index == last); context.DataStack.Add(item); inner.Execute(context); context.DataStack.RemoveAt(context.DataStack.Count - 1); if (context.operation == RenderingOperation.Break) { context.operation = RenderingOperation.None; break; } index++; } } else { context.DataStack.Add(obj); context.Set("index", 0); context.Set("first", true); context.Set("last", true); inner.Execute(context); context.DataStack.RemoveAt(context.DataStack.Count - 1); } }
public override void Execute(RenderingContext context) { if (inner == null) { throw new Exception("Missing inner branch in Each node"); } var obj = context.EvaluateObject(key); if (obj == null) { return; } var list = obj as IEnumerable; if (list != null) { context.operation = RenderingOperation.None; int index = 0; int last = list.Count() - 1; foreach (var item in list) { context.Set("index", index); context.Set("first", index == 0); context.Set("last", index == last); context.DataStack.Add(item); inner.Execute(context); context.DataStack.RemoveAt(context.DataStack.Count - 1); if (context.operation == RenderingOperation.Break) { context.operation = RenderingOperation.None; break; } index++; } } else { context.DataStack.Add(obj); context.Set("index", 0); context.Set("first", true); context.Set("last", true); inner.Execute(context); context.DataStack.RemoveAt(context.DataStack.Count - 1); } }