mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-30 06:49:24 +01:00
Add support for outputting server tags.
Will be useful when we start sending client tags.
This commit is contained in:
parent
73b604f875
commit
1854d86476
@ -122,7 +122,7 @@ class IrcMsg(object):
|
|||||||
__slots__ = ('args', 'command', 'host', 'nick', 'prefix', 'user',
|
__slots__ = ('args', 'command', 'host', 'nick', 'prefix', 'user',
|
||||||
'_hash', '_str', '_repr', '_len', 'tags', 'reply_env',
|
'_hash', '_str', '_repr', '_len', 'tags', 'reply_env',
|
||||||
'server_tags', 'time', 'channel')
|
'server_tags', 'time', 'channel')
|
||||||
def __init__(self, s='', command='', args=(), prefix='', msg=None,
|
def __init__(self, s='', command='', args=(), prefix='', server_tags=None, msg=None,
|
||||||
reply_env=None):
|
reply_env=None):
|
||||||
assert not (msg and s), 'IrcMsg.__init__ cannot accept both s and msg'
|
assert not (msg and s), 'IrcMsg.__init__ cannot accept both s and msg'
|
||||||
if not s and not command and not msg:
|
if not s and not command and not msg:
|
||||||
@ -193,7 +193,10 @@ class IrcMsg(object):
|
|||||||
assert all(ircutils.isValidArgument, args), args
|
assert all(ircutils.isValidArgument, args), args
|
||||||
self.args = args
|
self.args = args
|
||||||
self.time = None
|
self.time = None
|
||||||
|
if server_tags is None:
|
||||||
self.server_tags = {}
|
self.server_tags = {}
|
||||||
|
else:
|
||||||
|
self.server_tags = server_tags
|
||||||
self.args = tuple(self.args)
|
self.args = tuple(self.args)
|
||||||
if isUserHostmask(self.prefix):
|
if isUserHostmask(self.prefix):
|
||||||
(self.nick,self.user,self.host)=ircutils.splitHostmask(self.prefix)
|
(self.nick,self.user,self.host)=ircutils.splitHostmask(self.prefix)
|
||||||
@ -205,25 +208,31 @@ class IrcMsg(object):
|
|||||||
return self._str
|
return self._str
|
||||||
if self.prefix:
|
if self.prefix:
|
||||||
if len(self.args) > 1:
|
if len(self.args) > 1:
|
||||||
self._str = ':%s %s %s :%s\r\n' % \
|
s = ':%s %s %s :%s\r\n' % (
|
||||||
(self.prefix, self.command,
|
self.prefix, self.command,
|
||||||
' '.join(self.args[:-1]), self.args[-1])
|
' '.join(self.args[:-1]), self.args[-1])
|
||||||
else:
|
else:
|
||||||
if self.args:
|
if self.args:
|
||||||
self._str = ':%s %s :%s\r\n' % \
|
s = ':%s %s :%s\r\n' % (
|
||||||
(self.prefix, self.command, self.args[0])
|
self.prefix, self.command, self.args[0])
|
||||||
else:
|
else:
|
||||||
self._str = ':%s %s\r\n' % (self.prefix, self.command)
|
s = ':%s %s\r\n' % (self.prefix, self.command)
|
||||||
else:
|
else:
|
||||||
if len(self.args) > 1:
|
if len(self.args) > 1:
|
||||||
self._str = '%s %s :%s\r\n' % \
|
s = '%s %s :%s\r\n' % (
|
||||||
(self.command,
|
self.command,
|
||||||
' '.join(self.args[:-1]), self.args[-1])
|
' '.join(self.args[:-1]), self.args[-1])
|
||||||
else:
|
else:
|
||||||
if self.args:
|
if self.args:
|
||||||
self._str = '%s :%s\r\n' % (self.command, self.args[0])
|
s = '%s :%s\r\n' % (self.command, self.args[0])
|
||||||
else:
|
else:
|
||||||
self._str = '%s\r\n' % self.command
|
s = '%s\r\n' % self.command
|
||||||
|
|
||||||
|
if self.server_tags:
|
||||||
|
s = format_server_tags(self.server_tags) + ' ' + s
|
||||||
|
|
||||||
|
self._str = s
|
||||||
|
|
||||||
return self._str
|
return self._str
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
@ -252,8 +261,9 @@ class IrcMsg(object):
|
|||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
if self._repr is not None:
|
if self._repr is not None:
|
||||||
return self._repr
|
return self._repr
|
||||||
self._repr = format('IrcMsg(prefix=%q, command=%q, args=%r)',
|
self._repr = format(
|
||||||
self.prefix, self.command, self.args)
|
'IrcMsg(server_tags=%r, prefix=%q, command=%q, args=%r)',
|
||||||
|
self.server_tags, self.prefix, self.command, self.args)
|
||||||
return self._repr
|
return self._repr
|
||||||
|
|
||||||
def __reduce__(self):
|
def __reduce__(self):
|
||||||
|
@ -146,6 +146,8 @@ class IrcMsgTestCase(SupyTestCase):
|
|||||||
self.assertEqual(m.command, 'PRIVMSG')
|
self.assertEqual(m.command, 'PRIVMSG')
|
||||||
self.assertEqual(m.args, ('me', 'Hello'))
|
self.assertEqual(m.args, ('me', 'Hello'))
|
||||||
self.assertEqual(str(m), s + '\n')
|
self.assertEqual(str(m), s + '\n')
|
||||||
|
m._str = None # Clear the cache (set before parsing)
|
||||||
|
self.assertEqual(str(m), s + '\r\n')
|
||||||
|
|
||||||
s = '@foo=;bar=baz;qux= ' \
|
s = '@foo=;bar=baz;qux= ' \
|
||||||
':nick!ident@host.com PRIVMSG me :Hello'
|
':nick!ident@host.com PRIVMSG me :Hello'
|
||||||
|
Loading…
Reference in New Issue
Block a user