private SequenceToken CreateSequenceToken(TemplateContext context) { var result = new SequenceToken(FileId, Line, Column); context.Memory.AddBytes(result); return(result); }
public override Object ReadJson( JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) { switch (reader.TokenType) { case JsonToken.String: return(new StringToken(null, null, null, reader.Value.ToString())); case JsonToken.Boolean: return(new BooleanToken(null, null, null, (Boolean)reader.Value)); case JsonToken.Float: return(new NumberToken(null, null, null, (Double)reader.Value)); case JsonToken.Integer: return(new NumberToken(null, null, null, (Double)(Int64)reader.Value)); case JsonToken.Null: return(new NullToken(null, null, null)); case JsonToken.StartObject: break; default: return(null); } Int32? type = null; JObject value = JObject.Load(reader); if (!value.TryGetValue("type", StringComparison.OrdinalIgnoreCase, out JToken typeValue)) { type = TokenType.String; } else if (typeValue.Type == JTokenType.Integer) { type = (Int32)typeValue; } else { return(existingValue); } Object newValue = null; switch (type) { case TokenType.Null: newValue = new NullToken(null, null, null); break; case TokenType.Boolean: newValue = new BooleanToken(null, null, null, default(Boolean)); break; case TokenType.Number: newValue = new NumberToken(null, null, null, default(Double)); break; case TokenType.String: newValue = new StringToken(null, null, null, null); break; case TokenType.BasicExpression: newValue = new BasicExpressionToken(null, null, null, null); break; case TokenType.InsertExpression: newValue = new InsertExpressionToken(null, null, null); break; case TokenType.Sequence: newValue = new SequenceToken(null, null, null); break; case TokenType.Mapping: newValue = new MappingToken(null, null, null); break; } if (value != null) { using (JsonReader objectReader = value.CreateReader()) { serializer.Populate(objectReader, newValue); } } return(newValue); }