コード例 #1
0
ファイル: Foreach.cs プロジェクト: azend/Poly
        public override object Evaluate(Data.jsObject Context)
        {
            if (Variable == null || List == null)
            {
                return(null);
            }

            var Array = GetValue(List, Context);

            if (Array == null)
            {
                return(null);
            }

            object Value = null;

            var String = Array as string;

            if (!string.IsNullOrEmpty(String))
            {
                Value = LoopString(Context, String);
            }
            else
            {
                Value = LoopObject(Context, Array as jsObject);
            }

            Variable.Assign(Context, null);

            return(Value);
        }
コード例 #2
0
ファイル: Do.cs プロジェクト: azend/Poly
        public override object Evaluate(Data.jsObject Context)
        {
            var List = this.ToList();

            do
            {
                for (int i = 0; i < List.Count; i++)
                {
                    var Obj    = List[i];
                    var Result = (Obj.Value as Node).Evaluate(Context);

                    if (Obj.Value is Return)
                    {
                        return(Result);
                    }

                    if (Result == Break)
                    {
                        return(null);
                    }

                    if (Result == Continue)
                    {
                        break;
                    }
                }
            }while (Bool.EvaluateNode(Boolean, Context));

            return(null);
        }
コード例 #3
0
        public override object Evaluate(Data.jsObject Context)
        {
            var L = GetLeft(Context);
            var R = GetRight(Context);

            if (L == null || R == null)
            {
                if (L != null)
                {
                    return(L);
                }
                if (R != null)
                {
                    return(R);
                }
                return(null);
            }

            var V = DataType.GreaterThan(L, R);

            if (V is bool && (bool)V)
            {
                return(true);
            }

            V = DataType.Equal(L, R);

            if (V is bool && (bool)V)
            {
                return(true);
            }

            return(false);
        }
コード例 #4
0
        public override object Evaluate(Data.jsObject Context)
        {
            if (Handler == null)
            {
                return(null);
            }

            return(Handler(Context));
        }
コード例 #5
0
        public override object Evaluate(Data.jsObject Context)
        {
            Variable Var;

            if ((Var = Left as Variable) != null)
            {
                return(Var.Assign(Context, GetRight(Context)));
            }
            return(null);
        }
コード例 #6
0
ファイル: Async.cs プロジェクト: azend/Poly
        public override object Evaluate(Data.jsObject Context)
        {
            var Thread = new Thread((C) => {
                GetValue(Node, C as Data.jsObject);
            });

            Thread.Start(Context);

            return(Thread);
        }
コード例 #7
0
ファイル: Try.cs プロジェクト: azend/Poly
 public override object Evaluate(Data.jsObject Context)
 {
     if (Node != null)
     {
         try {
             return(Node.Evaluate(Context));
         }
         catch (Exception Error) {
             return(Error);
         }
     }
     return(null);
 }
コード例 #8
0
ファイル: NotEqual.cs プロジェクト: azend/Poly
        public override object Evaluate(Data.jsObject Context)
        {
            var L = GetLeft(Context);
            var R = GetRight(Context);

            var V = DataType.Equal(L, R);

            if (V is bool)
            {
                return(!(bool)V);
            }
            return(false);
        }
コード例 #9
0
ファイル: Subtract.cs プロジェクト: azend/Poly
        public override object Evaluate(Data.jsObject Context)
        {
            var L = GetLeft(Context);
            var R = GetRight(Context);

            if (L == null || R == null)
            {
                if (L != null)
                {
                    return(L);
                }
                if (R != null)
                {
                    return(R);
                }
                return(null);
            }

            return(DataType.Subtract(L, R));
        }
コード例 #10
0
ファイル: Call.cs プロジェクト: azend/Poly
        public override object Evaluate(Data.jsObject Context)
        {
            object This = GetValue(Object, Context);

            if (Function != null)
            {
                return(Function.Call(Context, Arguments, This, Engine));
            }

            Function Func;

            if ((Func = Function.Get(Engine, Name, This, ref Cacheable)) == null)
            {
                var ObjectName = Object.ToString();

                if (Engine.Shorthands.ContainsKey(ObjectName))
                {
                    var T = Helper.SystemFunctions.SearchForType(Engine.Shorthands[ObjectName]);

                    if (T != null)
                    {
                        var Args  = Function.GetFunctionArguments(null, Context, Arguments);
                        var Types = Helper.MemberFunction.GetArgTypes(Args);

                        Func      = Helper.SystemFunctions.Get(T, Name, Types);
                        Cacheable = true;
                    }
                }
                else
                {
                    return(null);
                }
            }

            if (Cacheable)
            {
                Function = Func;
            }

            return(Func.Call(Context, Arguments, This, Engine));
        }
コード例 #11
0
ファイル: Switch.cs プロジェクト: azend/Poly
        public override object Evaluate(Data.jsObject Context)
        {
            var Options = this.ToArray();

            for (int i = 0; i < Options.Length; i++)
            {
                var Case = (Options[i].Value as Case);

                if (Case != null && Bool.EvaluateNode(Case.Object, Context))
                {
                    return(Case.Evaluate(Context));
                }
            }

            if (Default != null)
            {
                return(Default.Evaluate(Context));
            }

            return(null);
        }
コード例 #12
0
        public override object Evaluate(Data.jsObject Context)
        {
            Init.Evaluate(Context);
            var List = this.ToList();

            while (Bool.EvaluateNode(Boolean, Context))
            {
                for (int i = 0; i < List.Count; i++)
                {
                    var Node = (List[i].Value as Node);

                    if (Node == null)
                    {
                        continue;
                    }

                    var Result = Node.Evaluate(Context);

                    if (Node is Return)
                    {
                        return(Result);
                    }

                    if (Result == Break)
                    {
                        return(null);
                    }

                    if (Result == Continue)
                    {
                        break;
                    }
                }

                Modifier.Evaluate(Context);
            }

            return(null);
        }
コード例 #13
0
        public override object Evaluate(Data.jsObject Context)
        {
            var L = GetLeft(Context);
            var R = GetRight(Context);

            if (L == null || R == null)
            {
                return(null);
            }

            var LS = L.ToString();
            var RS = R.ToString();

            var Data = LS.Match(RS);

            if (Data != null)
            {
                Data.CopyTo(Context);
                return(Data);
            }

            return(null);
        }
コード例 #14
0
ファイル: NotNull.cs プロジェクト: azend/Poly
 public override object Evaluate(Data.jsObject Context)
 {
     return(!Bool.EvaluateNode(Right, Context));
 }
コード例 #15
0
ファイル: StaticValue.cs プロジェクト: azend/Poly
 public override object Evaluate(Data.jsObject Context)
 {
     return(Value);
 }
コード例 #16
0
 public override object Evaluate(Data.jsObject Context)
 {
     return(Bool.EvaluateNode(this.Left, Context) && Bool.EvaluateNode(this.Right, Context));
 }
コード例 #17
0
 public override object Evaluate(Data.jsObject Context)
 {
     return(GetValue(Value, Context));
 }
コード例 #18
0
ファイル: Operator.cs プロジェクト: azend/Poly
 public object GetRight(Data.jsObject Context)
 {
     return(GetValue(Right, Context));
 }
コード例 #19
0
ファイル: Operator.cs プロジェクト: azend/Poly
 public object GetLeft(Data.jsObject Context)
 {
     return(GetValue(Left, Context));
 }