From 34666742ee4b5cb03f9a9f6297d5784f553d5346 Mon Sep 17 00:00:00 2001 From: Waylan Limberg Date: Thu, 20 Nov 2008 19:45:33 -0500 Subject: Moved markdown_extensions/ to markdown/extensions. Markdown is now one package instead of two. --- markdown_extensions/fenced_code.py | 117 ------------------------------------- 1 file changed, 117 deletions(-) delete mode 100644 markdown_extensions/fenced_code.py (limited to 'markdown_extensions/fenced_code.py') diff --git a/markdown_extensions/fenced_code.py b/markdown_extensions/fenced_code.py deleted file mode 100644 index fa768c0..0000000 --- a/markdown_extensions/fenced_code.py +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env python - -""" -Fenced Code Extension for Python Markdown -========================================= - -This extension adds Fenced Code Blocks to Python-Markdown. - - >>> import markdown - >>> text = ''' - ... A paragraph before a fenced code block: - ... - ... ~~~ - ... Fenced code block - ... ~~~ - ... ''' - >>> html = markdown.markdown(text, extensions=['fenced_code']) - >>> html - u'

A paragraph before a fenced code block:

\\n
Fenced code block\\n
' - -Works with safe_mode also (we check this because we are using the HtmlStash): - - >>> markdown.markdown(text, extensions=['fenced_code'], safe_mode='replace') - u'

A paragraph before a fenced code block:

\\n
Fenced code block\\n
' - -Include tilde's in a code block and wrap with blank lines: - - >>> text = ''' - ... ~~~~~~~~ - ... - ... ~~~~ - ... - ... ~~~~~~~~''' - >>> markdown.markdown(text, extensions=['fenced_code']) - u'
\\n~~~~\\n\\n
' - -Multiple blocks and language tags: - - >>> text = ''' - ... ~~~~ - ... block one - ... ~~~~{.python} - ... - ... ~~~~ - ...

block two

- ... ~~~~{.html}''' - >>> markdown.markdown(text, extensions=['fenced_code']) - u'
block one\\n
\\n\\n
<p>block two</p>\\n
' - -Copyright 2007-2008 [Waylan Limberg](http://achinghead.com/). - -Project website: -Contact: markdown@freewisdom.org - -License: BSD (see ../docs/LICENSE for details) - -Dependencies: -* [Python 2.3+](http://python.org) -* [Markdown 2.0+](http://www.freewisdom.org/projects/python-markdown/) - -""" - -import markdown, re - -# Global vars -FENCED_BLOCK_RE = re.compile( \ - r'(?P^~{3,})[ ]*\n(?P.*?)(?P=fence)[ ]*(\{\.(?P[a-zA-Z0-9_-]*)\})?[ ]*$', - re.MULTILINE|re.DOTALL - ) -CODE_WRAP = '
%s
' -LANG_TAG = ' class="%s"' - - -class FencedCodeExtension(markdown.Extension): - - def extendMarkdown(self, md, md_globals): - """ Add FencedBlockPreprocessor to the Markdown instance. """ - - md.preprocessors.add('fenced_code_block', - FencedBlockPreprocessor(md), - "_begin") - - -class FencedBlockPreprocessor(markdown.Preprocessor): - - def run(self, lines): - """ Match and store Fenced Code Blocks in the HtmlStash. """ - text = "\n".join(lines) - while 1: - m = FENCED_BLOCK_RE.search(text) - if m: - lang = '' - if m.group('lang'): - lang = LANG_TAG % m.group('lang') - code = CODE_WRAP % (lang, self._escape(m.group('code'))) - placeholder = self.markdown.htmlStash.store(code, safe=True) - text = '%s\n%s\n%s'% (text[:m.start()], placeholder, text[m.end():]) - else: - break - return text.split("\n") - - def _escape(self, txt): - """ basic html escaping """ - txt = txt.replace('&', '&') - txt = txt.replace('<', '<') - txt = txt.replace('>', '>') - txt = txt.replace('"', '"') - return txt - - -def makeExtension(configs=None): - return FencedCodeExtension() - - -if __name__ == "__main__": - import doctest - doctest.testmod() -- cgit v1.2.3