Prevent endless loop in tokenization

Closes #198
This commit is contained in:
Patrik Svensson 2021-01-01 22:54:44 +01:00 committed by Patrik Svensson
parent b81739567b
commit c6210f75ca
2 changed files with 22 additions and 9 deletions

View File

@ -63,17 +63,24 @@ namespace Spectre.Console.Cli.Internal
} }
var character = reader.Peek(); var character = reader.Peek();
if (!char.IsWhiteSpace(character))
// Eat whitespace
if (char.IsWhiteSpace(character))
{ {
reader.Consume();
continue;
}
if (character == '-') if (character == '-')
{ {
// Option
tokens.AddRange(ScanOptions(context, reader)); tokens.AddRange(ScanOptions(context, reader));
} }
else else
{ {
// Command or argument
tokens.Add(ScanString(context, reader)); tokens.Add(ScanString(context, reader));
} }
}
// Flush remaining tokens // Flush remaining tokens
context.FlushRemaining(); context.FlushRemaining();

View File

@ -51,6 +51,12 @@ namespace Spectre.Console.Cli.Internal
return true; return true;
} }
public void Consume()
{
EnsureNotAtEnd();
Read();
}
public void Consume(char character) public void Consume(char character)
{ {
EnsureNotAtEnd(); EnsureNotAtEnd();