From 6c90d3c617e2e3106e6f5419f301620f67f6ec71 Mon Sep 17 00:00:00 2001 From: Todd Leonhardt Date: Tue, 10 Jul 2018 22:50:44 -0400 Subject: Allow onecmd to accept a raw string for backward compatibility with cmd This addresses #464 --- cmd2/cmd2.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'cmd2/cmd2.py') diff --git a/cmd2/cmd2.py b/cmd2/cmd2.py index 42e00c39..44f3a068 100644 --- a/cmd2/cmd2.py +++ b/cmd2/cmd2.py @@ -1901,14 +1901,19 @@ class Cmd(cmd.Cmd): result = target return result - def onecmd(self, statement: Statement) -> Optional[bool]: + def onecmd(self, statement: Union[Statement, str]) -> Optional[bool]: """ This executes the actual do_* method for a command. If the command provided doesn't exist, then it executes _default() instead. - :param statement: Command - a parsed command from the input stream + :param statement: Command - intended to be a Statement instance parsed command from the input stream, + alternative acceptance of a str is present only for backward compatibility with cmd :return: a flag indicating whether the interpretation of commands should stop """ + # For backwards compatibility with cmd, allow a str to be passed in + if not isinstance(statement, Statement): + statement = self._complete_statement(statement) + funcname = self._func_named(statement.command) if not funcname: self.default(statement) -- cgit v1.2.1