diff piecrust/sources/interfaces.py @ 242:f130365568ff

internal: Code reorganization to put less stuff in `sources.base`. Interfaces that sources can implement are in `sources.interfaces`. The default page source is in `sources.default`. The `SimplePageSource` is gone since most subclasses only wanted to do *some* stuff the same, but *lots* of stuff slightly different. I may have to revisit the code to extract exactly the code that's in common.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 18 Feb 2015 18:35:03 -0800
parents
children 0c74a6c4533d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/piecrust/sources/interfaces.py	Wed Feb 18 18:35:03 2015 -0800
@@ -0,0 +1,50 @@
+
+
+class IPaginationSource(object):
+    """ Defines the interface for a source that can be used as the data
+        for an iterator or a pagination.
+    """
+    def getItemsPerPage(self):
+        raise NotImplementedError()
+
+    def getSourceIterator(self):
+        raise NotImplementedError()
+
+    def getSorterIterator(self, it):
+        raise NotImplementedError()
+
+    def getTailIterator(self, it):
+        raise NotImplementedError()
+
+    def getPaginationFilter(self, page):
+        raise NotImplementedError()
+
+    def getSettingAccessor(self):
+        raise NotImplementedError()
+
+
+class IListableSource:
+    """ Defines the interface for a source that can be iterated on in a
+        hierarchical manner, for use with the `family` data endpoint.
+    """
+    def listPath(self, rel_path):
+        raise NotImplementedError()
+
+    def getDirpath(self, rel_path):
+        raise NotImplementedError()
+
+    def getBasename(self, rel_path):
+        raise NotImplementedError()
+
+
+class IPreparingSource:
+    """ Defines the interface for a source whose pages can be created by the
+        `chef prepare` command.
+    """
+    def setupPrepareParser(self, parser, app):
+        raise NotImplementedError()
+
+    def buildMetadata(self, args):
+        raise NotImplementedError()
+
+