You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import slice from 'slice-ansi'; import stringWidth from 'string-width';
/** * @param {string} input * @param {number} size * @returns {Array} */ export default (input, size) => { let subject;
subject = input;
const chunks = [];
// https://regex101.com/r/gY5kZ1/1 const re = new RegExp('(^.{1,' + size + '}(\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\|/|_|\\.|,|;|-))');
do { let chunk;
chunk = subject.match(re);
if (chunk) { chunk = chunk[0];
subject = slice(subject, stringWidth(chunk));
chunk = chunk.trim(); } else { chunk = slice(subject, 0, size); subject = slice(subject, size); }
chunks.push(chunk); } while (stringWidth(subject));
return chunks; };
|