view piecrust/events.py @ 147:ab6e7e0e9d44

Pass date information to routing when building URLs. This is so that URLs with dates in them can be built even when the date information is not coming from the source metadata, but from the page's config.
author Ludovic Chabant <ludovic@chabant.com>
date Sat, 29 Nov 2014 21:00:44 -0800
parents f485ba500df3
children f070a4fc033c
line wrap: on
line source


class Event(object):
    def __init__(self):
        self._handlers = []

    def __iadd__(self, handler):
        self._handlers.append(handler)
        return self

    def __isub__(self, handler):
        self._handlers.remove(handler)
        return self

    def fire(self, *args, **kwargs):
        # Make a copy of the handlers list in case some handler removes
        # itself while executing.
        handlers = list(self._handlers)
        for handler in handlers:
            handler(*args, **kwargs)