function strpad(data, opts) { var max = 0; opts = opts || {}; opts.marginLeft = opts.marginLeft || 0; opts.marginRight = opts.marginRight || 0; opts.padFnc = opts.padFnc || String.prototype.padEnd; data.forEach(i => { max = Math.max(i.length, max); }); return data.map(i => { i = opts.padFnc.call(i, max); if (opts.marginLeft) i = (" ".repeat(opts.marginLeft)) +i; if (opts.marginRight) i = i +(" ".repeat(opts.marginRight)); return i; }); } function arrayPad(arr, opts) { var padded = []; for (var i =0, len = arr[0].length; i < len; ++i) padded.push(strpad(arr.map(arrItem => arrItem[i]), opts ? opts[i] : {})); var result = []; for (var i =0, len = padded[0].length; i < len; ++i) result.push(padded.map(arrItem => arrItem[i]).join(" ")); return result; } module.exports = { arrayPad: arrayPad, strpad: strpad };