summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuchen Pei <hi@ypei.me>2021-08-26 18:52:59 +1000
committerYuchen Pei <hi@ypei.me>2021-08-26 18:52:59 +1000
commit79b22ca49affbd5a56c399c26bce3e19833dbd2c (patch)
tree3616aeb0387f06d301007c12aecef7b14656245e
parent4284fd594d8f637a1d6728cb3af67efc25e439bc (diff)
started generating graphviz dot file
-rw-r--r--gentree.py33
1 files changed, 28 insertions, 5 deletions
diff --git a/gentree.py b/gentree.py
index fe980bd..220edf3 100644
--- a/gentree.py
+++ b/gentree.py
@@ -9,13 +9,15 @@ class LogType(Enum):
class Message:
def __init__(self):
+ self.id = -1
self.sender = ""
self.message = ""
self.reply_to_msgs = []
self.previous_msg = -1
def to_dict(self):
- return {'sender': self.sender,
+ return {'id': self.id,
+ 'sender': self.sender,
'message': self.message,
'reply_to_msgs': self.reply_to_msgs,
'previous_msg': self.previous_msg}
@@ -62,6 +64,8 @@ def parse_log_quassel(log):
is_me = True
else:
nick = nick[1:-1] # removes <>
+ message.message = line
+ message.id = index
# Remove special symbol for op
if nick[0] in ['@', '%']:
nick = nick[1:]
@@ -72,7 +76,6 @@ def parse_log_quassel(log):
for participant, msg_id in last_messages.items():
if payload.find(participant) != -1:
message.reply_to_msgs.append(msg_id)
- message.message = '/me ' + payload if is_me else payload
messages.append(message)
index += 1
return messages
@@ -105,13 +108,33 @@ def parse_log(log):
else:
raise ValueError('Unknown irc log type.')
+def gen_graph(meeting):
+ dot = """
+digraph meeting {
+ node [
+ shape = box,
+ width = 40
+ ];
+"""
+ for msg in meeting:
+ quoted_message = msg.message.replace('"', '\\"')
+ dot += f'\nm{str(msg.id)} [label="{quoted_message}"];'
+ if msg.id > 0:
+ dot += f'\nm{str(msg.id - 1)} -> m{str(msg.id)} [style="invis"];'
+ if msg.previous_msg > -1:
+ dot += f'\nm{str(msg.previous_msg)} -> m{str(msg.id)};'
+ for id in msg.reply_to_msgs:
+ dot += f'\nm{str(id)} -> m{str(msg.id)};'
+ dot += '\n}'
+ return dot
def main():
log = open(sys.argv[1]).read()
meeting = parse_log(log)
- # graph = gen_graph(meeting)
- pp = pprint.PrettyPrinter(indent=4)
- pp.pprint([msg.to_dict() for msg in meeting])
+ graph = gen_graph(meeting)
+ open(sys.argv[2], 'w').write(graph)
+ # pp = pprint.PrettyPrinter(indent=4)
+ # pp.pprint([msg.to_dict() for msg in meeting])
if __name__ == '__main__':
main()