Mercurial > wikked
changeset 59:59ecc742ab8e
Only use the default formatters for which we have a module to import.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Tue, 05 Feb 2013 14:48:26 -0800 |
parents | 02150022e212 |
children | 8250c977bc50 |
files | wikked/wiki.py |
diffstat | 1 files changed, 19 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- 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.