Added test to ensure that release notes are parsed properly Updated to latest dependencies to fix security vulnerability Updated GH Actions Workflow to run test before updating tag Updated README.md to reflect proper whatsnew documentation.
28 lines
824 B
JavaScript
28 lines
824 B
JavaScript
'use strict';
|
|
|
|
/**
|
|
* @param {string} msg The message to wrap
|
|
* @param {object} [opts]
|
|
* @param {number|string} [opts.margin] Left margin
|
|
* @param {number} [opts.width] Maximum characters per line including the margin
|
|
*/
|
|
module.exports = (msg, opts = {}) => {
|
|
const tab = Number.isSafeInteger(parseInt(opts.margin))
|
|
? new Array(parseInt(opts.margin)).fill(' ').join('')
|
|
: (opts.margin || '');
|
|
|
|
const width = opts.width || process.stdout.columns;
|
|
|
|
return (msg || '').split(/\r?\n/g)
|
|
.map(line => line
|
|
.split(/\s+/g)
|
|
.reduce((arr, w) => {
|
|
if (w.length + tab.length >= width || arr[arr.length - 1].length + w.length + 1 < width)
|
|
arr[arr.length - 1] += ` ${w}`;
|
|
else arr.push(`${tab}${w}`);
|
|
return arr;
|
|
}, [ tab ])
|
|
.join('\n'))
|
|
.join('\n');
|
|
};
|