diff --git a/Readme.rst b/Readme.rst index 190df04..e8b6bfe 100644 --- a/Readme.rst +++ b/Readme.rst @@ -30,7 +30,7 @@ Potentially:: api = Interface() - @api.map('bookmarks') + @api.collection('bookmarks') class Bookmarks(Resource): """Haystack's Bookmarks Resource.""" diff --git a/resources/core.py b/resources/core.py index 7e06a64..4f43297 100644 --- a/resources/core.py +++ b/resources/core.py @@ -192,23 +192,29 @@ class Interface(object): If map is None (not provided), returns decorator. """ - if resource: - new_resource = resource(interface=self, name=key) - self.resources[key] = new_resource - - if is_collection: - self.resources[key].contains = Collection(resource=new_resource) - else: - self.resources[key].contains = Element(resource=new_resource) + new_resource = resource(interface=self, name=key) + self.resources[key] = new_resource + if is_collection: + self.resources[key].contains = Collection(resource=new_resource) else: - # Assume decorator usage. + self.resources[key].contains = Element(resource=new_resource) - def decorator(r): - self.map(key, resource=r, is_collection=is_collection) - return r - return decorator + def element(self, key): + def decorator(r): + self.map(key, resource=r, is_collection=False) + return r + + return decorator + + + def collection(self, key): + def decorator(r): + self.map(key, resource=r, is_collection=True) + return r + + return decorator