σ η\c @@ sͺ d Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z m Z m Z d d l Z d e f d YZ d e f d YZ d d Z d S( un 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']) >>> print html
A paragraph before a fenced code block:
Fenced code block
Works with safe_mode also (we check this because we are using the HtmlStash):
>>> print markdown.markdown(text, extensions=['fenced_code'], safe_mode='replace')
A paragraph before a fenced code block:
Fenced code block
Include tilde's in a code block and wrap with blank lines:
>>> text = '''
... ~~~~~~~~
...
... ~~~~
... ~~~~~~~~'''
>>> print markdown.markdown(text, extensions=['fenced_code'])
~~~~
Language tags:
>>> text = '''
... ~~~~{.python}
... # Some python code
... ~~~~'''
>>> print markdown.markdown(text, extensions=['fenced_code'])
# Some python code
Optionally backticks instead of tildes as per how github's code block markdown is identified:
>>> text = '''
... `````
... # Arbitrary code
... ~~~~~ # these tildes will not close the block
... `````'''
>>> print markdown.markdown(text, extensions=['fenced_code'])
# Arbitrary code
~~~~~ # these tildes will not close the block
If the codehighlite extension and Pygments are installed, lines can be highlighted:
>>> text = '''
... ```hl_lines="1 3"
... line 1
... line 2
... line 3
... ```'''
>>> print markdown.markdown(text, extensions=['codehilite', 'fenced_code'])
line 1
line 2
line 3
Copyright 2007-2008 [Waylan Limberg](http://achinghead.com/).
Project website: .*?)(?<=\n)
(?P=fence)[ ]*$u %s
u class="%s"c C@ s, t t | j | t | _ i | _ d S( N( t superR t __init__t Falset checked_for_codehilitet codehilite_conf( R R
( ( sC /usr/lib/python2.7/site-packages/markdown/extensions/fenced_code.pyR y s c C@ sΚ | j sK x3 | j j D]% } t | t r | j | _ Pq q Wt | _ n d j | } x`| j j
| } | rΉd } | j d r£ | j | j d } n | j rOt
| j d d | j d d d | j d d d
| j d d d | j d
d d | j d pd d | j d d d t | j d } | j } n% | j | | j | j d f } | j j j | d t } d | | j | | | j f } q] Pq] | j d S( u6 Match and store Fenced Code Blocks in the HtmlStash. u
u u langu codet linenumsu linenumsi t
guess_langu
guess_langt css_classu css_classt styleu pygments_stylet langt noclassesu noclassest hl_linesu hl_linest safeu %s
%s
%sN( R t markdownt registeredExtensionst
isinstanceR t configR t Truet joint FENCED_BLOCK_REt searcht groupt LANG_TAGR t NoneR t hilitet CODE_WRAPt _escapet htmlStasht storet startt endt split( R t linest extt textt mR t highlitert codet placeholder( ( sC /usr/lib/python2.7/site-packages/markdown/extensions/fenced_code.pyt run s8 %*c C@ sL | j d d } | j d d } | j d d } | j d d } | S( u basic html escaping u &u &u