strpad.js 965 B

123456789101112131415161718192021222324252627282930313233343536
  1. function strpad(data, opts) {
  2. var max = 0;
  3. opts = opts || {};
  4. opts.marginLeft = opts.marginLeft || 0;
  5. opts.marginRight = opts.marginRight || 0;
  6. opts.padFnc = opts.padFnc || String.prototype.padEnd;
  7. data.forEach(i => {
  8. max = Math.max(i.length, max);
  9. });
  10. return data.map(i => {
  11. i = opts.padFnc.call(i, max);
  12. if (opts.marginLeft)
  13. i = (" ".repeat(opts.marginLeft)) +i;
  14. if (opts.marginRight)
  15. i = i +(" ".repeat(opts.marginRight));
  16. return i;
  17. });
  18. }
  19. function arrayPad(arr, opts) {
  20. var padded = [];
  21. for (var i =0, len = arr[0].length; i < len; ++i)
  22. padded.push(strpad(arr.map(arrItem => arrItem[i]), opts ? opts[i] : {}));
  23. var result = [];
  24. for (var i =0, len = padded[0].length; i < len; ++i)
  25. result.push(padded.map(arrItem => arrItem[i]).join(" "));
  26. return result;
  27. }
  28. module.exports = {
  29. arrayPad: arrayPad,
  30. strpad: strpad
  31. };