Ejemplo n.º 1
0
        private IGlobToken ReadLiteralToken(GlobStringReader reader)
        {
            AcceptCurrentChar(reader);

            while (!reader.HasReachedEnd)
            {
                var peekChar = reader.PeekChar();
                var isValid  = GlobStringReader.IsNotStartOfToken(peekChar) && !GlobStringReader.IsPathSeperator(peekChar);

                if (isValid)
                {
                    if (reader.ReadChar())
                    {
                        AcceptCurrentChar(reader);
                    }
                    else
                    {
                        // potentially hit end of string.
                        break;
                    }
                }
                else
                {
                    // we have hit a character that may not be a valid literal (could be unsupported, or start of a token for instance).
                    break;
                }
            }

            return(new LiteralToken(GetBufferAndReset()));
        }
Ejemplo n.º 2
0
        private IGlobToken ReadLiteralToken(GlobStringReader reader, bool allowAnyChracter)
        {
            bool isValid = allowAnyChracter;

            if (!allowAnyChracter)
            {
                isValid = GlobStringReader.IsValidLiteralCharacter(reader.CurrentChar);
                if (!isValid)
                {
                    throw new NotSupportedException($"{reader.CurrentChar} is not a supported character for a pattern.");
                }
            }
            //else
            //{
            //    // dont need to check this because if this was start of token, token would havebeen parsed already, as parsing literal always called last.

            //  //  isValid = GlobStringReader.IsNotStartOfToken(reader.CurrentChar);

            //}

            //if (isValid)
            //{
            AcceptCurrentChar(reader);

            while (!reader.HasReachedEnd)
            {
                var peekChar = reader.PeekChar();
                if (!allowAnyChracter)
                {
                    isValid = GlobStringReader.IsValidLiteralCharacter(peekChar);
                }
                else
                {
                    isValid = GlobStringReader.IsNotStartOfToken(peekChar);
                }

                if (isValid)
                {
                    if (reader.ReadChar())
                    {
                        AcceptCurrentChar(reader);
                    }
                    else
                    {
                        // potentially hit end of string.
                        break;
                    }
                }
                else
                {
                    // we have hit a character that may not be a valid literal (could be unsupported, or start of a token for instance).
                    break;
                }
            }


            return(new LiteralToken(GetBufferAndReset()));
        }