From 18b42fcfbb9b071964bd9f8ba4c48b1767bc9327 Mon Sep 17 00:00:00 2001 From: Kevin Van Brunt Date: Wed, 16 May 2018 00:22:43 -0400 Subject: Added check to support a continuous run of a terminator to end a line --- cmd2/parsing.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'cmd2/parsing.py') diff --git a/cmd2/parsing.py b/cmd2/parsing.py index ce15bd38..9fe8f6eb 100644 --- a/cmd2/parsing.py +++ b/cmd2/parsing.py @@ -250,23 +250,18 @@ class StatementParser: tokens = self.tokenize(rawinput) # of the valid terminators, find the first one to occur in the input - terminator_pos = len(tokens)+1 - for test_terminator in self.terminators: - try: - pos = tokens.index(test_terminator) - if pos < terminator_pos: + terminator_pos = len(tokens) + 1 + for pos, cur_token in enumerate(tokens): + for test_terminator in self.terminators: + if cur_token.startswith(test_terminator): terminator_pos = pos terminator = test_terminator break - except ValueError: - # the terminator is not in the tokens - pass if terminator: if terminator == LINE_FEED: terminator_pos = len(tokens)+1 - else: - terminator_pos = tokens.index(terminator) + # everything before the first terminator is the command and the args argv = tokens[:terminator_pos] (command, args) = self._command_and_args(argv) -- cgit v1.2.1 From 490c8424c9be872538a5130734f120d0a34fdcaf Mon Sep 17 00:00:00 2001 From: kotfu Date: Thu, 17 May 2018 10:04:47 -0600 Subject: Fix bug in sequential terminator logic --- cmd2/parsing.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'cmd2/parsing.py') diff --git a/cmd2/parsing.py b/cmd2/parsing.py index 9fe8f6eb..655e0c58 100644 --- a/cmd2/parsing.py +++ b/cmd2/parsing.py @@ -256,7 +256,16 @@ class StatementParser: if cur_token.startswith(test_terminator): terminator_pos = pos terminator = test_terminator + # break the inner loop, and we want to break the + # outer loop too break + else: + # this else clause is only run if the inner loop + # didn't execute a break. If it didn't, then + # continue to the next iteration of the outer loop + continue + # inner loop was broken, break the outer + break if terminator: if terminator == LINE_FEED: -- cgit v1.2.1