Login

Convert newlines into <p> and </p> tags

Author:
jheasly
Posted:
March 29, 2007
Language:
Python
Version:
.96
Tags:
filter
Score:
1 (after 1 ratings)

Based upon (i.e., mostly lifted from) the built-in "linebreaks" and "linebreaksbr" filters, this one works as they do:

{{ object.text|paragraphs }}

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from django.template import Library, Node
from django.template.defaultfilters import stringfilter
import re

register = Library()

def paragraphs(value):
    """
    Turns paragraphs delineated with newline characters into
    paragraphs wrapped in <p> and </p> HTML tags.
    """
    paras = re.split(r'[\r\n]+', value)
    paras = ['<p>%s</p>' % p.strip() for p in paras]
    return '\n'.join(paras)
paragraphs = stringfilter(paragraphs)

register.filter(paragraphs)

More like this

Comments

Archatas (on March 30, 2007):

I would simplify

value = re.sub(r'\r\n|\r|\n', '\n', value) # normalize newlines
paras = re.split('\n', value)

to

paras = re.split(r'[\r\n]+', value)

#

jheasly (on April 9, 2007):

@Archatas,

Good suggestion. Thanks!

  • jheasly

#

kernel32ddl (on June 23, 2011):

buit-in tag in Django: linebreaks

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#linebreaks

#

kernel32ddl (on June 23, 2011):

Oh, sorry this tag add <br> into

#

Please login first before commenting.