From bba7d890b8c5ce0be0b77e6da78721ab83c5b031 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Tue, 6 Sep 2011 22:07:59 -0400 Subject: [PATCH] interface.map decorator #1 --- resources/core.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/resources/core.py b/resources/core.py index 5c1a22f..555ba54 100644 --- a/resources/core.py +++ b/resources/core.py @@ -11,6 +11,8 @@ This omdule provides the core resources system. from uuid import uuid4 +__all__ = ('Resource', 'Interface', 'Element') + class Resource(object): """A RESTful Resource.""" @@ -52,8 +54,24 @@ class Interface(object): return object.__getattribute__(self, key) - def map(self, key, resource): - self.resources[key] = resource(interface=self, name=key) + def map(self, key, resource=None): + """Map + + If map is None (not provided), returns decorator. + """ + + if resource: + self.resources[key] = resource(interface=self, name=key) + else: + # Assume decorator usage. + + def decorator(f): + self.map(key, f) + return f + + return decorator + +