Home | History | Annotate | Download | only in extensions
      1 # markdown is released under the BSD license
      2 # Copyright 2007, 2008 The Python Markdown Project (v. 1.7 and later)
      3 # Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b)
      4 # Copyright 2004 Manfred Stienstra (the original version)
      5 # 
      6 # All rights reserved.
      7 # 
      8 # Redistribution and use in source and binary forms, with or without
      9 # modification, are permitted provided that the following conditions are met:
     10 # 
     11 # *   Redistributions of source code must retain the above copyright
     12 #     notice, this list of conditions and the following disclaimer.
     13 # *   Redistributions in binary form must reproduce the above copyright
     14 #     notice, this list of conditions and the following disclaimer in the
     15 #     documentation and/or other materials provided with the distribution.
     16 # *   Neither the name of the <organization> nor the
     17 #     names of its contributors may be used to endorse or promote products
     18 #     derived from this software without specific prior written permission.
     19 # 
     20 # THIS SOFTWARE IS PROVIDED BY THE PYTHON MARKDOWN PROJECT ''AS IS'' AND ANY
     21 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     22 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     23 # DISCLAIMED. IN NO EVENT SHALL ANY CONTRIBUTORS TO THE PYTHON MARKDOWN PROJECT
     24 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     25 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     26 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     27 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     28 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     29 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     30 # POSSIBILITY OF SUCH DAMAGE.
     31 
     32 
     33 """
     34 NL2BR Extension
     35 ===============
     36 
     37 A Python-Markdown extension to treat newlines as hard breaks; like
     38 GitHub-flavored Markdown does.
     39 
     40 Usage:
     41 
     42     >>> import markdown
     43     >>> print markdown.markdown('line 1\\nline 2', extensions=['nl2br'])
     44     <p>line 1<br />
     45     line 2</p>
     46 
     47 Copyright 2011 [Brian Neal](http://deathofagremmie.com/)
     48 
     49 Dependencies:
     50 * [Python 2.4+](http://python.org)
     51 * [Markdown 2.1+](http://packages.python.org/Markdown/)
     52 
     53 """
     54 
     55 from __future__ import absolute_import
     56 from __future__ import unicode_literals
     57 from . import Extension
     58 from ..inlinepatterns import SubstituteTagPattern
     59 
     60 BR_RE = r'\n'
     61 
     62 class Nl2BrExtension(Extension):
     63 
     64     def extendMarkdown(self, md, md_globals):
     65         br_tag = SubstituteTagPattern(BR_RE, 'br')
     66         md.inlinePatterns.add('nl', br_tag, '_end')
     67 
     68 
     69 def makeExtension(configs=None):
     70     return Nl2BrExtension(configs)
     71