minimal adjustments
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / table / dist / wrapCell.js.flow
1 import wrapString from './wrapString';
2 import wrapWord from './wrapWord';
3
4 /**
5  * Wrap a single cell value into a list of lines
6  *
7  * Always wraps on newlines, for the remainder uses either word or string wrapping
8  * depending on user configuration.
9  *
10  * @param {string} cellValue
11  * @param {number} columnWidth
12  * @param {boolean} useWrapWord
13  * @returns {Array}
14  */
15 export default (cellValue, columnWidth, useWrapWord) => {
16   // First split on literal newlines
17   const cellLines = cellValue.split('\n');
18
19   // Then iterate over the list and word-wrap every remaining line if necessary.
20   for (let lineNr = 0; lineNr < cellLines.length;) {
21     let lineChunks;
22
23     if (useWrapWord) {
24       lineChunks = wrapWord(cellLines[lineNr], columnWidth);
25     } else {
26       lineChunks = wrapString(cellLines[lineNr], columnWidth);
27     }
28
29     // Replace our original array element with whatever the wrapping returned
30     cellLines.splice(lineNr, 1, ...lineChunks);
31     lineNr += lineChunks.length;
32   }
33
34   return cellLines;
35 };