drawBorder.js
  1  "use strict";
  2  Object.defineProperty(exports, "__esModule", { value: true });
  3  exports.drawBorderTop = exports.drawBorderJoin = exports.drawBorderBottom = exports.drawBorder = exports.createTableBorderGetter = void 0;
  4  const drawContent_1 = require("./drawContent");
  5  const drawBorder = (columnWidths, config) => {
  6      const { separator, drawVerticalLine } = config;
  7      const columns = columnWidths.map((size) => {
  8          return config.separator.body.repeat(size);
  9      });
 10      return drawContent_1.drawContent(columns, {
 11          drawSeparator: drawVerticalLine,
 12          separatorGetter: (index, columnCount) => {
 13              if (index === 0) {
 14                  return separator.left;
 15              }
 16              if (index === columnCount) {
 17                  return separator.right;
 18              }
 19              return separator.join;
 20          },
 21      }) + '\n';
 22  };
 23  exports.drawBorder = drawBorder;
 24  const drawBorderTop = (columnWidths, config) => {
 25      const result = drawBorder(columnWidths, {
 26          ...config,
 27          separator: {
 28              body: config.border.topBody,
 29              join: config.border.topJoin,
 30              left: config.border.topLeft,
 31              right: config.border.topRight,
 32          },
 33      });
 34      if (result === '\n') {
 35          return '';
 36      }
 37      return result;
 38  };
 39  exports.drawBorderTop = drawBorderTop;
 40  const drawBorderJoin = (columnWidths, config) => {
 41      return drawBorder(columnWidths, {
 42          ...config,
 43          separator: {
 44              body: config.border.joinBody,
 45              join: config.border.joinJoin,
 46              left: config.border.joinLeft,
 47              right: config.border.joinRight,
 48          },
 49      });
 50  };
 51  exports.drawBorderJoin = drawBorderJoin;
 52  const drawBorderBottom = (columnWidths, config) => {
 53      return drawBorder(columnWidths, {
 54          ...config,
 55          separator: {
 56              body: config.border.bottomBody,
 57              join: config.border.bottomJoin,
 58              left: config.border.bottomLeft,
 59              right: config.border.bottomRight,
 60          },
 61      });
 62  };
 63  exports.drawBorderBottom = drawBorderBottom;
 64  const createTableBorderGetter = (columnWidths, config) => {
 65      return (index, size) => {
 66          if (!config.header) {
 67              if (index === 0) {
 68                  return drawBorderTop(columnWidths, config);
 69              }
 70              if (index === size) {
 71                  return drawBorderBottom(columnWidths, config);
 72              }
 73              return drawBorderJoin(columnWidths, config);
 74          }
 75          // Deal with the header
 76          if (index === 0) {
 77              return drawBorderTop(columnWidths, {
 78                  ...config,
 79                  border: {
 80                      ...config.border,
 81                      topJoin: config.border.topBody,
 82                  },
 83              });
 84          }
 85          if (index === 1) {
 86              return drawBorderJoin(columnWidths, {
 87                  ...config,
 88                  border: {
 89                      ...config.border,
 90                      joinJoin: config.border.headerJoin,
 91                  },
 92              });
 93          }
 94          if (index === size) {
 95              return drawBorderBottom(columnWidths, config);
 96          }
 97          return drawBorderJoin(columnWidths, config);
 98      };
 99  };
100  exports.createTableBorderGetter = createTableBorderGetter;