X-Git-Url: https://git.llucax.com/software/pymin.git/blobdiff_plain/c36e91239ae45d2083f5693c44b71e2d48438278..c01ba517671f8678d39b32230331ed71cac7354f:/pymin/dispatcher.py?ds=inline diff --git a/pymin/dispatcher.py b/pymin/dispatcher.py index 314817d..17075a3 100644 --- a/pymin/dispatcher.py +++ b/pymin/dispatcher.py @@ -55,17 +55,18 @@ class CommandError(Error): return u'Error in command "%s".' % u' '.join(self.command) class WrongArgumentsError(CommandError): - r"""WrongArgumentsError() -> WrongArgumentsError instance. + r"""WrongArgumentsError(handler, message) -> WrongArgumentsError instance. This exception is raised when an empty command string is received. """ - def __init__(self, message): + def __init__(self, handler, message): r"Initialize the object, see class documentation for more info." + self.handler = handler self.message = message def __unicode__(self): - return self.message + return u'Command "%s" %s.' % (self.handler.__name__, self.message) class CommandNotSpecifiedError(CommandError): r"""CommandNotSpecifiedError() -> CommandNotSpecifiedError instance. @@ -201,14 +202,17 @@ class Handler: d = dict() for a in dir(self): h = getattr(self, a) + if a == 'parent': continue # Skip parents in SubHandlers if is_handler(h) or isinstance(h, Handler): d[a] = h.handler_help return d # A command was specified + if command == 'parent': # Skip parents in SubHandlers + raise HelpNotFoundError(command) if not hasattr(self, command.encode('utf-8')): raise HelpNotFoundError(command) handler = getattr(self, command.encode('utf-8')) - if not is_handler(handler) and not hasattr(handler): + if not is_handler(handler) and not hasattr(handler, 'handler_help'): raise HelpNotFoundError(command) return handler.handler_help @@ -441,6 +445,8 @@ class Dispatcher: raise CommandIsAHandlerError(command) raise CommandNotFoundError(command) command.append(route[0]) + if route[0] == 'parent': + raise CommandNotFoundError(command) if not hasattr(handler, route[0].encode('utf-8')): if isinstance(handler, Handler) and len(command) > 1: raise CommandNotInHandlerError(command) @@ -460,15 +466,13 @@ class Dispatcher: pl = '' if n_ok > 1: pl = 's' - raise WrongArgumentsError( - u'Command "%s" takes %s %s argument%s, %s given.' - % (handler.__name__, quant, n_ok, pl, n_bad)) + raise WrongArgumentsError(handler, u'takes %s %s argument%s, ' + '%s given' % (quant, n_ok, pl, n_bad)) m = kw_re.match(unicode(e)) if m: (kw,) = m.groups() - raise WrongArgumentsError( - u'Command "%s" got an unexpected keyword argument %s.' - % (handler.__name__, kw)) + raise WrongArgumentsError(handler, + u'got an unexpected keyword argument %s' % kw) raise