Hey, I don't know if it's ready, but I don't follow your changes here.

* why do we keep `<br>`?
* what about `'\n'` in input?
* what about successive spaces?

Why can't we just do a basic string replace on `item` ? Something like:

```javascript
item.replace(/ (?= )/g, '&nbsp;').split('\n').forEach(function(line) {
  fragment.appendChild(document.createTextNode(line));
  fragment.appendChild(document.createElement('br'));
});
fragment.lastElementChild.remove();
```