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.
101 lines
2.0 KiB
101 lines
2.0 KiB
/** |
|
* @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 |
|
};
|
|
|