| /** |
| * @typedef drawBorder~parts |
| * @property {string} left |
| * @property {string} right |
| * @property {string} body |
| * @property {string} join |
| */ |
| |
| /** |
| * @param {number[]} columnSizeIndex |
| * @param {drawBorder~parts} parts |
| * @returns {string} |
| */ |
| const drawBorder = (columnSizeIndex, parts) => { |
| const columns = columnSizeIndex |
| .map((size) => { |
| return parts.body.repeat(size); |
| }) |
| .join(parts.join); |
| |
| return parts.left + columns + parts.right + '\n'; |
| }; |
| |
| /** |
| * @typedef drawBorderTop~parts |
| * @property {string} topLeft |
| * @property {string} topRight |
| * @property {string} topBody |
| * @property {string} topJoin |
| */ |
| |
| /** |
| * @param {number[]} columnSizeIndex |
| * @param {drawBorderTop~parts} parts |
| * @returns {string} |
| */ |
| const drawBorderTop = (columnSizeIndex, parts) => { |
| const border = drawBorder(columnSizeIndex, { |
| body: parts.topBody, |
| join: parts.topJoin, |
| left: parts.topLeft, |
| right: parts.topRight |
| }); |
| |
| if (border === '\n') { |
| return ''; |
| } |
| |
| return border; |
| }; |
| |
| /** |
| * @typedef drawBorderJoin~parts |
| * @property {string} joinLeft |
| * @property {string} joinRight |
| * @property {string} joinBody |
| * @property {string} joinJoin |
| */ |
| |
| /** |
| * @param {number[]} columnSizeIndex |
| * @param {drawBorderJoin~parts} parts |
| * @returns {string} |
| */ |
| const drawBorderJoin = (columnSizeIndex, parts) => { |
| return drawBorder(columnSizeIndex, { |
| body: parts.joinBody, |
| join: parts.joinJoin, |
| left: parts.joinLeft, |
| right: parts.joinRight |
| }); |
| }; |
| |
| /** |
| * @typedef drawBorderBottom~parts |
| * @property {string} topLeft |
| * @property {string} topRight |
| * @property {string} topBody |
| * @property {string} topJoin |
| */ |
| |
| /** |
| * @param {number[]} columnSizeIndex |
| * @param {drawBorderBottom~parts} parts |
| * @returns {string} |
| */ |
| const drawBorderBottom = (columnSizeIndex, parts) => { |
| return drawBorder(columnSizeIndex, { |
| body: parts.bottomBody, |
| join: parts.bottomJoin, |
| left: parts.bottomLeft, |
| right: parts.bottomRight |
| }); |
| }; |
| |
| export { |
| drawBorder, |
| drawBorderBottom, |
| drawBorderJoin, |
| drawBorderTop |
| }; |