Exemple #1
0
        public override S4JToken Clone()
        {
            S4JTokenRoot token = base.Clone() as S4JTokenRoot;

            token.ParametersDefinitions = new Dictionary <string, S4JFieldDescription>(this.ParametersDefinitions);
            token.Parameters            = new Dictionary <string, object>(this.Parameters);
            return(token);
        }
Exemple #2
0
        public override void Commit()
        {
            base.Commit();

            S4JTokenRoot root = this;

            // ustalenie root name
            if (root.Children.Count > 1 && (root.Children.FirstOrDefault() is S4JTokenTextValue nameToken))
            {
                // dodanie tagów do root'a
                foreach (var tagKV in nameToken.Tags)
                {
                    this.Tags[tagKV.Key] = tagKV.Value;
                }

                root.Name = UniConvert.ToString(nameToken.ToJson().ParseJsonOrText());
                root.RemoveChild(nameToken, null);
            }

            // ustalenie parameters
            if ((root.Children.FirstOrDefault() is S4JTokenParameters parametersToken))
            {
                // dodanie tagów do root'a
                foreach (var tagKV in parametersToken.Tags)
                {
                    this.Tags[tagKV.Key] = tagKV.Value;
                }

                root.ParametersDefinitions = new Dictionary <string, S4JFieldDescription>();
                root.Parameters            = new Dictionary <string, object>();

                string lastKey = null;
                foreach (S4JToken child in parametersToken.Children)
                {
                    Object val = child.ToJson().ParseJsonOrText();

                    if (child.IsObjectSingleKey)
                    {
                        lastKey = null;
                        root.ParametersDefinitions[UniConvert.ToString(val)] = null;
                        root.Parameters[UniConvert.ToString(val)]            = null;
                    }
                    else if (child.IsObjectKey)
                    {
                        lastKey = null;
                        lastKey = UniConvert.ToString(val);
                        root.ParametersDefinitions[lastKey] = null;
                        root.Parameters[lastKey]            = null;
                    }
                    else if (child.IsObjectValue)
                    {
                        root.ParametersDefinitions[lastKey] = S4JFieldDescription.Parse(lastKey, UniConvert.ToString(val));
                        root.Parameters[lastKey]            = null;
                    }
                }
                root.RemoveChild(parametersToken, null);
            }
        }
Exemple #3
0
        public S4JToken To_token(S4JState State)
        {
            S4JToken result = null;

            if (State != null)
            {
                if (State.StateType == EStateType.S4J)
                {
                    result = new S4JTokenRoot();
                }

                if (State.StateType == EStateType.S4J_ARRAY)
                {
                    result = new S4JTokenArray();
                }

                if (State.StateType == EStateType.S4J_COMMENT)
                {
                    result = new S4JTokenComment();
                }

                if (State.StateType == EStateType.S4J_OBJECT)
                {
                    result = new S4JTokenObject();
                }

                if (State.StateType == EStateType.S4J_TAG)
                {
                    result = new S4JTokenTag();
                }

                if (State.StateType == EStateType.S4J_PARAMETERS)
                {
                    result = new S4JTokenParameters();
                }

                if (State.StateType == EStateType.S4J_QUOTATION)
                {
                    result = new S4JTokenQuotation();
                }

                if (State.StateType == EStateType.S4J_TEXT_VALUE)
                {
                    result = new S4JTokenTextValue();
                }

                //if (State.StateType == EStateType.S4J_SEPARATOR)
                //    result = new JsArray();

                //if (State.StateType == EStateType.S4J_SIMPLE_VALUE)
                //    result = new S4JTokenSimpleValue();

                if (State.StateType == EStateType.S4J_OBJECT_CONTENT)
                {
                    result = new S4JTokenObjectContent();
                }

                //if (State.StateType == EStateType.S4J_VALUE_DELIMITER)
                //    result = new JsArray();

                if (State.StateType == EStateType.FUNCTION)
                {
                    result = new S4JTokenFunction()
                    {
                        Evaluator = (State as S4JStateFunction)?.Evaluator
                    }
                }
                ;

                if (State.StateType == EStateType.FUNCTION_COMMENT)
                {
                    result = new S4JTokenFunctionComment();
                }

                if (State.StateType == EStateType.FUNCTION_BRACKETS)
                {
                    result = new S4JTokenFunctionBracket();
                }

                if (State.StateType == EStateType.FUNCTION_QUOTATION)
                {
                    result = new S4JTokenFunctionQuotation();
                }
            }

            if (result != null)
            {
                result.State = State;
            }

            return(result);
        }
    }