tobi-wan-kenobi/bumblebee-status

View on GitHub
bumblebee_status/core/event.py

Summary

Maintainability
A
0 mins
Test Coverage
A
96%
__callbacks = {}


def register(event, callback, *args, **kwargs):
    cb = callback
    if args or kwargs:
        cb = lambda: callback(*args, **kwargs)

    __callbacks.setdefault(event, []).append(cb)

def register_exclusive(event, callback, *args, **kwargs):
    cb = callback
    if args or kwargs:
        cb = lambda: callback(*args, **kwargs)

    __callbacks[event] = [cb]

def unregister(event):
    if event in __callbacks:
        del __callbacks[event]

def clear():
    __callbacks.clear()


def trigger(event, *args, **kwargs):
    cb = __callbacks.get(event, [])
    if len(cb) == 0:
        return False

    for callback in cb:
        if args or kwargs:
            callback(*args, **kwargs)
        else:
            callback()
    return True


# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4