Пример #1
0
        public static TotemValue Push(TotemValue array, TotemArguments parameters)
        {
            TotemArray arr = (TotemArray)array;

            arr.value.Add(parameters.Value(0));
            return(arr);
        }
Пример #2
0
        public override TotemValue Execute(TotemArguments arguments)
        {
            var str  = arguments.First().Value.ToString();
            var rest = arguments.Skip(1);
            int i    = 0;

            foreach (var a in rest)
            {
                string name = null;
                if (a.Name != null)
                {
                    name = a.Name;
                }
                else
                {
                    name = i.ToString();
                }

                string value = a.Value.ToString();
                str = str.Replace("{" + name + "}", value);
                i++;
            }
            Console.WriteLine(str);
            return(TotemValue.Undefined);
        }
Пример #3
0
 public override TotemValue Execute(TotemArguments arguments)
 {
     arguments = arguments ?? new TotemArguments();
     using (var scope = new ScopeWrapper(this))
     {
         scope.Declare("arguments");
         scope.Set("arguments", arguments);
         for (int i = 0; i < parametersDefinition.Length; i++)
         {
             var param = parametersDefinition[i];
             if (arguments.IsSet(i))
             {
                 scope.Declare(param.Name);
                 scope.Set(param.Name, arguments.Value(i));
             }
             else if (arguments.IsSet(param.Name))
             {
                 scope.Declare(param.Name);
                 scope.Set(param.Name, arguments.Value(param.Name));
             }
         }
         try
         {
             return TotemRun();
         }
         catch (Exception e)
         {
             throw;// new TotemException(e);
         }
     }
 }
Пример #4
0
 public static TotemValue Filter(TotemValue array, TotemArguments parameters)
 {
     TotemArray newArr = new TotemArray();
     TotemArray arr = (TotemArray)array;
     TotemValue fn = parameters.Value(0);
     foreach (var itm in arr.value)
     {
         var arguments = new TotemArguments();
         arguments.Add(null, itm);
         if ((bool)fn.Execute(arguments))
             newArr.AddItem(itm);
     }
     return newArr;
 }
Пример #5
0
        public static TotemValue Filter(TotemValue array, TotemArguments parameters)
        {
            TotemArray newArr = new TotemArray();
            TotemArray arr    = (TotemArray)array;
            TotemValue fn     = parameters.Value(0);

            foreach (var itm in arr.value)
            {
                var arguments = new TotemArguments();
                arguments.Add(null, itm);
                if ((bool)fn.Execute(arguments))
                {
                    newArr.AddItem(itm);
                }
            }
            return(newArr);
        }
Пример #6
0
 public static TotemValue Implement(TotemValue type, TotemArguments args)
 {
     var tt = (TotemType)type;
     foreach (var arg in args)
     {
         if (!string.IsNullOrEmpty(arg.Name) && arg.Value.Type.GetType() == typeof(Types.Function))
         {
             var fn = (TotemFunction)arg.Value;
             tt.MapMethod(arg.Name, (@this, arguments) =>
             {
                 var a = new TotemArguments();
                 a.Add(null, @this);
                 foreach (var ar in arguments)
                     a.Add(ar.Name, ar.Value);
                 return fn.Execute(a);
             });
         }
     }
     return TotemValue.Undefined;
 }
Пример #7
0
        public override TotemValue Execute(TotemArguments arguments)
        {
            var str = arguments.First().Value.ToString();
            var rest = arguments.Skip(1);
            int i = 0;
            foreach (var a in rest)
            {
                string name = null;
                if (a.Name != null)
                    name = a.Name;
                else
                    name = i.ToString();

                string value = a.Value.ToString();
                str = str.Replace("{" + name + "}", value);
                i++;
            }
            Console.WriteLine(str);
            return TotemValue.Undefined;
        }
Пример #8
0
        public static TotemValue Implement(TotemValue type, TotemArguments args)
        {
            var tt = (TotemType)type;

            foreach (var arg in args)
            {
                if (!string.IsNullOrEmpty(arg.Name) && arg.Value.Type.GetType() == typeof(Types.Function))
                {
                    var fn = (TotemFunction)arg.Value;
                    tt.MapMethod(arg.Name, (@this, arguments) =>
                    {
                        var a = new TotemArguments();
                        a.Add(null, @this);
                        foreach (var ar in arguments)
                        {
                            a.Add(ar.Name, ar.Value);
                        }
                        return(fn.Execute(a));
                    });
                }
            }
            return(TotemValue.Undefined);
        }
Пример #9
0
 public static TotemString ToLowerCase(TotemValue str, TotemArguments args)
 {
     return(new TotemString(((TotemString)str).Value.ToLower()));
 }
Пример #10
0
 public static TotemString ToString(TotemValue @this, TotemArguments args)
 {
     return(new TotemString("[" + @this.Type.Name + "]"));
 }
Пример #11
0
 public static TotemString ToString(TotemValue type, TotemArguments args)
 {
     return(new TotemString("[Totem " + ((TotemType)type).Name + "]"));
 }
Пример #12
0
 public static TotemString ToString(TotemValue @null, TotemArguments args)
 {
     return new TotemString("<undefined>");
 }
Пример #13
0
 public override TotemValue Execute(TotemArguments arguments)
 {
     return(method(@this, arguments));
 }
Пример #14
0
 public static TotemValue Push(TotemValue array, TotemArguments parameters)
 {
     TotemArray arr = (TotemArray)array;
     arr.value.Add(parameters.Value(0));
     return arr;
 }
Пример #15
0
 public override TotemValue Execute(TotemArguments arguments)
 {
     return method(@this, arguments);
 }
Пример #16
0
 public static TotemString ToString(TotemValue @this, TotemArguments args)
 {
     return new TotemString("[" + @this.Type.Name + "]");
 }
Пример #17
0
 public static TotemString ToString(TotemValue type, TotemArguments args)
 {
     return new TotemString("[Totem " + ((TotemType)type).Name + "]");
 }
Пример #18
0
 public static TotemString ToString(TotemValue str, TotemArguments args)
 {
     return(new TotemString(((TotemString)str).Value));
 }
Пример #19
0
 public static TotemString ToString(TotemValue @null, TotemArguments args)
 {
     return(new TotemString("<undefined>"));
 }
Пример #20
0
 public virtual TotemValue Execute(TotemArguments arguments)
 {
     throw new InvalidOperationException("Can't execute on a " + GetType());
 }
Пример #21
0
 public static TotemString ToString(TotemValue str, TotemArguments args)
 {
     return new TotemString(((TotemString)str).Value);
 }
Пример #22
0
 public static TotemString ToUpperCase(TotemValue str, TotemArguments args)
 {
     return new TotemString(((TotemString)str).Value.ToUpper());
 }