changeset 24:8a83b0e91633

The wiki `fs` only scans known file extensions. Those file extensions are provided by the registered formatters.
author Ludovic Chabant <ludovic@chabant.com>
date Fri, 04 Jan 2013 16:02:46 -0800
parents 69c34f45c6dd
children 161a0f534201
files wikked/fs.py wikked/wiki.py
diffstat 2 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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 {
--- 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())