From 310e82772849bf8e3d3ef9f7129fe0cf9ea19c5e Mon Sep 17 00:00:00 2001 From: helmutm Date: Mon, 20 Dec 2010 15:44:15 +0000 Subject: [PATCH] MediaWiki preprocessor for embeding of images git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@4108 fd906abe-77d9-0310-91a1-e0d9ade77398 --- wiki/browser/media.pt | 2 +- wiki/preproc/README.txt | 16 ++++++++++++++-- wiki/preproc/mediawiki.py | 30 ++++++++++++++++++++---------- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/wiki/browser/media.pt b/wiki/browser/media.pt index c2bd044..e6da820 100644 --- a/wiki/browser/media.pt +++ b/wiki/browser/media.pt @@ -19,7 +19,7 @@ condition="objects">

Media Objects

-
diff --git a/wiki/preproc/README.txt b/wiki/preproc/README.txt index c0a038a..d973a04 100644 --- a/wiki/preproc/README.txt +++ b/wiki/preproc/README.txt @@ -5,13 +5,25 @@ Standard Wiki Pre-processors ($Id$) -MediaWiki Links -=============== +MediaWiki Formatting +==================== >>> from cybertools.wiki.preproc.mediawiki import preprocess +Links +----- + >>> src = '''Some text with [[a link]] and ... [[link2 | another link]] with separate text.''' >>> preprocess(src) 'Some text with `a link `__ and\n`another link `__ with separate text.' + +Embedding of Images +------------------- + + >>> src = '''[[image:media01.jpg]]''' + + >>> print preprocess(src) + .. image:: media01.jpg + diff --git a/wiki/preproc/mediawiki.py b/wiki/preproc/mediawiki.py index 166f8f8..ddc107a 100644 --- a/wiki/preproc/mediawiki.py +++ b/wiki/preproc/mediawiki.py @@ -28,16 +28,26 @@ import re linkPattern = re.compile(r'\[\[(.+)\]\]') -def createRstxLink(match): - value = match.group(1) - parts = value.split('|') - text = name = parts[0].strip() - if len(parts) > 1: - text = parts[-1].strip() - return '`%s <%s>`__' % (text, name) - - def preprocess(source): - result = linkPattern.sub(createRstxLink, source) + result = linkPattern.sub(processLinkPattern, source) return result + +def processLinkPattern(match): + value = match.group(1) + parts = value.split('|') + name = parts.pop(0).strip() + if ':' in name: + prefix, name = name.split(':', 1) + return createRstxImage(name, parts, prefix) + else: + return createRstxLink(name, parts) + +def createRstxLink(name, parts, prefix=None): + text = parts and parts[-1].strip() or name + return '`%s <%s>`__' % (text, name) + +def createRstxImage(name, parts, prefix=None): + return '\n\n.. image:: %s\n\n' % name + +