minimal adjustments
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / table / dist / wrapWord.js.flow
1 import slice from 'slice-ansi';
2 import stringWidth from 'string-width';
3
4 /**
5  * @param {string} input
6  * @param {number} size
7  * @returns {Array}
8  */
9 export default (input, size) => {
10   let subject;
11
12   subject = input;
13
14   const chunks = [];
15
16   // https://regex101.com/r/gY5kZ1/1
17   const re = new RegExp('(^.{1,' + size + '}(\\s+|$))|(^.{1,' + (size - 1) + '}(\\\\|/|_|\\.|,|;|-))');
18
19   do {
20     let chunk;
21
22     chunk = subject.match(re);
23
24     if (chunk) {
25       chunk = chunk[0];
26
27       subject = slice(subject, stringWidth(chunk));
28
29       chunk = chunk.trim();
30     } else {
31       chunk = slice(subject, 0, size);
32       subject = slice(subject, size);
33     }
34
35     chunks.push(chunk);
36   } while (stringWidth(subject));
37
38   return chunks;
39 };