internal static VdfObject Parce(StreamReader reader) { var result = new VdfObject(); reader.ReadBlockStart(); reader.ReadEmpty(); while (reader.CheckNext() != VdfReaderToken.BlockEnd) { if (!reader.ReadLimiter()) { throw new Exception(reader.BaseStream.Position + ": Limiter expected"); } var key = reader.ReadText(); if (key == null) { throw new Exception(reader.BaseStream.Position + ": key must be not null"); } if (!reader.ReadLimiter()) { throw new Exception(reader.BaseStream.Position + ": Limiter expected"); } var value = VdfValue.Parce(reader); reader.ReadEmpty(); result.Add(key, value); } reader.ReadBlockEnd(); return(result); }
internal static VdfValue Parce(StreamReader reader) { reader.ReadEmpty(); var next = reader.CheckNext(); switch (next) { case VdfReaderToken.BlockStart: return(new VdfValue(VdfObject.Parce(reader))); case VdfReaderToken.Limiter: reader.ReadLimiter(); var text = reader.ReadText(); reader.ReadLimiter(); if (text == null) { return(new VdfValue()); } return(new VdfValue(text)); default: throw new Exception(reader.BaseStream.Position + ": Limiter or BlockStart expected"); } }
public VdfValue(VdfObject obj) { _type = VdfValueType.Object; _object = obj; }