Line break retention in simple_format

There are quite a lot of line break issues with Rails on StackOverflow
and
the web in general. A lot of solutions are ugly and a lot modify
simple_format so I’ve created a patch that I’d like to hear thoughts on
before submitting a PR.

I’ve made a slight modification to split_paragraphs and how it gsubs the
newline characters in paragraphs up so that if you pass it a line
option,
instead of getting rid of all newlines and return carriage characters,
it
can substitute \r\n for an html break element.

This way if a saved chunk of text is the following then it won’t be
stripped down to just the 2 lines of text but will have the
tags
that were obviously intended:

“\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nBig
gap.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nPlease.”

This doesn’t affect the regular behaviour of simple_format and will
still
return the usual result without the option.

I find that this isn’t an edge case but is frequent enough to warrant
this
and not have people overriding simple_format and split_paragraphs in
their
application helper.

Thoughts?

simpleton wrote in post #1118613:

There are quite a lot of line break issues with Rails on StackOverflow
and
the web in general. A lot of solutions are ugly and a lot modify
simple_format so I’ve created a patch that I’d like to hear thoughts on
before submitting a PR.

There are a lot of questions about this on Stack Overflow because a lot
of people don’t understand the basic rules of HTML. That’s not the fault
of simple_format, which IMHO works exactly as expected and intended.

I’ve made a slight modification to split_paragraphs and how it gsubs the
newline characters in paragraphs up so that if you pass it a line
option,
instead of getting rid of all newlines and return carriage characters,
it
can substitute \r\n for an html break element.

I’m not familiar with split_paragraphs, and I don’t see it listed when
searching the Rails documentation, but my guess it that it also works as
expected and intended.

This way if a saved chunk of text is the following then it won’t be
stripped down to just the 2 lines of text but will have the
tags
that were obviously intended:

“\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nBig
gap.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nPlease.”

But, that is the expected results for HTML to normalize white space into
a single character. Changing this behavior would be unexpected and
unintended, again IMHO.

This doesn’t affect the regular behaviour of simple_format and will
still
return the usual result without the option.

I find that this isn’t an edge case but is frequent enough to warrant
this
and not have people overriding simple_format and split_paragraphs in
their
application helper.

I think any behavior change to these helpers should be left up to the
individual developers to put into their own helper libraries. I don’t
see a place for this in Rails itself. The simple_format helper already
works as anyone who truly understands HTML expects it to work.

P.S. The proper line ending character is \n (stupid Windows…). That
was a jest… sort of.