Пример #1
0
        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);
        }
Пример #2
0
        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");
            }
        }
Пример #3
0
 public VdfValue(VdfObject obj)
 {
     _type   = VdfValueType.Object;
     _object = obj;
 }