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
+
+