New function in ModuleContext: call_hook

This commit is contained in:
nemunaire 2015-06-05 06:59:11 +02:00
commit f4a80e0fda
3 changed files with 30 additions and 2 deletions

View file

@ -19,6 +19,7 @@
"""Progressive display of very long messages""" """Progressive display of very long messages"""
import logging import logging
import sys
from nemubot.message import Text, DirectAsk from nemubot.message import Text, DirectAsk
from nemubot.hooks import hook from nemubot.hooks import hook
@ -134,6 +135,17 @@ class Response:
return Text(self.get_message(maxlen), return Text(self.get_message(maxlen),
server=None, to=self.receivers) server=None, to=self.receivers)
def __str__(self):
ret = []
if len(self.messages):
for msg in self.messages:
if isinstance(msg, list):
ret.append(", ".join(msg))
else:
ret.append(msg)
ret.append(self.nomore)
return "\n".join(ret)
def get_message(self, maxlen): def get_message(self, maxlen):
if self.alone and len(self.messages) > 1: if self.alone and len(self.messages) > 1:
self.alone = False self.alone = False

View file

@ -21,7 +21,7 @@ class Abstract:
"""This class represents an abstract message""" """This class represents an abstract message"""
def __init__(self, server, date=None, to=None, to_response=None, frm=None): def __init__(self, server=None, date=None, to=None, to_response=None, frm=None):
"""Initialize an abstract message """Initialize an abstract message
Arguments: Arguments:
@ -59,7 +59,10 @@ class Abstract:
@property @property
def channel(self): def channel(self):
# TODO: this is for legacy modules # TODO: this is for legacy modules
return self.to_response[0] if self.to_response is not None and len(self.to_response) > 0:
return self.to_response[0]
else:
return None
@property @property
def nick(self): def nick(self):

View file

@ -67,6 +67,15 @@ class ModuleContext:
store = convert_legacy_store(store) store = convert_legacy_store(store)
self.hooks.remove((store, hook)) self.hooks.remove((store, hook))
return context.hooks.del_hook(hook, store) return context.hooks.del_hook(hook, store)
def call_hook(store, msg):
for h in context.hooks.get_hooks(store):
if h.match(msg):
res = h.run(msg)
if isinstance(res, list):
for i in res:
yield i
else:
yield res
def add_event(evt, eid=None): def add_event(evt, eid=None):
return context.add_event(evt, eid, module_src=module) return context.add_event(evt, eid, module_src=module)
def del_event(evt): def del_event(evt):
@ -93,6 +102,9 @@ class ModuleContext:
def del_hook(store, hook): def del_hook(store, hook):
store = convert_legacy_store(store) store = convert_legacy_store(store)
self.hooks.remove((store, hook)) self.hooks.remove((store, hook))
def call_hook(store, msg):
# TODO: what can we do here?
return None
def add_event(evt, eid=None): def add_event(evt, eid=None):
return context.add_event(evt, eid, module_src=module) return context.add_event(evt, eid, module_src=module)
def del_event(evt): def del_event(evt):
@ -110,6 +122,7 @@ class ModuleContext:
self.del_event = del_event self.del_event = del_event
self.save = save self.save = save
self.send_response = send_response self.send_response = send_response
self.call_hook = call_hook
def unload(self): def unload(self):