# HG changeset patch # User Ludovic Chabant # Date 1360104506 28800 # Node ID 59ecc742ab8e9aee13418a6c18e0901fed7fb6ff # Parent 02150022e2125af89da88bc3d3a1c85b55c9414b Only use the default formatters for which we have a module to import. diff -r 02150022e212 -r 59ecc742ab8e wikked/wiki.py --- a/wikked/wiki.py Mon Feb 04 21:20:59 2013 -0800 +++ b/wikked/wiki.py Tue Feb 05 14:48:26 2013 -0800 @@ -3,10 +3,8 @@ import time import logging import itertools +import importlib from ConfigParser import SafeConfigParser -import markdown -import textile -import creole from page import Page, DatabasePage from fs import FileSystem from db import SQLiteDatabase, conn_scope @@ -16,8 +14,7 @@ def passthrough_formatter(text): - """ Passthrough formatter. Pretty simple stuff. - """ + """ Passthrough formatter. Pretty simple stuff. """ return text @@ -35,13 +32,9 @@ if root is None: root = os.getcwd() self.root = root + + self.formatters = self.getFormatters() - self.formatters = { - markdown.markdown: ['md', 'mdown', 'markdown'], - textile.textile: ['tl', 'text', 'textile'], - creole.creole2html: ['cr', 'creole'], - passthrough_formatter: ['txt', 'html'] - } self.config_path = os.path.join(self.root, '.wikirc') self.index_path = os.path.join(self.root, '.wiki', 'index') self.db_path = os.path.join(self.root, '.wiki', 'wiki.db') @@ -77,6 +70,21 @@ yield self.config_path yield os.path.join(self.root, '.wiki') + def getFormatters(self): + formatters = {passthrough_formatter: ['txt', 'html']} + self.tryAddFormatter(formatters, 'markdown', 'markdown', ['md', 'mdown', 'markdown']) + self.tryAddFormatter(formatters, 'textile', 'textile', ['tl', 'text', 'textile']) + self.tryAddFormatter(formatters, 'creole', 'creole2html', ['cr', 'creole']) + return formatters + + def tryAddFormatter(self, formatters, module_name, module_func, extensions): + try: + module = importlib.import_module(module_name) + func = getattr(module, module_func) + formatters[func] = extensions + except ImportError: + pass + class Wiki(object): """ The wiki class! This is where the magic happens.