Esempio n. 1
0
        public static Utf8String GetLine(this Utf8String src)
        {
            int pos;

            if (!src.TrySearchAscii((byte)'\n', 0, out pos))
            {
                return(src);
            }

            return(src.Subbytes(0, pos + 1));
        }
 static JsonValue ParseString(Utf8String segment, int parentIndex)
 {
     int pos;
     if (segment.TrySearchAscii((Byte)'"', 1, out pos))
     {
         return new JsonValue(segment.Subbytes(0, pos + 1), ValueNodeType.String, parentIndex);
     }
     else
     {
         throw new ParserException("no close string: " + segment);
     }
 }
Esempio n. 3
0
        static JsonNode ParseString(JsonNode tree, Utf8String segment)
        {
            int pos;

            if (segment.TrySearchAscii((Byte)'"', 1, out pos))
            {
                return(tree.AddValue(segment.Subbytes(0, pos + 1).Bytes, ValueNodeType.String));
            }
            else
            {
                throw new ParserException("no close string: " + segment);
            }
        }
Esempio n. 4
0
        public JsonPointer(Utf8String pointer) : this()
        {
            int pos;

            if (!pointer.TrySearchAscii((Byte)'/', 0, out pos))
            {
                throw new ArgumentException();
            }
            if (pos != 0)
            {
                throw new ArgumentException();
            }

            var split = pointer.Split((Byte)'/').ToArray();

            Path = new ArraySegment <Utf8String>(split, 1, split.Length - 1);
        }
Esempio n. 5
0
        static TomlValue ParseRHS(Utf8String segment, int parentIndex)
        {
            switch ((char)segment[0])
            {
            case '+':
            case '-':
            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                if (segment.IsInt)
                {
                    return(new TomlValue(segment.SplitInteger(), TomlValueType.Integer, parentIndex));
                }
                else
                {
                    return(new TomlValue(segment, TomlValueType.Float, parentIndex));
                }

            case '"':
            {
                int pos;
                if (segment.TrySearchAscii((Byte)'"', 1, out pos))
                {
                    return(new TomlValue(segment.Subbytes(0, pos + 1), TomlValueType.BasicString, parentIndex));
                }
                else
                {
                    throw new ParserException("no close string: " + segment);
                }
            }

            case '[':
            {
                throw new NotImplementedException();
            }
            }

            throw new NotImplementedException();
        }