]> git.llucax.com Git - software/pymin.git/blobdiff - dispatcher.py
Update TODO (add logging).
[software/pymin.git] / dispatcher.py
index addd45f716a3446b5fa0078875328eb2cdf37d5c..b78db93a3e0f042c273821dda82c44450aec8403 100644 (file)
@@ -18,16 +18,17 @@ class Error(RuntimeError):
     command - is the command that raised the exception, expressed as a list of
               paths (or subcommands).
     """
     command - is the command that raised the exception, expressed as a list of
               paths (or subcommands).
     """
+    pass
 
 
-    def __init__(self, command):
-        r"""Initialize the Error object.
+class HandlerError(Error):
+    r"""
+    HandlerError(command) -> HandlerError instance :: Base handlers exception.
 
 
-        See Error class documentation for more info.
-        """
-        self.command = command
+    All exceptions raised by the handlers should inherit from this one, so
+    dispatching errors could be separated from real programming errors (bugs).
+    """
+    pass
 
 
-    def __str__(self):
-        return ' '.join(self.command)
 
 class CommandNotFoundError(Error):
     r"""
 
 class CommandNotFoundError(Error):
     r"""
@@ -36,7 +37,16 @@ class CommandNotFoundError(Error):
     This exception is raised when the command received can't be dispatched
     because there is no handlers to process it.
     """
     This exception is raised when the command received can't be dispatched
     because there is no handlers to process it.
     """
-    pass
+
+    def __init__(self, command):
+        r"""Initialize the Error object.
+
+        See Error class documentation for more info.
+        """
+        self.command = command
+
+    def __str__(self):
+        return 'Command not found: "%s"' % ' '.join(self.command)
 
 def handler(f):
     f._dispatcher_handler = True
 
 def handler(f):
     f._dispatcher_handler = True
@@ -108,7 +118,7 @@ class Dispatcher:
                 raise CommandNotFoundError(command)
             handler = getattr(handler, route[0])
             route = route[1:]
                 raise CommandNotFoundError(command)
             handler = getattr(handler, route[0])
             route = route[1:]
-        handler(*route)
+        return handler(*route)
 
 
 if __name__ == '__main__':
 
 
 if __name__ == '__main__':