import re

@plugin
class sed(object):
    def __init__(self, server):
        self.server = server
        self.prnt = server.prnt
        server.handle("message", self.handle_message)
        self.s_expr = re.compile("^[s]\/.+\/.*\/$")
        self.backlog = { }
    
    def handle_message(self, channel, user, message):
        if self.s_expr.match(message):
            args = message.split("/")[1:-1]
            for usr,msg in self.backlog[channel]:
                if user == usr:
                    if msg.find(args[0]):
                        self.server.doMessage(channel, "<%s> %s" % (usr,msg.replace(args[0], args[1])))
                        return
            
            # Code to say something like "Subsitution not found in message history"
            # would go here, but I left it out because of people using sed on
            # other people's messages.
            
        else:
            if self.backlog.get(channel, None) is None:
                self.backlog[channel] = []
            
            if len(self.backlog[channel]) > 99:
                self.backlog[channel].pop(0)
                
            self.backlog[channel].append([user, message])