1234567891011121314151617181920212223242526272829303132333435 |
- import wrapString from './wrapString';
- import wrapWord from './wrapWord';
- /**
- * Wrap a single cell value into a list of lines
- *
- * Always wraps on newlines, for the remainder uses either word or string wrapping
- * depending on user configuration.
- *
- * @param {string} cellValue
- * @param {number} columnWidth
- * @param {boolean} useWrapWord
- * @returns {Array}
- */
- export default (cellValue, columnWidth, useWrapWord) => {
- // First split on literal newlines
- const cellLines = cellValue.split('\n');
- // Then iterate over the list and word-wrap every remaining line if necessary.
- for (let lineNr = 0; lineNr < cellLines.length;) {
- let lineChunks;
- if (useWrapWord) {
- lineChunks = wrapWord(cellLines[lineNr], columnWidth);
- } else {
- lineChunks = wrapString(cellLines[lineNr], columnWidth);
- }
- // Replace our original array element with whatever the wrapping returned
- cellLines.splice(lineNr, 1, ...lineChunks);
- lineNr += lineChunks.length;
- }
- return cellLines;
- };
|