Improved module handler; improved mensa formatting
This commit is contained in:
parent
2451fdd40a
commit
f95b596818
3 changed files with 57 additions and 55 deletions
57
curunir.py
57
curunir.py
|
@ -1,58 +1,9 @@
|
||||||
|
import signal, sys, traceback
|
||||||
|
|
||||||
|
from config import config
|
||||||
|
from modules import ModuleManager
|
||||||
from connection.xmpp import XMPPConnection
|
from connection.xmpp import XMPPConnection
|
||||||
|
|
||||||
import signal, sys, traceback
|
|
||||||
from config import config
|
|
||||||
|
|
||||||
class ModuleManager:
|
|
||||||
def __init__(self, config):
|
|
||||||
self.config = config
|
|
||||||
self._modules = {}
|
|
||||||
|
|
||||||
for mod in config['modules']:
|
|
||||||
self.get(mod)
|
|
||||||
|
|
||||||
def get(self, name):
|
|
||||||
if not name in self._modules:
|
|
||||||
mod = __import__('modules.' + name, globals(), locals(), ['Module'])
|
|
||||||
self._modules[name] = mod.Module(self)
|
|
||||||
|
|
||||||
return self._modules[name]
|
|
||||||
|
|
||||||
def commands(self):
|
|
||||||
return reduce(lambda l, mod: l + mod.commands(), self._modules.itervalues(), [])
|
|
||||||
|
|
||||||
def helptexts(self):
|
|
||||||
return reduce(lambda l, mod: l + mod.helptexts(), self._modules.itervalues(), [])
|
|
||||||
|
|
||||||
def groupchat(self, room, nick, text, handler):
|
|
||||||
for mod in self._modules.itervalues():
|
|
||||||
try:
|
|
||||||
mod.groupchat(room, nick, text, handler)
|
|
||||||
except:
|
|
||||||
handler.reply(traceback.format_exc(5))
|
|
||||||
|
|
||||||
def join(self, room, nick, show, status, handler):
|
|
||||||
for mod in self._modules.itervalues():
|
|
||||||
try:
|
|
||||||
mod.join(room, nick, show, status, handler)
|
|
||||||
except:
|
|
||||||
handler.reply(traceback.format_exc(5))
|
|
||||||
|
|
||||||
def leave(self, room, nick, show, status, handler):
|
|
||||||
for mod in self._modules.itervalues():
|
|
||||||
try:
|
|
||||||
mod.leave(room, nick, show, status, handler)
|
|
||||||
except:
|
|
||||||
handler.reply(traceback.format_exc(5))
|
|
||||||
|
|
||||||
def topic(self, room, nick, text, handler):
|
|
||||||
for mod in self._modules.itervalues():
|
|
||||||
try:
|
|
||||||
mod.topic(room, nick, text, handler)
|
|
||||||
except:
|
|
||||||
handler.reply(traceback.format_exc(5))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
run = True
|
run = True
|
||||||
|
|
||||||
|
|
|
@ -19,3 +19,52 @@ class ModuleBase:
|
||||||
|
|
||||||
def topic(self, room, nick, text, handler):
|
def topic(self, room, nick, text, handler):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class ModuleManager:
|
||||||
|
def __init__(self, config):
|
||||||
|
self.config = config
|
||||||
|
self._modules = {}
|
||||||
|
|
||||||
|
for mod in config['modules']:
|
||||||
|
self.get(mod)
|
||||||
|
|
||||||
|
def get(self, name):
|
||||||
|
if not name in self._modules:
|
||||||
|
mod = __import__('modules.' + name, globals(), locals(), ['Module'])
|
||||||
|
self._modules[name] = mod.Module(self)
|
||||||
|
|
||||||
|
return self._modules[name]
|
||||||
|
|
||||||
|
def commands(self):
|
||||||
|
return reduce(lambda l, mod: l + mod.commands(), self._modules.itervalues(), [])
|
||||||
|
|
||||||
|
def helptexts(self):
|
||||||
|
return reduce(lambda l, mod: l + mod.helptexts(), self._modules.itervalues(), [])
|
||||||
|
|
||||||
|
def groupchat(self, room, nick, text, handler):
|
||||||
|
for mod in self._modules.itervalues():
|
||||||
|
try:
|
||||||
|
mod.groupchat(room, nick, text, handler)
|
||||||
|
except:
|
||||||
|
handler.reply(traceback.format_exc(5))
|
||||||
|
|
||||||
|
def join(self, room, nick, show, status, handler):
|
||||||
|
for mod in self._modules.itervalues():
|
||||||
|
try:
|
||||||
|
mod.join(room, nick, show, status, handler)
|
||||||
|
except:
|
||||||
|
handler.reply(traceback.format_exc(5))
|
||||||
|
|
||||||
|
def leave(self, room, nick, show, status, handler):
|
||||||
|
for mod in self._modules.itervalues():
|
||||||
|
try:
|
||||||
|
mod.leave(room, nick, show, status, handler)
|
||||||
|
except:
|
||||||
|
handler.reply(traceback.format_exc(5))
|
||||||
|
|
||||||
|
def topic(self, room, nick, text, handler):
|
||||||
|
for mod in self._modules.itervalues():
|
||||||
|
try:
|
||||||
|
mod.topic(room, nick, text, handler)
|
||||||
|
except:
|
||||||
|
handler.reply(traceback.format_exc(5))
|
||||||
|
|
|
@ -100,8 +100,10 @@ class Module(ModuleBase):
|
||||||
s = s.replace('<', '<')
|
s = s.replace('<', '<')
|
||||||
s = s.replace('>', '>')
|
s = s.replace('>', '>')
|
||||||
s = s.replace('"', '"')
|
s = s.replace('"', '"')
|
||||||
s = s.replace('<br />', ' ‒ ')
|
s = s.replace('<br />', ' ')
|
||||||
s = re.sub('\s+', ' ', s)
|
s = re.sub(r'-\s+', '-', s)
|
||||||
|
s = re.sub(r'\s+', ' ', s)
|
||||||
|
s = re.sub(r'([a-zäöüß])-([a-zäöüß])', r'\1\2', s)
|
||||||
s = re.sub(r'<span[^>]*>(.+?)</span>', r'\1', s)
|
s = re.sub(r'<span[^>]*>(.+?)</span>', r'\1', s)
|
||||||
return s
|
return s
|
||||||
|
|
||||||
|
|
Reference in a new issue