Mercurial > piecrust2
changeset 832:61878590bf96
Refactored Assetor into Assetor and AssetorBase
author | Ben Artin <ben@artins.org> |
---|---|
date | Wed, 11 Jan 2017 23:58:41 -0500 |
parents | 18978cf6d1ac |
children | cb39c0dbe5f0 |
files | piecrust/data/assetor.py |
diffstat | 1 files changed, 21 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/data/assetor.py Wed Jan 11 23:58:12 2017 -0500 +++ b/piecrust/data/assetor.py Wed Jan 11 23:58:41 2017 -0500 @@ -32,12 +32,7 @@ return base_url.rstrip('/') + '/' -class Assetor(object): - debug_render_doc = """Helps render URLs to files in the current page's - asset folder.""" - debug_render = [] - debug_render_dynamic = ['_debugRenderAssetNames'] - +class AssetorBase(object): def __init__(self, page, uri): self._page = page self._uri = uri @@ -69,8 +64,23 @@ def _cacheAssets(self): if self._cache is not None: return + + self._cache = dict(self.findAssets()) + + def findAssets(self): + raise NotImplementedError() - self._cache = {} + def copyAssets(self, dest_dir): + raise NotImplementedError() + +class Assetor(AssetorBase): + debug_render_doc = """Helps render URLs to files in the current page's + asset folder.""" + debug_render = [] + debug_render_dynamic = ['_debugRenderAssetNames'] + + def findAssets(self): + assets = {} name, ext = os.path.splitext(self._page.path) assets_dir = name + ASSET_DIR_SUFFIX if not os.path.isdir(assets_dir): @@ -85,14 +95,16 @@ continue name, ext = os.path.splitext(fn) - if name in self._cache: + if name in assets: raise UnsupportedAssetsError( "Multiple asset files are named '%s'." % name) - self._cache[name] = (base_url + fn, full_fn) + assets[name] = (base_url + fn, full_fn) cpi = self._page.app.env.exec_info_stack.current_page_info if cpi is not None: cpi.render_ctx.current_pass_info.used_assets = True + + return assets def copyAssets(self, dest_dir): page_pathname, _ = os.path.splitext(self._page.path)