Exemple #1
0
 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
     {
     }
 }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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);
            }
        }