Esempio n. 1
0
        private DSCToken ReadUntil(string prefix, DSCTokenEnding end)
        {
            int      c;
            DSCToken token = new DSCToken();

            token.StartPosition = _bufferedStream.Position - prefix.Length;

            StringBuilder text = new StringBuilder(prefix, 64);

            int lastAppendedChar = 0;

            while ((c = this.ReadChar()) > -1)
            {
                if (c == '\n' && (end & DSCTokenEnding.LineEnd) == DSCTokenEnding.LineEnd)
                {
                    token.Length = _bufferedStream.Position - 1 - token.StartPosition;
                    token.Text   = text.ToString().Trim();
                    token.Ending = DSCTokenEnding.LineEnd;
                    return(token);
                }
                else if (c == '\r' && this.ReadChar() == '\n' && (end & DSCTokenEnding.LineEnd) == DSCTokenEnding.LineEnd)
                {
                    token.Length = _bufferedStream.Position - 2 - token.StartPosition;
                    token.Text   = text.ToString().Trim();
                    token.Ending = DSCTokenEnding.LineEnd;
                    return(token);
                }
                else if (c == ' ' && text.Length > 0 && lastAppendedChar != ' ' && (end & DSCTokenEnding.Whitespace) == DSCTokenEnding.Whitespace)
                {
                    token.Length = _bufferedStream.Position - 1 - token.StartPosition;
                    token.Text   = text.ToString().Trim();
                    token.Ending = DSCTokenEnding.Whitespace;
                    return(token);
                }
                else
                {
                    text.Append((char)c);
                    lastAppendedChar = c;
                }
            }

            return(null);
        }
Esempio n. 2
0
        private DSCToken ReadUntil(string prefix, DSCTokenEnding end)
        {
            int c;
            DSCToken token = new DSCToken();
            token.StartPosition = _bufferedStream.Position - prefix.Length;

            StringBuilder text = new StringBuilder(prefix, 64);

            int lastAppendedChar = 0;

            while ((c = this.ReadChar()) > -1)
            {
                if (c == '\n' && (end & DSCTokenEnding.LineEnd) == DSCTokenEnding.LineEnd)
                {
                    token.Length = _bufferedStream.Position - 1 - token.StartPosition;
                    token.Text = text.ToString().Trim();
                    token.Ending = DSCTokenEnding.LineEnd;
                    return token;
                }
                else if (c == '\r' && this.ReadChar() == '\n' && (end & DSCTokenEnding.LineEnd) == DSCTokenEnding.LineEnd)
                {
                    token.Length = _bufferedStream.Position - 2 - token.StartPosition;
                    token.Text = text.ToString().Trim();
                    token.Ending = DSCTokenEnding.LineEnd;
                    return token;
                }
                else if (c == ' ' && text.Length > 0 && lastAppendedChar != ' ' && (end & DSCTokenEnding.Whitespace) == DSCTokenEnding.Whitespace)
                {
                    token.Length = _bufferedStream.Position - 1 - token.StartPosition;
                    token.Text = text.ToString().Trim();
                    token.Ending = DSCTokenEnding.Whitespace;
                    return token;
                }
                else
                {
                    text.Append((char)c);
                    lastAppendedChar = c;
                }
            }

            return null;
        }
Esempio n. 3
0
 public DSCToken GetNextDSCValueToken(DSCTokenEnding end)
 {
     return(this.ReadUntil(string.Empty, end));
 }
Esempio n. 4
0
 public DSCToken GetNextDSCValueToken(DSCTokenEnding end)
 {
     return this.ReadUntil(string.Empty, end);
 }