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""" 34NL2BR Extension 35=============== 36 37A Python-Markdown extension to treat newlines as hard breaks; like 38GitHub-flavored Markdown does. 39 40Usage: 41 42 >>> import markdown 43 >>> print markdown.markdown('line 1\\nline 2', extensions=['nl2br']) 44 <p>line 1<br /> 45 line 2</p> 46 47Copyright 2011 [Brian Neal](http://deathofagremmie.com/) 48 49Dependencies: 50* [Python 2.4+](http://python.org) 51* [Markdown 2.1+](http://packages.python.org/Markdown/) 52 53""" 54 55from __future__ import absolute_import 56from __future__ import unicode_literals 57from . import Extension 58from ..inlinepatterns import SubstituteTagPattern 59 60BR_RE = r'\n' 61 62class 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 69def makeExtension(configs=None): 70 return Nl2BrExtension(configs) 71