I am still not that familiar with the Jade template engine. Is there a way to convert the new lines such as \n to br tags and at the same time keep the other content encoded?
For example
.replace(/\n/g,'</br>')
applied over the encoded value should do the work. However I am not sure how to encode the value and get the result. Is there any helper for this?
You can use jades escape method and replace the linebreaks in the return value of that like so:
p !{escape(foo).replace(/\n/g, '<br/>')}
I am not aware of any built-in functionality for your use case.
if you don't exactly need <br>, you can simply put your text within <pre> tag. All whitespaces (including new lines) will be displayed as typed.
Or you could set css rule white-space: pre to preserve whitespace preformatting. Check MDN on this.
escape method, even converts simple space (' ') characters to "%20".
MDN says escape is deprecated and it is meant for encoding strings in url, not html content. Another solution,
each line in foo.split(/\n/)
= line
br
You can do that simple:
p !{someString.replace(/\n/g, '<br/>')}
Note that this method will correctly escape string.