Rails's built-in HTML sanitizer (which uses the gem Loofah) adds newlines between <ul>
and <li>
tags. I want to display the sanitized content with white-space: pre-wrap;
because it comes from a WYSIWYG editor, but the extra newlines make the output look wrong. Desired on top, actual on bottom, with background color added to ul
for emphasis:
Here's what happens when I run some code through the sanitize
in the rails console:
2.2.2 :033 > input = "<ul><li>a</li><li>b</li></ul>"
=> "<ul><li>a</li><li>b</li></ul>"
2.2.2 :034 > WhiteListSanitizer.new.sanitize(input)
=> "<ul>\n<li>a</li>\n<li>b</li>\n</ul>"
And if I make a Loofah object and convert it to html without scrubbing, it still adds newlines.
2.2.2 :035 > Loofah.fragment(input).to_html
=> "<ul>\n<li>a</li>\n<li>b</li>\n</ul>"
How do I make it leave the whitespace alone?
I can strip out the line breaks with regex if absolutely necessary but it seems strange that there's no option to disable this behavior.