Пример #1
0
        void json_parse(LanguageInterpreter sender, FunctionArgs args)
        {
            if (EUtils.CheckArgs(1, args))
            {
                object param = args.EvaluateParameters()[0];

                if (EUtils.CheckArgType(param, typeof(string)))
                {
                    string json_str = (string)param;

                    dynamic parsed_json = DynamicJson.Parse(json_str);

                    if (parsed_json.IsArray)
                    {
                        AnonymousVariableArray finalArray = VariableArrayFromDynamic(parsed_json);

                        args.HasResult = true;
                        args.Result    = finalArray;
                    }
                    else
                    {
                        sender.Interpreter.HandleException(new Exception(sender.Interpreter.CurrentFile, sender.Interpreter.CurrentLine, "Unimplemented", "Only arrays are implemented in the JSON parser.", ""));
                    }
                }
                else
                {
                    sender.Interpreter.HandleException(new Exception(sender.Interpreter.CurrentFile, sender.Interpreter.CurrentLine, "Invalid parameter type.", "Function expects parameter of type 'String', got '" + param.GetType().Name + "'.", ""));
                }
            }
            else
            {
                sender.Interpreter.HandleException(Consts.Exceptions.ParameterCountMismatch(sender.Interpreter.CurrentFile, sender.Interpreter.CurrentLine, 1));
            }
        }
Пример #2
0
        AnonymousVariableArray VariableArrayFromDynamic(dynamic val)
        {
            dynamic[] arrayValues = (dynamic[])val;

            AnonymousVariableArray finalArray = new AnonymousVariableArray();

            for (int i = 0; i < arrayValues.Length; i++)
            {
                if (arrayValues[i].GetType() == typeof(DynamicJson) && arrayValues[i].IsArray)
                {
                    AnonymousVariableArray arr = VariableArrayFromDynamic(arrayValues[i]);

                    finalArray.Add(new AnonymousVariable(arr, arr.GetType()));
                }
                else
                {
                    finalArray.Add(new AnonymousVariable(arrayValues[i], arrayValues[i].GetType()));
                }
            }

            return(finalArray);
        }
Пример #3
0
        void json_stringify(LanguageInterpreter sender, FunctionArgs args)
        {
            if (EUtils.CheckArgs(1, args))
            {
                object param = args.EvaluateParameters()[0];

                if (EUtils.CheckArgType(param, typeof(AnonymousVariableArray)))
                {
                    AnonymousVariableArray array = (AnonymousVariableArray)param;

                    args.HasResult = true;
                    args.Result    = array.SerializeToJSON();
                }
                else
                {
                    sender.Interpreter.HandleException(new Exception(sender.Interpreter.CurrentFile, sender.Interpreter.CurrentLine, "Invalid parameter type.", "Function expects parameter of type 'AnonymousVariableArray', got '" + param.GetType().Name + "'.", ""));
                }
            }
            else
            {
                sender.Interpreter.HandleException(Consts.Exceptions.ParameterCountMismatch(sender.Interpreter.CurrentFile, sender.Interpreter.CurrentLine, 1));
            }
        }