diff options
author | Todd Leonhardt <todd.leonhardt@gmail.com> | 2019-11-22 21:57:51 -0500 |
---|---|---|
committer | Todd Leonhardt <todd.leonhardt@gmail.com> | 2019-11-22 21:57:51 -0500 |
commit | efc9ad1141ecb923a52fa3d9a8f018ae9fae2a8d (patch) | |
tree | 9ecb55a5d03a0b3ca70e8c22a2b37b18193375f0 /examples/custom_parser.py | |
parent | bfca9f9a879b50f1a23c733832bbca93ff6cc243 (diff) | |
parent | 1cad8d92b87a227b331c0e86ddbbee25a6742650 (diff) | |
download | cmd2-git-efc9ad1141ecb923a52fa3d9a8f018ae9fae2a8d.tar.gz |
Merge branch 'master' into pyscript_docs
Diffstat (limited to 'examples/custom_parser.py')
-rw-r--r-- | examples/custom_parser.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/examples/custom_parser.py b/examples/custom_parser.py new file mode 100644 index 00000000..efeb362e --- /dev/null +++ b/examples/custom_parser.py @@ -0,0 +1,35 @@ +# coding=utf-8 +""" +Defines the CustomParser used with override_parser.py example +""" +import sys + +from cmd2 import Cmd2ArgumentParser, set_default_argument_parser +from cmd2.ansi import style_warning + + +# First define the parser +class CustomParser(Cmd2ArgumentParser): + """Overrides error class""" + def __init__(self, *args, **kwargs) -> None: + super().__init__(*args, **kwargs) + + def error(self, message: str) -> None: + """Custom override that applies custom formatting to the error message""" + lines = message.split('\n') + linum = 0 + formatted_message = '' + for line in lines: + if linum == 0: + formatted_message = 'Error: ' + line + else: + formatted_message += '\n ' + line + linum += 1 + + self.print_usage(sys.stderr) + formatted_message = style_warning(formatted_message) + self.exit(2, '{}\n\n'.format(formatted_message)) + + +# Now set the default parser for a cmd2 app +set_default_argument_parser(CustomParser) |