|
123456789101112131415161718192021222324252627282930313233343536373839 |
- 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;
- };
|