From abe7282afed981dff79b093f2fa38d6c77675453 Mon Sep 17 00:00:00 2001 From: benjaoming Date: Thu, 7 Feb 2013 15:28:54 +0100 Subject: [PATCH] unfinished generic markdown extension --- wiki/plugins/macros/markdown_extensions.py | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/wiki/plugins/macros/markdown_extensions.py b/wiki/plugins/macros/markdown_extensions.py index 75e75e61..f6b33482 100644 --- a/wiki/plugins/macros/markdown_extensions.py +++ b/wiki/plugins/macros/markdown_extensions.py @@ -12,6 +12,35 @@ re_sq_short = r"'([^'\\]*(?:\\.[^'\\]*)*)'" MACRO_RE = re.compile(r'.*(\[(?P\w+)(?P\s\w+\:.+)*\]).*', re.IGNORECASE) KWARG_RE = re.compile(r'\s*(?P\w+)(:(?P([^\']|%s)))?' % re_sq_short, re.IGNORECASE) +# See: http://stackoverflow.com/questions/430759/regex-for-managing-escaped-characters-for-items-like-string-literals +re_sq_short = r"'([^'\\]*(?:\\.[^'\\]*)*)'" + +MACRO_RE = re.compile(r'.*(\[(?P%s)(?P\s\w+\:.+)*\]).*', re.IGNORECASE) +KWARG_RE = re.compile(r'\s*(?P\w+)(:(?P([^\']|%s)))?' % re_sq_short, re.IGNORECASE) + +class SimplePreprocessorExtension(markdown.Extension): + """Extend this class to create a simple [name arg:val] markdown tag + and replace each tag with your own html stack""" + + UNSET = "OVERRIDE THIS" + markdown_id = UNSET + tagname = UNSET + + def extendMarkdown(self, md, md_globals): + if SimplePreprocessorExtension.UNSET in (self.markdown_id, self.tagname): + raise NotImplementedError("You need to set all required properties") + """ Insert ImagePreprocessor before ReferencePreprocessor. """ + md.preprocessors.add('dw-%s' % self.markdown_id, + self.get_preprocessor(md, self.tagname), + '>html_block') + + def get_preprocessor(self, md, tagname): + return SimplePreprocessor(md, tagname) + + class Preprocessor(markdown.preprocessors.Preprocessor): + pass + + from wiki.plugins.macros import settings class MacroExtension(markdown.Extension): -- 2.45.2