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