From cae86299e496abbd2b09884d8eb8848fd3902428 Mon Sep 17 00:00:00 2001
From: red-agent <hell.director@gmail.com>
Date: Sun, 13 Sep 2009 00:22:17 +0300
Subject: [PATCH] Rolled in a bunch of fixes for the command system

---
 src/chat_control.py        |  2 --
 src/commands/framework.py  | 11 +++++------
 src/commands/middleware.py |  1 -
 3 files changed, 5 insertions(+), 9 deletions(-)

diff --git a/src/chat_control.py b/src/chat_control.py
index dc259dfbef..66e13114b2 100644
--- a/src/chat_control.py
+++ b/src/chat_control.py
@@ -82,8 +82,6 @@ class ChatControlBase(MessageControl, CommonCommands):
 	'''A base class containing a banner, ConversationTextview, MessageTextView
 	'''
 
-	DISPATCHED_BY = CommonCommands
-
 	def make_href(self, match):
 		url_color = gajim.config.get('urlmsgcolor')
 		return '<a href="%s"><span color="%s">%s</span></a>' % (match.group(),
diff --git a/src/commands/framework.py b/src/commands/framework.py
index c5a2fe84c4..86e890db92 100644
--- a/src/commands/framework.py
+++ b/src/commands/framework.py
@@ -27,12 +27,11 @@ class CommandInternalError(Exception):
 
 class CommandError(Exception):
     def __init__(self, message=None, command=None, name=None):
+        self.command = command
+        self.name = name
+
         if command:
-            self.command = command
             self.name = command.first_name
-        elif name:
-            self.command = None
-            self.name = name
 
         if message:
             super(CommandError, self).__init__(message)
@@ -343,7 +342,7 @@ class CommandProcessor(object):
 
     # Quite complex piece of regular expression logic.
     ARG_PATTERN = re.compile(r'(\'|")?(?P<body>(?(1).+?|\S+))(?(1)\1)')
-    OPT_PATTERN = re.compile(r'--?(?P<key>[\w-]+)(?:(?:=|\s)(\'|")?(?P<value>(?(2)[^-]+?|[^-\s]+))(?(2)\2))?')
+    OPT_PATTERN = re.compile(r'(?<!\w)--?(?P<key>[\w-]+)(?:(?:=|\s)(\'|")?(?P<value>(?(2)[^-]+?|[^-\s]+))(?(2)\2))?')
 
     EXPAND_SHORT_OPTIONS = True
 
@@ -509,7 +508,7 @@ class CommandProcessor(object):
             return False
 
         text = text[len(self.COMMAND_PREFIX):]
-        text = text.lstrip()
+        text = text.strip()
 
         parts = text.split(' ', 1)
 
diff --git a/src/commands/middleware.py b/src/commands/middleware.py
index a0db07bdd7..839c82c3ee 100644
--- a/src/commands/middleware.py
+++ b/src/commands/middleware.py
@@ -19,7 +19,6 @@ would be dropped in. Defines a little bit of scaffolding to support interaction
 between the two and a few utility methods so you don't need to dig up the host
 code to write basic commands.
 """
-
 from types import StringTypes
 from framework import CommandProcessor, CommandError
 from traceback import print_exc
-- 
GitLab