You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

drawBorder.js 2.1 KiB

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