discourse/app/assets/javascripts/pretty-text/engines/discourse-markdown/newline.js.es6

28 lines
925 B
JavaScript

// Support for the newline behavior in markdown that most expect. Look through all text nodes
// in the tree, replace any new lines with `br`s.
export function setup(helper) {
helper.postProcessText((text, event) => {
const { options, insideCounts } = event;
if (options.traditionalMarkdownLinebreaks || (insideCounts.pre > 0)) { return; }
if (text === "\n") {
// If the tag is just a new line, replace it with a `<br>`
return [['br']];
} else {
// If the text node contains new lines, perhaps with text between them, insert the
// `<br>` tags.
const split = text.split(/\n+/);
if (split.length) {
const replacement = [];
for (var i=0; i<split.length; i++) {
if (split[i].length > 0) { replacement.push(split[i]); }
if (i !== split.length-1) { replacement.push(['br']); }
}
return replacement;
}
}
});
}