Nunjucks nl2br does not exist?

2.9k Views Asked by At

I need a filter like the Jinja "nl2br", but in the Nunjucks. In the documentation are a mention (https://mozilla.github.io/nunjucks/templating.html), but I searched it in the nunjucks code (https://github.com/mozilla/nunjucks/blob/master/src/filters.js) and it does not exist.

Somebody knows how to solve it with a equivalent filter or another solution? Or I need to create the filter?

2

There are 2 best solutions below

2
On

Nunjucks has built-in escaping. If you set {autoescape: true} when settings up Nunjucks, then you don't need to do anything. Otherwise, you can use the escape filter.

If you just want to escape newlines, then do this:

env.addFilter('nl2br', function(str) {
    return str.replace(/\r|\n|\r\n/g, '<br />')
})

and use the newly created nl2br filter.

Note: env is your Nunjucks environment.

0
On

There is now a nl2br filter in nunjucks (see the documentation)

So i've yout got some unsafe text, but you still want to have new lines changed to <br/> tags, you can use the following example for the docs

{{ "foo\nbar" | striptags(true) | escape | nl2br }}

which will output

foo<br />\nbar

and be displayed as

foo
bar