Mercurial > piecrust2
comparison piecrust/sources/prose.py @ 170:c3831a762bc2
sources: Make the `SimplePageSource` more extensible, fix bugs in `prose` source.
The `SimplePageSource` now calls a `_populateMetadata` function that subclasses
can override to add/edit their custom metadata everwhere it would be returned
to the system.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sat, 03 Jan 2015 20:49:00 -0800 |
parents | 55910ab4bfea |
children | e61fbae61402 |
comparison
equal
deleted
inserted
replaced
169:f3aa511eef99 | 170:c3831a762bc2 |
---|---|
14 | 14 |
15 def __init__(self, app, name, config): | 15 def __init__(self, app, name, config): |
16 super(ProseSource, self).__init__(app, name, config) | 16 super(ProseSource, self).__init__(app, name, config) |
17 self.config_recipe = config.get('config', {}) | 17 self.config_recipe = config.get('config', {}) |
18 | 18 |
19 def buildPageFactories(self): | 19 def _populateMetadata(self, rel_path, metadata): |
20 factories = super(ProseSource, self).buildPageFactories() | 20 metadata['config'] = self._makeConfig(rel_path) |
21 for f in factories: | |
22 f.metadata['config'] = self._makeConfig(f.path) | |
23 logger.debug(f.__dict__) | |
24 yield f | |
25 | 21 |
26 def findPagePath(self, metadata, mode): | 22 def _makeConfig(self, rel_path): |
27 rel_path, metadata = super(ProseSource, self).findPagePath(metadata, mode) | |
28 if rel_path: | |
29 metadata['config'] = self._makeConfig(self.resolveRef(rel_path)) | |
30 return rel_path, metadata | |
31 | |
32 def _makeConfig(self, path): | |
33 c = dict(self.config_recipe) | 23 c = dict(self.config_recipe) |
34 if c.get('title') == '%first_line%': | 24 if c.get('title') == '%first_line%': |
25 path = os.path.join(self.fs_endpoint_path, rel_path) | |
35 c['title'] = get_first_line(path) | 26 c['title'] = get_first_line(path) |
36 return c | 27 return c |
37 | 28 |
38 | 29 |
39 def get_first_line(path): | 30 def get_first_line(path): |