drawBorder.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.drawBorderTop = exports.drawBorderJoin = exports.drawBorderBottom = exports.drawBorder = undefined;
  6. var _lodash = require('lodash');
  7. var _lodash2 = _interopRequireDefault(_lodash);
  8. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  9. /**
  10. * @typedef drawBorder~parts
  11. * @property {string} left
  12. * @property {string} right
  13. * @property {string} body
  14. * @property {string} join
  15. */
  16. /**
  17. * @param {number[]} columnSizeIndex
  18. * @param {drawBorder~parts} parts
  19. * @returns {string}
  20. */
  21. const drawBorder = (columnSizeIndex, parts) => {
  22. const columns = _lodash2.default.map(columnSizeIndex, size => {
  23. return _lodash2.default.repeat(parts.body, size);
  24. }).join(parts.join);
  25. return parts.left + columns + parts.right + '\n';
  26. };
  27. /**
  28. * @typedef drawBorderTop~parts
  29. * @property {string} topLeft
  30. * @property {string} topRight
  31. * @property {string} topBody
  32. * @property {string} topJoin
  33. */
  34. /**
  35. * @param {number[]} columnSizeIndex
  36. * @param {drawBorderTop~parts} parts
  37. * @returns {string}
  38. */
  39. const drawBorderTop = (columnSizeIndex, parts) => {
  40. return drawBorder(columnSizeIndex, {
  41. body: parts.topBody,
  42. join: parts.topJoin,
  43. left: parts.topLeft,
  44. right: parts.topRight
  45. });
  46. };
  47. /**
  48. * @typedef drawBorderJoin~parts
  49. * @property {string} joinLeft
  50. * @property {string} joinRight
  51. * @property {string} joinBody
  52. * @property {string} joinJoin
  53. */
  54. /**
  55. * @param {number[]} columnSizeIndex
  56. * @param {drawBorderJoin~parts} parts
  57. * @returns {string}
  58. */
  59. const drawBorderJoin = (columnSizeIndex, parts) => {
  60. return drawBorder(columnSizeIndex, {
  61. body: parts.joinBody,
  62. join: parts.joinJoin,
  63. left: parts.joinLeft,
  64. right: parts.joinRight
  65. });
  66. };
  67. /**
  68. * @typedef drawBorderBottom~parts
  69. * @property {string} topLeft
  70. * @property {string} topRight
  71. * @property {string} topBody
  72. * @property {string} topJoin
  73. */
  74. /**
  75. * @param {number[]} columnSizeIndex
  76. * @param {drawBorderBottom~parts} parts
  77. * @returns {string}
  78. */
  79. const drawBorderBottom = (columnSizeIndex, parts) => {
  80. return drawBorder(columnSizeIndex, {
  81. body: parts.bottomBody,
  82. join: parts.bottomJoin,
  83. left: parts.bottomLeft,
  84. right: parts.bottomRight
  85. });
  86. };
  87. exports.drawBorder = drawBorder;
  88. exports.drawBorderBottom = drawBorderBottom;
  89. exports.drawBorderJoin = drawBorderJoin;
  90. exports.drawBorderTop = drawBorderTop;