Add keyworded arguments in command received
This commit is contained in:
parent
a1e7a7cff8
commit
39b7ecdaa4
4 changed files with 52 additions and 5 deletions
|
|
@ -21,11 +21,12 @@ class Command(Abstract):
|
|||
|
||||
"""This class represents a specialized TextMessage"""
|
||||
|
||||
def __init__(self, cmd, args=None, *nargs, **kargs):
|
||||
def __init__(self, cmd, args=None, kwargs=None, *nargs, **kargs):
|
||||
Abstract.__init__(self, *nargs, **kargs)
|
||||
|
||||
self.cmd = cmd
|
||||
self.args = args if args is not None else list()
|
||||
self.kwargs = kwargs if kwargs is not None else dict()
|
||||
|
||||
def __str__(self):
|
||||
return self.cmd + " @" + ",@".join(self.args)
|
||||
|
|
|
|||
|
|
@ -51,9 +51,11 @@ class Socket(AbstractVisitor):
|
|||
|
||||
|
||||
def visit_Command(self, msg):
|
||||
res = Text("!%s%s%s" % (msg.cmd,
|
||||
" " if len(msg.args) else "",
|
||||
" ".join(msg.args)),
|
||||
res = Text("!%s%s%s%s%s" % (msg.cmd,
|
||||
" " if len(msg.kwargs) else "",
|
||||
" ".join(["@%s=%s" % (k, msg.kwargs[k]) if msg.kwargs[k] is not None else "@%s" % k for k in msg.kwargs]),
|
||||
" " if len(msg.args) else "",
|
||||
" ".join(msg.args)),
|
||||
server=msg.server, date=msg.date,
|
||||
to=msg.to, frm=msg.frm)
|
||||
res.accept(self)
|
||||
|
|
|
|||
|
|
@ -72,6 +72,32 @@ class TestSocketPrinter(unittest.TestCase):
|
|||
),
|
||||
"!COMMAND TEXT"
|
||||
),
|
||||
(
|
||||
Command(cmd="COMMAND",
|
||||
kwargs={"KEY1": "VALUE"},
|
||||
),
|
||||
"!COMMAND @KEY1=VALUE"
|
||||
),
|
||||
(
|
||||
Command(cmd="COMMAND",
|
||||
args=["TEXT"],
|
||||
kwargs={"KEY1": "VALUE"},
|
||||
),
|
||||
"!COMMAND @KEY1=VALUE TEXT"
|
||||
),
|
||||
(
|
||||
Command(cmd="COMMAND",
|
||||
kwargs={"KEY2": None},
|
||||
),
|
||||
"!COMMAND @KEY2"
|
||||
),
|
||||
(
|
||||
Command(cmd="COMMAND",
|
||||
args=["TEXT"],
|
||||
kwargs={"KEY2": None},
|
||||
),
|
||||
"!COMMAND @KEY2 TEXT"
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue