Mercurial > python-cmd2
diff cmd2.py @ 156:7e5a57df88aa
kinks in assumeComplete
author | catherine@dellzilla |
---|---|
date | Fri, 21 Nov 2008 17:56:28 -0500 |
parents | 8ba5127167f5 |
children | 10e917acf787 |
line wrap: on
line diff
--- a/cmd2.py Fri Nov 21 17:05:26 2008 -0500 +++ b/cmd2.py Fri Nov 21 17:56:28 2008 -0500 @@ -355,7 +355,7 @@ multilineCommand = pyparsing.Or([pyparsing.Keyword(c, caseless=self.caseInsensitive) for c in self.multilineCommands])('multilineCommand') oneLineCommand = pyparsing.Word(pyparsing.printables)('command') afterElements = \ - pyparsing.Optional('|' + pyparsing.SkipTo(outputParser ^ stringEnd).setParseAction(lambda x: [y.strip() for y in x])('pipeTo')) + \ + pyparsing.Optional('|' + pyparsing.SkipTo(outputParser ^ stringEnd)('pipeTo')) + \ pyparsing.Optional(outputParser + pyparsing.SkipTo(stringEnd).setParseAction(lambda x: x[0].strip())('outputTo')) if self.caseInsensitive: multilineCommand.setParseAction(lambda x: x[0].lower()) @@ -420,9 +420,13 @@ return try: statement = self.parsed(line) - while statement.multilineCommand and not (statement.terminator or assumeComplete): - statement = self.parsed('%s\n%s' % (statement.raw, - self.pseudo_raw_input(self.continuationPrompt))) + if assumeComplete: + if statement.multilineCommand and not statement.terminator: + statement = self.parsed(statement.raw + self.terminators[0]) + else: + while statement.multilineCommand and not statement.terminator: + statement = self.parsed('%s\n%s' % (statement.raw, + self.pseudo_raw_input(self.continuationPrompt))) except Exception, e: print e return 0 @@ -570,7 +574,7 @@ if (val[0] == val[-1]) and val[0] in ("'", '"'): val = val[1:-1] else: - val = cast(currentVal, self.parsed(val).unterminated) + val = cast(currentVal, self.parsed(val).statement) setattr(self, paramName, val) self.stdout.write('%s - was: %s\nnow: %s\n' % (paramName, currentVal, val)) except (ValueError, AttributeError, NotSettableError), e: