Skip to content

Instantly share code, notes, and snippets.

@chris-martin
Created June 14, 2014 21:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chris-martin/efe97fba5c0a816bbe6e to your computer and use it in GitHub Desktop.
Save chris-martin/efe97fba5c0a816bbe6e to your computer and use it in GitHub Desktop.
from collections import namedtuple
import decorator
@decorator.decorator
def continuate(gen, *args, **kwargs):
it = gen(*args, **kwargs)
def continuation():
try:
next(it)(continuation)
except StopIteration:
pass
continuation()
@continuate
def foo():
print('a')
print((yield lambda(c): bar(c, 4)))
print('b')
KeySubscriber = namedtuple('KeySubscriber', ['callback', 'keys'])
subscribers = set()
def listen_for_key_event_async(subscriber):
subscribers.append(subscriber)
def handle_key(key):
for s in set(subscribers):
if key in s.keys:
s.callback(key)
subscribers.remove(s)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment