Improved module handler; improved mensa formatting

This commit is contained in:
Matthias Schiffer 2010-05-11 21:38:45 +02:00
parent 2451fdd40a
commit f95b596818
3 changed files with 57 additions and 55 deletions

View file

@ -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

View file

@ -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))

View file

@ -100,8 +100,10 @@ class Module(ModuleBase):
s = s.replace('&lt;', '<') s = s.replace('&lt;', '<')
s = s.replace('&gt;', '>') s = s.replace('&gt;', '>')
s = s.replace('&quot;', '"') s = s.replace('&quot;', '"')
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