@swnat/ckeditor-custom-build
Version:
The development environment of CKEditor 5 – the best browser-based rich text editor.
41 lines (35 loc) • 1.2 kB
JavaScript
/**
* @license Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
/**
* @module clipboard/utils/plaintexttohtml
*/
/**
* Converts plain text to its HTML-ized version.
*
* @param {String} text The plain text to convert.
* @returns {String} HTML generated from the plain text.
*/
export default function plainTextToHtml( text ) {
text = text
// Encode <>.
.replace( /</g, '<' )
.replace( />/g, '>' )
// Creates a paragraph for each double line break.
.replace( /\r?\n\r?\n/g, '</p><p>' )
// Creates a line break for each single line break.
.replace( /\r?\n/g, '<br>' )
// Preserve trailing spaces (only the first and last one – the rest is handled below).
.replace( /^\s/, ' ' )
.replace( /\s$/, ' ' )
// Preserve other subsequent spaces now.
.replace( /\s\s/g, ' ' );
if ( text.includes( '</p><p>' ) || text.includes( '<br>' ) ) {
// If we created paragraphs above, add the trailing ones.
text = `<p>${ text }</p>`;
}
// TODO:
// * What about '\nfoo' vs ' foo'?
return text;
}