X-Git-Url: https://git.llucax.com/software/pymin.git/blobdiff_plain/c9d3523aec7eee7941162e598dd1c9dc500809e6..b9f71ad8a238ed93c7e515cc9602d11700f183ae:/pymin/dispatcher.py?ds=sidebyside diff --git a/pymin/dispatcher.py b/pymin/dispatcher.py index 0127d4f..b5567a4 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. @@ -384,6 +385,7 @@ def parse_command(command): return (seq, dic) args_re = re.compile(r'\w+\(\) takes (.+) (\d+) \w+ \((\d+) given\)') +kw_re = re.compile(r'\w+\(\) got an unexpected keyword argument (.+)') class Dispatcher: r"""Dispatcher([root]) -> Dispatcher instance :: Command dispatcher. @@ -459,8 +461,13 @@ class Dispatcher: pl = '' if n_ok > 1: pl = 's' - raise WrongArgumentsError(u'%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(handler, + u'got an unexpected keyword argument %s' % kw) raise