[TASK] Make parsing work, single to doublequotes.
This commit is contained in:
parent
9b04262445
commit
bd825fe160
4
bot.py
4
bot.py
@ -83,8 +83,8 @@ class IrcProtocol(ManagedProtocol):
|
|||||||
self.process_data()
|
self.process_data()
|
||||||
|
|
||||||
def process_data(self):
|
def process_data(self):
|
||||||
while b'\r\n' in self._buffer:
|
while b"\r\n" in self._buffer:
|
||||||
line, self._buffer = self._buffer.split(b'\r\n', 1)
|
line, self._buffer = self._buffer.split(b"\r\n", 1)
|
||||||
line = self.decode(line.strip())
|
line = self.decode(line.strip())
|
||||||
irc_line = irc.IrcLine.from_string(line)
|
irc_line = irc.IrcLine.from_string(line)
|
||||||
print(self.encode(str(irc_line)))
|
print(self.encode(str(irc_line)))
|
||||||
|
32
irc.py
32
irc.py
@ -1,20 +1,22 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
def parse(line):
|
def parse(line):
|
||||||
if line[0:1] == ':':
|
|
||||||
prefix, line = line.split(None, 1)
|
|
||||||
prefix = prefix[1:]
|
|
||||||
else:
|
|
||||||
prefix = ""
|
prefix = ""
|
||||||
if ' :' in line:
|
if line[0:1] == ":":
|
||||||
tmp_str, trailing = line.split(' :', 1)
|
prefix = ":"
|
||||||
|
subject, line = line.split(None, 1)
|
||||||
|
subject = subject[1:]
|
||||||
|
else:
|
||||||
|
subject = ""
|
||||||
|
if " :" in line:
|
||||||
|
tmp_str, trailing = line.split(" :", 1)
|
||||||
tmp_args = tmp_str.split()
|
tmp_args = tmp_str.split()
|
||||||
else:
|
else:
|
||||||
trailing = ""
|
trailing = ""
|
||||||
tmp_args = line.split()
|
tmp_args = line.split()
|
||||||
command, *middle = tmp_args
|
command, *middle = tmp_args
|
||||||
params = middle[:]
|
params = middle[:]
|
||||||
return prefix, command, params, trailing
|
return prefix, subject, command, params, trailing
|
||||||
|
|
||||||
|
|
||||||
class IrcLine(object):
|
class IrcLine(object):
|
||||||
@ -22,6 +24,7 @@ class IrcLine(object):
|
|||||||
"""
|
"""
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.prefix = ""
|
self.prefix = ""
|
||||||
|
self.subject = ""
|
||||||
self.command = ""
|
self.command = ""
|
||||||
self.params = ""
|
self.params = ""
|
||||||
self.trailing = ""
|
self.trailing = ""
|
||||||
@ -32,15 +35,16 @@ class IrcLine(object):
|
|||||||
data = parse(string)
|
data = parse(string)
|
||||||
print(data)
|
print(data)
|
||||||
instance.prefix = data[0]
|
instance.prefix = data[0]
|
||||||
instance.command = data[1]
|
instance.subject = data[1]
|
||||||
instance.params = data[2]
|
instance.command = data[2]
|
||||||
instance.trailing = data[3]
|
instance.params = data[3]
|
||||||
|
instance.trailing = data[4]
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
e = []
|
e = []
|
||||||
if self.prefix:
|
if self.subject:
|
||||||
e.append(self.prefix)
|
e.append(self.subject)
|
||||||
if self.command:
|
if self.command:
|
||||||
e.append(self.command)
|
e.append(self.command)
|
||||||
if self.params:
|
if self.params:
|
||||||
@ -48,6 +52,8 @@ class IrcLine(object):
|
|||||||
if self.trailing:
|
if self.trailing:
|
||||||
e.append(":{}".format(self.trailing))
|
e.append(":{}".format(self.trailing))
|
||||||
result = " ".join(e)
|
result = " ".join(e)
|
||||||
|
if self.prefix:
|
||||||
|
result = "".join([self.prefix, result])
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
@ -58,7 +64,7 @@ class IrcLine(object):
|
|||||||
instance.trailing = msg
|
instance.trailing = msg
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == "__main__":
|
||||||
l = IrcLine.from_string(":JPT|NC!~AS@euirc-6f528752.pools.arcor-ip.net JOIN :#euirc")
|
l = IrcLine.from_string(":JPT|NC!~AS@euirc-6f528752.pools.arcor-ip.net JOIN :#euirc")
|
||||||
print(str(l))
|
print(str(l))
|
||||||
print()
|
print()
|
||||||
|
Loading…
Reference in New Issue
Block a user