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();
if (!char.IsWhiteSpace(character))
// Eat whitespace
if (char.IsWhiteSpace(character))
{
if (character == '-')
{
tokens.AddRange(ScanOptions(context, reader));
}
else
{
tokens.Add(ScanString(context, reader));
}
reader.Consume();
continue;
}
if (character == '-')
{
// Option
tokens.AddRange(ScanOptions(context, reader));
}
else
{
// Command or argument
tokens.Add(ScanString(context, reader));
}
// Flush remaining tokens

View File

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