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); }
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); } }
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); } }