Mercurial > piecrust2
comparison piecrust/sources/autoconfig.py @ 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 | 3f740928043a |
| children | a2d283d1033d |
comparison
equal
deleted
inserted
replaced
| 266:2f4412745db2 | 267:f512905ae812 |
|---|---|
| 80 filename = os.path.basename(rel_path) | 80 filename = os.path.basename(rel_path) |
| 81 name, _ = os.path.splitext(filename) | 81 name, _ = os.path.splitext(filename) |
| 82 return name | 82 return name |
| 83 | 83 |
| 84 def _makeSlug(self, rel_path): | 84 def _makeSlug(self, rel_path): |
| 85 raise NotImplementedError() | 85 slug = rel_path.replace('\\', '/') |
| 86 slug = self._cleanSlug(slug) | |
| 87 slug, ext = os.path.splitext(slug) | |
| 88 if ext.lstrip('.') not in self.supported_extensions: | |
| 89 slug += ext | |
| 90 if slug.startswith('./'): | |
| 91 slug = slug[2:] | |
| 92 if slug == '_index': | |
| 93 slug = '' | |
| 94 return slug | |
| 95 | |
| 96 def _cleanSlug(self, slug): | |
| 97 return slug | |
| 86 | 98 |
| 87 def _extractConfigFragment(self, rel_path): | 99 def _extractConfigFragment(self, rel_path): |
| 88 raise NotImplementedError() | 100 raise NotImplementedError() |
| 89 | 101 |
| 90 | 102 |
| 102 self.only_single_values = config.get('only_single_values', False) | 114 self.only_single_values = config.get('only_single_values', False) |
| 103 self.collapse_single_values = config.get('collapse_single_values', | 115 self.collapse_single_values = config.get('collapse_single_values', |
| 104 False) | 116 False) |
| 105 self.supported_extensions = list( | 117 self.supported_extensions = list( |
| 106 app.config.get('site/auto_formats').keys()) | 118 app.config.get('site/auto_formats').keys()) |
| 107 | |
| 108 def _makeSlug(self, rel_path): | |
| 109 slug, ext = os.path.splitext(os.path.basename(rel_path)) | |
| 110 if ext.lstrip('.') not in self.supported_extensions: | |
| 111 slug += ext | |
| 112 return slug | |
| 113 | 119 |
| 114 def _extractConfigFragment(self, rel_path): | 120 def _extractConfigFragment(self, rel_path): |
| 115 if rel_path == '.': | 121 if rel_path == '.': |
| 116 values = [] | 122 values = [] |
| 117 else: | 123 else: |
| 166 fac = PageFactory(self, cur_rel_path, metadata) | 172 fac = PageFactory(self, cur_rel_path, metadata) |
| 167 | 173 |
| 168 name, _ = os.path.splitext(name) | 174 name, _ = os.path.splitext(name) |
| 169 items.append((False, name, fac)) | 175 items.append((False, name, fac)) |
| 170 return items | 176 return items |
| 177 | |
| 178 def _cleanSlug(self, slug): | |
| 179 return os.path.basename(slug) | |
| 171 | 180 |
| 172 | 181 |
| 173 class OrderedPageSource(AutoConfigSourceBase): | 182 class OrderedPageSource(AutoConfigSourceBase): |
| 174 """ A page source that assigns an "order" to its pages based on a | 183 """ A page source that assigns an "order" to its pages based on a |
| 175 numerical prefix in their filename. Page iterators will automatically | 184 numerical prefix in their filename. Page iterators will automatically |
| 275 | 284 |
| 276 name, _ = os.path.splitext(name) | 285 name, _ = os.path.splitext(name) |
| 277 items.append((False, clean_name, fac)) | 286 items.append((False, clean_name, fac)) |
| 278 return items | 287 return items |
| 279 | 288 |
| 280 def _makeSlug(self, rel_path): | 289 def _cleanSlug(self, slug): |
| 281 slug, ext = os.path.splitext(rel_path) | 290 return self.re_pattern.sub(r'\1', slug) |
| 282 if ext.lstrip('.') not in self.supported_extensions: | |
| 283 slug += ext | |
| 284 slug = self.re_pattern.sub(r'\1', slug) | |
| 285 return slug | |
| 286 | 291 |
| 287 def _extractConfigFragment(self, rel_path): | 292 def _extractConfigFragment(self, rel_path): |
| 288 values = [] | 293 values = [] |
| 289 for m in self.re_pattern.finditer(rel_path): | 294 for m in self.re_pattern.finditer(rel_path): |
| 290 val = int(m.group('num')) | 295 val = int(m.group('num')) |
