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,16 +63,23 @@ namespace Spectre.Console.Cli.Internal
} }
var character = reader.Peek(); var character = reader.Peek();
if (!char.IsWhiteSpace(character))
// Eat whitespace
if (char.IsWhiteSpace(character))
{ {
if (character == '-') reader.Consume();
{ continue;
tokens.AddRange(ScanOptions(context, reader)); }
}
else if (character == '-')
{ {
tokens.Add(ScanString(context, reader)); // Option
} tokens.AddRange(ScanOptions(context, reader));
}
else
{
// Command or argument
tokens.Add(ScanString(context, reader));
} }
// Flush remaining tokens // Flush remaining tokens

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();