From dac66781e1c5b23f1cee709455b3f308e365773e Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Thu, 12 Aug 2010 18:01:41 -0400 Subject: [PATCH] Added nicer CommandMessage string-ification methods --- hooke/engine.py | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/hooke/engine.py b/hooke/engine.py index 75f74fe..c7832ab 100644 --- a/hooke/engine.py +++ b/hooke/engine.py @@ -47,6 +47,39 @@ class CommandMessage (QueueMessage): arguments = {} self.arguments = arguments + def __str__(self): + return str(self.__unicode__()) + + def __unicode__(self): + """Return a unicode representation of the `CommandMessage`. + + Examples + -------- + >>> from .compat.odict import odict + >>> cm = CommandMessage('command A') + >>> print unicode(cm) + + >>> cm.arguments = odict([('param a','value a'), ('param b', 'value b')]) + >>> print unicode(cm) + + + The parameters are sorted by name, so you won't be surprised + in any doctests, etc. + + >>> cm.arguments = odict([('param b','value b'), ('param a', 'value a')]) + >>> print unicode(cm) + + """ + if len(self.arguments) > 0: + return u'<%s %s {%s}>' % ( + self.__class__.__name__, self.command, + ', '.join(['%s: %s' % (key, value) + for key,value in sorted(self.arguments.items())])) + return u'<%s %s>' % (self.__class__.__name__, self.command) + + def __repr__(self): + return self.__str__() + class CommandEngine (object): def run(self, hooke, ui_to_command_queue, command_to_ui_queue): @@ -80,7 +113,8 @@ class CommandEngine (object): **msg.arguments) def run_command(self, hooke, command, arguments): - """Internal command execution. + """Run the command named `command` with `arguments` using + :meth:`~hooke.engine.CommandEngine.run_command`. This allows commands to execute sub commands and enables :class:`~hooke.command_stack.CommandStack` execution. @@ -92,8 +126,8 @@ class CommandEngine (object): log = logging.getLogger('hooke') log.debug('engine running internal %s with %s' % (command, arguments)) - cmd = hooke.command_by_name[command] outqueue = Queue() + cmd = hooke.command_by_name[command] cmd.run(hooke, NullQueue(), outqueue, **arguments) while True: try: -- 2.26.2