Ticket #14288: 14288.linebreaksbr-normalized-newlines.diff

File 14288.linebreaksbr-normalized-newlines.diff, 1.9 KB (added by Julien Phalip, 8 years ago)
  • django/template/defaultfilters.py

    diff --git a/django/template/defaultfilters.py b/django/template/defaultfilters.py
    index 60fa59e..5c9e0f7 100644
    a b def linebreaksbr(value, autoescape=None): 
    414414    Converts all newlines in a piece of plain text to HTML line breaks
    415415    (``<br />``).
    416416    """
    417     if autoescape and not isinstance(value, SafeData):
     417    autoescape = autoescape and not isinstance(value, SafeData)
     418    value = re.sub(r'\r\n|\r|\n', '\n', force_unicode(value)) # normalize newlines
     419    if autoescape:
    418420        from django.utils.html import escape
    419421        value = escape(value)
    420422    return mark_safe(value.replace('\n', '<br />'))
  • tests/regressiontests/defaultfilters/tests.py

    diff --git a/tests/regressiontests/defaultfilters/tests.py b/tests/regressiontests/defaultfilters/tests.py
    index 77bd2ba..b471205 100644
    a b class DefaultFiltersTests(TestCase): 
    266266        self.assertEqual(linebreaks(u'line 1'), u'<p>line 1</p>')
    267267        self.assertEqual(linebreaks(u'line 1\nline 2'),
    268268                          u'<p>line 1<br />line 2</p>')
     269        self.assertEqual(linebreaks(u'line 1\rline 2'),
     270                          u'<p>line 1<br />line 2</p>')
     271        self.assertEqual(linebreaks(u'line 1\r\nline 2'),
     272                          u'<p>line 1<br />line 2</p>')
     273   
     274    def test_linebreaksbr(self):
     275        self.assertEqual(linebreaksbr(u'line 1\nline 2'),
     276                          u'line 1<br />line 2')
     277        self.assertEqual(linebreaksbr(u'line 1\rline 2'),
     278                          u'line 1<br />line 2')
     279        self.assertEqual(linebreaksbr(u'line 1\r\nline 2'),
     280                          u'line 1<br />line 2')
    269281
    270282    def test_removetags(self):
    271283        self.assertEqual(removetags(u'some <b>html</b> with <script>alert'\
Back to Top