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