minimal adjustments
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / table / dist / drawBorder.js.flow
1 /**
2  * @typedef drawBorder~parts
3  * @property {string} left
4  * @property {string} right
5  * @property {string} body
6  * @property {string} join
7  */
8
9 /**
10  * @param {number[]} columnSizeIndex
11  * @param {drawBorder~parts} parts
12  * @returns {string}
13  */
14 const drawBorder = (columnSizeIndex, parts) => {
15   const columns = columnSizeIndex
16     .map((size) => {
17       return parts.body.repeat(size);
18     })
19     .join(parts.join);
20
21   return parts.left + columns + parts.right + '\n';
22 };
23
24 /**
25  * @typedef drawBorderTop~parts
26  * @property {string} topLeft
27  * @property {string} topRight
28  * @property {string} topBody
29  * @property {string} topJoin
30  */
31
32 /**
33  * @param {number[]} columnSizeIndex
34  * @param {drawBorderTop~parts} parts
35  * @returns {string}
36  */
37 const drawBorderTop = (columnSizeIndex, parts) => {
38   const border = drawBorder(columnSizeIndex, {
39     body: parts.topBody,
40     join: parts.topJoin,
41     left: parts.topLeft,
42     right: parts.topRight,
43   });
44
45   if (border === '\n') {
46     return '';
47   }
48
49   return border;
50 };
51
52 /**
53  * @typedef drawBorderJoin~parts
54  * @property {string} joinLeft
55  * @property {string} joinRight
56  * @property {string} joinBody
57  * @property {string} joinJoin
58  */
59
60 /**
61  * @param {number[]} columnSizeIndex
62  * @param {drawBorderJoin~parts} parts
63  * @returns {string}
64  */
65 const drawBorderJoin = (columnSizeIndex, parts) => {
66   return drawBorder(columnSizeIndex, {
67     body: parts.joinBody,
68     join: parts.joinJoin,
69     left: parts.joinLeft,
70     right: parts.joinRight,
71   });
72 };
73
74 /**
75  * @typedef drawBorderBottom~parts
76  * @property {string} topLeft
77  * @property {string} topRight
78  * @property {string} topBody
79  * @property {string} topJoin
80  */
81
82 /**
83  * @param {number[]} columnSizeIndex
84  * @param {drawBorderBottom~parts} parts
85  * @returns {string}
86  */
87 const drawBorderBottom = (columnSizeIndex, parts) => {
88   return drawBorder(columnSizeIndex, {
89     body: parts.bottomBody,
90     join: parts.bottomJoin,
91     left: parts.bottomLeft,
92     right: parts.bottomRight,
93   });
94 };
95
96 export {
97   drawBorder,
98   drawBorderBottom,
99   drawBorderJoin,
100   drawBorderTop,
101 };