view piecrust/sources/list.py @ 989:8adc27285d93

bake: Big pass on bake performance. - Reduce the amount of data passed between processes. - Make inter-process data simple objects to make it easier to test with alternatives to pickle. - Make sources have the basic requirement to be able to find a content item from an item spec (path). - Make Hoedown the default Markdown formatter.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 19 Nov 2017 14:29:17 -0800
parents d231a10d18f9
children
line wrap: on
line source

from piecrust.sources.base import ContentSource


class ListSource(ContentSource):
    def __init__(self, inner_source, items):
        super().__init__(
            inner_source.app, inner_source.name, inner_source.config)

        self.inner_source = inner_source
        self.items = items

    def openItem(self, item, mode='r', **kwargs):
        return self.inner_source.openItem(item, mode, **kwargs)

    def getItemMtime(self, item):
        return self.inner_source.getItemMtime(item)

    def getContents(self, group):
        return self.items

    def getRelatedContents(self, item, relationship):
        return self.inner_source.getRelatedContents(item, relationship)

    def findContentFromRoute(self, route_params):
        # Can't find items... we could find stuff that's not in our list?
        raise NotImplementedError(
            "The list source doesn't support finding items.")

    def getSupportedRouteParameters(self):
        return self.inner_source.getSupportedRouteParameters()