diff --git a/src/Spectre.Console/Cli/Internal/Parsing/CommandTreeTokenizer.cs b/src/Spectre.Console/Cli/Internal/Parsing/CommandTreeTokenizer.cs index a70a832..6495b94 100644 --- a/src/Spectre.Console/Cli/Internal/Parsing/CommandTreeTokenizer.cs +++ b/src/Spectre.Console/Cli/Internal/Parsing/CommandTreeTokenizer.cs @@ -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 diff --git a/src/Spectre.Console/Cli/Internal/TextBuffer.cs b/src/Spectre.Console/Cli/Internal/TextBuffer.cs index 6237337..41ee2c2 100644 --- a/src/Spectre.Console/Cli/Internal/TextBuffer.cs +++ b/src/Spectre.Console/Cli/Internal/TextBuffer.cs @@ -51,6 +51,12 @@ namespace Spectre.Console.Cli.Internal return true; } + public void Consume() + { + EnsureNotAtEnd(); + Read(); + } + public void Consume(char character) { EnsureNotAtEnd();