# HG changeset patch # User Ludovic Chabant # Date 1357344166 28800 # Node ID 8a83b0e91633e50a890e94e85f044a53a0a14bdc # Parent 69c34f45c6ddf7047eef435e9599d73732822038 The wiki `fs` only scans known file extensions. Those file extensions are provided by the registered formatters. diff -r 69c34f45c6dd -r 8a83b0e91633 wikked/fs.py --- a/wikked/fs.py Fri Jan 04 16:01:55 2013 -0800 +++ b/wikked/fs.py Fri Jan 04 16:02:46 2013 -0800 @@ -2,6 +2,7 @@ import os.path import re import string +import codecs class PageNotFoundError(Exception): @@ -19,6 +20,7 @@ def __init__(self, root): self.root = root self.excluded = [] + self.page_extensions = None def getPageInfos(self, subdir=None): basepath = self.root @@ -43,7 +45,7 @@ def getPage(self, url): path = self.getPhysicalPagePath(url) - with open(path, 'r') as f: + with codecs.open(path, 'r', encoding='utf-8') as f: content = f.read() name = os.path.basename(path) name_split = os.path.splitext(name) @@ -68,7 +70,7 @@ def _getPageInfo(self, path): rel_path = os.path.relpath(path, self.root) rel_path_split = os.path.splitext(rel_path) - if rel_path_split[1] == '': + if self.page_extensions is not None and rel_path_split[1] not in self.page_extensions: return None url = re.sub(r'[^A-Za-z0-9_\.\-\(\)/]+', '-', rel_path_split[0].lower()) return { diff -r 69c34f45c6dd -r 8a83b0e91633 wikked/wiki.py --- a/wikked/wiki.py Fri Jan 04 16:01:55 2013 -0800 +++ b/wikked/wiki.py Fri Jan 04 16:02:46 2013 -0800 @@ -3,7 +3,7 @@ import re import time import logging -from itertools import chain +import itertools from ConfigParser import SafeConfigParser import markdown from fs import FileSystem @@ -229,6 +229,7 @@ markdown.markdown: [ 'md', 'mdown', 'markdown' ], self._passthrough: [ 'txt', 'text', 'html' ] } + self.fs.page_extensions = list(set(itertools.chain(*self.formatters.itervalues()))) if self.index is not None: self.index.update(self.getPages())