Mercurial > piecrust2
changeset 267:f512905ae812
sources: Generate proper slugs in the `autoconfig` and `ordered` sources.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Wed, 25 Feb 2015 13:06:41 -0800 |
parents | 2f4412745db2 |
children | f8601540caff |
files | piecrust/sources/autoconfig.py tests/test_sources_autoconfig.py |
diffstat | 2 files changed, 26 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/piecrust/sources/autoconfig.py Wed Feb 25 08:31:30 2015 -0800 +++ b/piecrust/sources/autoconfig.py Wed Feb 25 13:06:41 2015 -0800 @@ -82,7 +82,19 @@ return name def _makeSlug(self, rel_path): - raise NotImplementedError() + slug = rel_path.replace('\\', '/') + slug = self._cleanSlug(slug) + slug, ext = os.path.splitext(slug) + if ext.lstrip('.') not in self.supported_extensions: + slug += ext + if slug.startswith('./'): + slug = slug[2:] + if slug == '_index': + slug = '' + return slug + + def _cleanSlug(self, slug): + return slug def _extractConfigFragment(self, rel_path): raise NotImplementedError() @@ -105,12 +117,6 @@ self.supported_extensions = list( app.config.get('site/auto_formats').keys()) - def _makeSlug(self, rel_path): - slug, ext = os.path.splitext(os.path.basename(rel_path)) - if ext.lstrip('.') not in self.supported_extensions: - slug += ext - return slug - def _extractConfigFragment(self, rel_path): if rel_path == '.': values = [] @@ -169,6 +175,9 @@ items.append((False, name, fac)) return items + def _cleanSlug(self, slug): + return os.path.basename(slug) + class OrderedPageSource(AutoConfigSourceBase): """ A page source that assigns an "order" to its pages based on a @@ -277,12 +286,8 @@ items.append((False, clean_name, fac)) return items - def _makeSlug(self, rel_path): - slug, ext = os.path.splitext(rel_path) - if ext.lstrip('.') not in self.supported_extensions: - slug += ext - slug = self.re_pattern.sub(r'\1', slug) - return slug + def _cleanSlug(self, slug): + return self.re_pattern.sub(r'\1', slug) def _extractConfigFragment(self, rel_path): values = []
--- a/tests/test_sources_autoconfig.py Wed Feb 25 08:31:30 2015 -0800 +++ b/tests/test_sources_autoconfig.py Wed Feb 25 13:06:41 2015 -0800 @@ -7,6 +7,10 @@ 'fs, src_config, expected_paths, expected_metadata', [ (mock_fs(), {}, [], []), + (mock_fs().withPage('test/_index.md'), + {}, + ['_index.md'], + [{'slug': '', 'config': {'foo': []}}]), (mock_fs().withPage('test/something.md'), {}, ['something.md'], @@ -86,6 +90,10 @@ 'fs, expected_paths, expected_metadata', [ (mock_fs(), [], []), + (mock_fs().withPage('test/_index.md'), + ['_index.md'], + [{'slug': '', + 'config': {'foo': 0, 'foo_trail': [0]}}]), (mock_fs().withPage('test/something.md'), ['something.md'], [{'slug': 'something',