table 4.0.3 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +10 -6
  3. package/dist/alignString.js +20 -20
  4. package/dist/alignString.js.flow +96 -0
  5. package/dist/alignString.js.map +1 -0
  6. package/dist/alignTableData.js +12 -11
  7. package/dist/alignTableData.js.flow +21 -0
  8. package/dist/alignTableData.js.map +1 -0
  9. package/dist/calculateCellHeight.js +14 -17
  10. package/dist/calculateCellHeight.js.flow +29 -0
  11. package/dist/calculateCellHeight.js.map +1 -0
  12. package/dist/calculateCellWidthIndex.js +10 -7
  13. package/dist/calculateCellWidthIndex.js.flow +13 -0
  14. package/dist/calculateCellWidthIndex.js.map +1 -0
  15. package/dist/calculateMaximumColumnWidthIndex.js +11 -11
  16. package/dist/calculateMaximumColumnWidthIndex.js.flow +27 -0
  17. package/dist/calculateMaximumColumnWidthIndex.js.map +1 -0
  18. package/dist/calculateRowHeightIndex.js +15 -19
  19. package/dist/calculateRowHeightIndex.js.flow +35 -0
  20. package/dist/calculateRowHeightIndex.js.map +1 -0
  21. package/dist/createStream.js +35 -68
  22. package/dist/createStream.js.flow +124 -0
  23. package/dist/createStream.js.map +1 -0
  24. package/dist/drawBorder.js +16 -8
  25. package/dist/drawBorder.js.flow +95 -0
  26. package/dist/drawBorder.js.map +1 -0
  27. package/dist/drawRow.js +8 -3
  28. package/dist/drawRow.js.flow +15 -0
  29. package/dist/drawRow.js.map +1 -0
  30. package/dist/drawTable.js +11 -12
  31. package/dist/drawTable.js.flow +52 -0
  32. package/dist/drawTable.js.map +1 -0
  33. package/dist/getBorderCharacters.js +8 -15
  34. package/dist/getBorderCharacters.js.flow +120 -0
  35. package/dist/getBorderCharacters.js.map +1 -0
  36. package/dist/index.js +23 -15
  37. package/dist/index.js.flow +9 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/makeConfig.js +21 -30
  40. package/dist/makeConfig.js.flow +72 -0
  41. package/dist/makeConfig.js.map +1 -0
  42. package/dist/makeStreamConfig.js +19 -27
  43. package/dist/makeStreamConfig.js.flow +83 -0
  44. package/dist/makeStreamConfig.js.map +1 -0
  45. package/dist/mapDataUsingRowHeightIndex.js +17 -22
  46. package/dist/mapDataUsingRowHeightIndex.js.flow +41 -0
  47. package/dist/mapDataUsingRowHeightIndex.js.map +1 -0
  48. package/dist/padTableData.js +8 -4
  49. package/dist/padTableData.js.flow +14 -0
  50. package/dist/padTableData.js.map +1 -0
  51. package/dist/schemas/config.json +1 -1
  52. package/dist/schemas/streamConfig.json +1 -1
  53. package/dist/stringifyTableData.js +7 -2
  54. package/dist/stringifyTableData.js.flow +11 -0
  55. package/dist/stringifyTableData.js.map +1 -0
  56. package/dist/table.js +29 -53
  57. package/dist/table.js.flow +95 -0
  58. package/dist/table.js.map +1 -0
  59. package/dist/truncateTableData.js +10 -7
  60. package/dist/truncateTableData.js.flow +17 -0
  61. package/dist/truncateTableData.js.map +1 -0
  62. package/dist/validateConfig.js +4 -5
  63. package/dist/validateConfig.js.flow +34 -0
  64. package/dist/validateConfig.js.map +1 -0
  65. package/dist/validateStreamConfig.js +4 -5
  66. package/dist/validateTableData.js +62 -15
  67. package/dist/validateTableData.js.flow +46 -0
  68. package/dist/validateTableData.js.map +1 -0
  69. package/dist/wrapString.js +13 -15
  70. package/dist/wrapString.js.flow +29 -0
  71. package/dist/wrapString.js.map +1 -0
  72. package/dist/wrapWord.js +15 -20
  73. package/dist/wrapWord.js.flow +39 -0
  74. package/dist/wrapWord.js.map +1 -0
  75. package/package.json +42 -30
@@ -0,0 +1,35 @@
1
+ import _ from 'lodash';
2
+ import calculateCellHeight from './calculateCellHeight';
3
+
4
+ /**
5
+ * Calculates the vertical row span index.
6
+ *
7
+ * @param {Array[]} rows
8
+ * @param {Object} config
9
+ * @returns {number[]}
10
+ */
11
+ export default (rows, config) => {
12
+ const tableWidth = rows[0].length;
13
+
14
+ const rowSpanIndex = [];
15
+
16
+ rows.forEach((cells) => {
17
+ const cellHeightIndex = new Array(tableWidth).fill(1);
18
+
19
+ cells.forEach((value, index1) => {
20
+ if (!_.isNumber(config.columns[index1].width)) {
21
+ throw new TypeError('column[index].width must be a number.');
22
+ }
23
+
24
+ if (!_.isBoolean(config.columns[index1].wrapWord)) {
25
+ throw new TypeError('column[index].wrapWord must be a boolean.');
26
+ }
27
+
28
+ cellHeightIndex[index1] = calculateCellHeight(value, config.columns[index1].width, config.columns[index1].wrapWord);
29
+ });
30
+
31
+ rowSpanIndex.push(_.max(cellHeightIndex));
32
+ });
33
+
34
+ return rowSpanIndex;
35
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/calculateRowHeightIndex.js"],"names":["rows","config","tableWidth","length","rowSpanIndex","forEach","cells","cellHeightIndex","Array","fill","value","index1","_","isNumber","columns","width","TypeError","isBoolean","wrapWord","push","max"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEA;;;;;;;iCAOgBA,I,EAAMC,M,KAAW;AAC/B,QAAMC,UAAU,GAAGF,IAAI,CAAC,CAAD,CAAJ,CAAQG,MAA3B;AAEA,QAAMC,YAAY,GAAG,EAArB;AAEAJ,EAAAA,IAAI,CAACK,OAAL,CAAcC,KAAD,IAAW;AACtB,UAAMC,eAAe,GAAG,IAAIC,KAAJ,CAAUN,UAAV,EAAsBO,IAAtB,CAA2B,CAA3B,CAAxB;AAEAH,IAAAA,KAAK,CAACD,OAAN,CAAc,CAACK,KAAD,EAAQC,MAAR,KAAmB;AAC/B,UAAI,CAACC,gBAAEC,QAAF,CAAWZ,MAAM,CAACa,OAAP,CAAeH,MAAf,EAAuBI,KAAlC,CAAL,EAA+C;AAC7C,cAAM,IAAIC,SAAJ,CAAc,uCAAd,CAAN;AACD;;AAED,UAAI,CAACJ,gBAAEK,SAAF,CAAYhB,MAAM,CAACa,OAAP,CAAeH,MAAf,EAAuBO,QAAnC,CAAL,EAAmD;AACjD,cAAM,IAAIF,SAAJ,CAAc,2CAAd,CAAN;AACD;;AAEDT,MAAAA,eAAe,CAACI,MAAD,CAAf,GAA0B,kCAAoBD,KAApB,EAA2BT,MAAM,CAACa,OAAP,CAAeH,MAAf,EAAuBI,KAAlD,EAAyDd,MAAM,CAACa,OAAP,CAAeH,MAAf,EAAuBO,QAAhF,CAA1B;AACD,KAVD;AAYAd,IAAAA,YAAY,CAACe,IAAb,CAAkBP,gBAAEQ,GAAF,CAAMb,eAAN,CAAlB;AACD,GAhBD;AAkBA,SAAOH,YAAP;AACD,C","sourcesContent":["import _ from 'lodash';\nimport calculateCellHeight from './calculateCellHeight';\n\n/**\n * Calculates the vertical row span index.\n *\n * @param {Array[]} rows\n * @param {Object} config\n * @returns {number[]}\n */\nexport default (rows, config) => {\n const tableWidth = rows[0].length;\n\n const rowSpanIndex = [];\n\n rows.forEach((cells) => {\n const cellHeightIndex = new Array(tableWidth).fill(1);\n\n cells.forEach((value, index1) => {\n if (!_.isNumber(config.columns[index1].width)) {\n throw new TypeError('column[index].width must be a number.');\n }\n\n if (!_.isBoolean(config.columns[index1].wrapWord)) {\n throw new TypeError('column[index].wrapWord must be a boolean.');\n }\n\n cellHeightIndex[index1] = calculateCellHeight(value, config.columns[index1].width, config.columns[index1].wrapWord);\n });\n\n rowSpanIndex.push(_.max(cellHeightIndex));\n });\n\n return rowSpanIndex;\n};\n"],"file":"calculateRowHeightIndex.js"}
@@ -1,46 +1,29 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _lodash = require('lodash');
8
+ var _lodash = _interopRequireDefault(require("lodash"));
8
9
 
9
- var _lodash2 = _interopRequireDefault(_lodash);
10
+ var _makeStreamConfig = _interopRequireDefault(require("./makeStreamConfig"));
10
11
 
11
- var _makeStreamConfig = require('./makeStreamConfig');
12
+ var _drawRow = _interopRequireDefault(require("./drawRow"));
12
13
 
13
- var _makeStreamConfig2 = _interopRequireDefault(_makeStreamConfig);
14
+ var _drawBorder = require("./drawBorder");
14
15
 
15
- var _drawRow = require('./drawRow');
16
+ var _stringifyTableData = _interopRequireDefault(require("./stringifyTableData"));
16
17
 
17
- var _drawRow2 = _interopRequireDefault(_drawRow);
18
+ var _truncateTableData = _interopRequireDefault(require("./truncateTableData"));
18
19
 
19
- var _drawBorder = require('./drawBorder');
20
+ var _mapDataUsingRowHeightIndex = _interopRequireDefault(require("./mapDataUsingRowHeightIndex"));
20
21
 
21
- var _stringifyTableData = require('./stringifyTableData');
22
+ var _alignTableData = _interopRequireDefault(require("./alignTableData"));
22
23
 
23
- var _stringifyTableData2 = _interopRequireDefault(_stringifyTableData);
24
+ var _padTableData = _interopRequireDefault(require("./padTableData"));
24
25
 
25
- var _truncateTableData = require('./truncateTableData');
26
-
27
- var _truncateTableData2 = _interopRequireDefault(_truncateTableData);
28
-
29
- var _mapDataUsingRowHeightIndex = require('./mapDataUsingRowHeightIndex');
30
-
31
- var _mapDataUsingRowHeightIndex2 = _interopRequireDefault(_mapDataUsingRowHeightIndex);
32
-
33
- var _alignTableData = require('./alignTableData');
34
-
35
- var _alignTableData2 = _interopRequireDefault(_alignTableData);
36
-
37
- var _padTableData = require('./padTableData');
38
-
39
- var _padTableData2 = _interopRequireDefault(_padTableData);
40
-
41
- var _calculateRowHeightIndex = require('./calculateRowHeightIndex');
42
-
43
- var _calculateRowHeightIndex2 = _interopRequireDefault(_calculateRowHeightIndex);
26
+ var _calculateRowHeightIndex = _interopRequireDefault(require("./calculateRowHeightIndex"));
44
27
 
45
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
46
29
 
@@ -51,90 +34,71 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
51
34
  */
52
35
  const prepareData = (data, config) => {
53
36
  let rows;
54
-
55
- rows = (0, _stringifyTableData2.default)(data);
56
-
57
- rows = (0, _truncateTableData2.default)(data, config);
58
-
59
- const rowHeightIndex = (0, _calculateRowHeightIndex2.default)(rows, config);
60
-
61
- rows = (0, _mapDataUsingRowHeightIndex2.default)(rows, rowHeightIndex, config);
62
- rows = (0, _alignTableData2.default)(rows, config);
63
- rows = (0, _padTableData2.default)(rows, config);
64
-
37
+ rows = (0, _stringifyTableData.default)(data);
38
+ rows = (0, _truncateTableData.default)(data, config);
39
+ const rowHeightIndex = (0, _calculateRowHeightIndex.default)(rows, config);
40
+ rows = (0, _mapDataUsingRowHeightIndex.default)(rows, rowHeightIndex, config);
41
+ rows = (0, _alignTableData.default)(rows, config);
42
+ rows = (0, _padTableData.default)(rows, config);
65
43
  return rows;
66
44
  };
67
-
68
45
  /**
69
46
  * @param {string[]} row
70
47
  * @param {number[]} columnWidthIndex
71
48
  * @param {Object} config
72
49
  * @returns {undefined}
73
50
  */
51
+
52
+
74
53
  const create = (row, columnWidthIndex, config) => {
75
54
  const rows = prepareData([row], config);
76
-
77
55
  const body = rows.map(literalRow => {
78
- return (0, _drawRow2.default)(literalRow, config.border);
56
+ return (0, _drawRow.default)(literalRow, config.border);
79
57
  }).join('');
80
-
81
58
  let output;
82
-
83
59
  output = '';
84
-
85
60
  output += (0, _drawBorder.drawBorderTop)(columnWidthIndex, config.border);
86
61
  output += body;
87
62
  output += (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border);
88
-
89
- output = _lodash2.default.trimEnd(output);
90
-
63
+ output = _lodash.default.trimEnd(output);
91
64
  process.stdout.write(output);
92
65
  };
93
-
94
66
  /**
95
67
  * @param {string[]} row
96
68
  * @param {number[]} columnWidthIndex
97
69
  * @param {Object} config
98
70
  * @returns {undefined}
99
71
  */
72
+
73
+
100
74
  const append = (row, columnWidthIndex, config) => {
101
75
  const rows = prepareData([row], config);
102
-
103
76
  const body = rows.map(literalRow => {
104
- return (0, _drawRow2.default)(literalRow, config.border);
77
+ return (0, _drawRow.default)(literalRow, config.border);
105
78
  }).join('');
106
-
107
79
  let output;
108
-
109
80
  output = '\r\u001B[K';
110
-
111
81
  output += (0, _drawBorder.drawBorderJoin)(columnWidthIndex, config.border);
112
82
  output += body;
113
83
  output += (0, _drawBorder.drawBorderBottom)(columnWidthIndex, config.border);
114
-
115
- output = _lodash2.default.trimEnd(output);
116
-
84
+ output = _lodash.default.trimEnd(output);
117
85
  process.stdout.write(output);
118
86
  };
119
-
120
87
  /**
121
88
  * @param {Object} userConfig
122
89
  * @returns {Object}
123
90
  */
124
91
 
125
- exports.default = function () {
126
- let userConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
127
92
 
128
- const config = (0, _makeStreamConfig2.default)(userConfig);
93
+ const createStream = (userConfig = {}) => {
94
+ const config = (0, _makeStreamConfig.default)(userConfig); // @todo Use 'Object.values' when Node.js v6 support is dropped.
129
95
 
130
- const columnWidthIndex = _lodash2.default.mapValues(config.columns, column => {
96
+ const columnWidthIndex = _lodash.default.values(_lodash.default.mapValues(config.columns, column => {
131
97
  return column.width + column.paddingLeft + column.paddingRight;
132
- });
98
+ }));
133
99
 
134
100
  let empty;
135
-
136
101
  empty = true;
137
-
138
102
  return {
139
103
  /**
140
104
  * @param {string[]} row
@@ -147,11 +111,14 @@ exports.default = function () {
147
111
 
148
112
  if (empty) {
149
113
  empty = false;
150
-
151
114
  return create(row, columnWidthIndex, config);
152
115
  } else {
153
116
  return append(row, columnWidthIndex, config);
154
117
  }
155
118
  }
156
119
  };
157
- };
120
+ };
121
+
122
+ var _default = createStream;
123
+ exports.default = _default;
124
+ //# sourceMappingURL=createStream.js.map
@@ -0,0 +1,124 @@
1
+ import _ from 'lodash';
2
+ import makeStreamConfig from './makeStreamConfig';
3
+ import drawRow from './drawRow';
4
+ import {
5
+ drawBorderBottom,
6
+ drawBorderJoin,
7
+ drawBorderTop
8
+ } from './drawBorder';
9
+ import stringifyTableData from './stringifyTableData';
10
+ import truncateTableData from './truncateTableData';
11
+ import mapDataUsingRowHeightIndex from './mapDataUsingRowHeightIndex';
12
+ import alignTableData from './alignTableData';
13
+ import padTableData from './padTableData';
14
+ import calculateRowHeightIndex from './calculateRowHeightIndex';
15
+
16
+ /**
17
+ * @param {Array} data
18
+ * @param {Object} config
19
+ * @returns {Array}
20
+ */
21
+ const prepareData = (data, config) => {
22
+ let rows;
23
+
24
+ rows = stringifyTableData(data);
25
+
26
+ rows = truncateTableData(data, config);
27
+
28
+ const rowHeightIndex = calculateRowHeightIndex(rows, config);
29
+
30
+ rows = mapDataUsingRowHeightIndex(rows, rowHeightIndex, config);
31
+ rows = alignTableData(rows, config);
32
+ rows = padTableData(rows, config);
33
+
34
+ return rows;
35
+ };
36
+
37
+ /**
38
+ * @param {string[]} row
39
+ * @param {number[]} columnWidthIndex
40
+ * @param {Object} config
41
+ * @returns {undefined}
42
+ */
43
+ const create = (row, columnWidthIndex, config) => {
44
+ const rows = prepareData([row], config);
45
+
46
+ const body = rows.map((literalRow) => {
47
+ return drawRow(literalRow, config.border);
48
+ }).join('');
49
+
50
+ let output;
51
+
52
+ output = '';
53
+
54
+ output += drawBorderTop(columnWidthIndex, config.border);
55
+ output += body;
56
+ output += drawBorderBottom(columnWidthIndex, config.border);
57
+
58
+ output = _.trimEnd(output);
59
+
60
+ process.stdout.write(output);
61
+ };
62
+
63
+ /**
64
+ * @param {string[]} row
65
+ * @param {number[]} columnWidthIndex
66
+ * @param {Object} config
67
+ * @returns {undefined}
68
+ */
69
+ const append = (row, columnWidthIndex, config) => {
70
+ const rows = prepareData([row], config);
71
+
72
+ const body = rows.map((literalRow) => {
73
+ return drawRow(literalRow, config.border);
74
+ }).join('');
75
+
76
+ let output;
77
+
78
+ output = '\r\u001B[K';
79
+
80
+ output += drawBorderJoin(columnWidthIndex, config.border);
81
+ output += body;
82
+ output += drawBorderBottom(columnWidthIndex, config.border);
83
+
84
+ output = _.trimEnd(output);
85
+
86
+ process.stdout.write(output);
87
+ };
88
+
89
+ /**
90
+ * @param {Object} userConfig
91
+ * @returns {Object}
92
+ */
93
+ export default (userConfig = {}) => {
94
+ const config = makeStreamConfig(userConfig);
95
+
96
+ // @todo Use 'Object.values' when Node.js v6 support is dropped.
97
+ const columnWidthIndex = _.values(_.mapValues(config.columns, (column) => {
98
+ return column.width + column.paddingLeft + column.paddingRight;
99
+ }));
100
+
101
+ let empty;
102
+
103
+ empty = true;
104
+
105
+ return {
106
+ /**
107
+ * @param {string[]} row
108
+ * @returns {undefined}
109
+ */
110
+ write: (row) => {
111
+ if (row.length !== config.columnCount) {
112
+ throw new Error('Row cell count does not match the config.columnCount.');
113
+ }
114
+
115
+ if (empty) {
116
+ empty = false;
117
+
118
+ return create(row, columnWidthIndex, config);
119
+ } else {
120
+ return append(row, columnWidthIndex, config);
121
+ }
122
+ }
123
+ };
124
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/createStream.js"],"names":["prepareData","data","config","rows","rowHeightIndex","create","row","columnWidthIndex","body","map","literalRow","border","join","output","_","trimEnd","process","stdout","write","append","userConfig","values","mapValues","columns","column","width","paddingLeft","paddingRight","empty","length","columnCount","Error"],"mappings":"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","sourcesContent":["import _ from 'lodash';\nimport makeStreamConfig from './makeStreamConfig';\nimport drawRow from './drawRow';\nimport {\n drawBorderBottom,\n drawBorderJoin,\n drawBorderTop\n} from './drawBorder';\nimport stringifyTableData from './stringifyTableData';\nimport truncateTableData from './truncateTableData';\nimport mapDataUsingRowHeightIndex from './mapDataUsingRowHeightIndex';\nimport alignTableData from './alignTableData';\nimport padTableData from './padTableData';\nimport calculateRowHeightIndex from './calculateRowHeightIndex';\n\n/**\n * @param {Array} data\n * @param {Object} config\n * @returns {Array}\n */\nconst prepareData = (data, config) => {\n let rows;\n\n rows = stringifyTableData(data);\n\n rows = truncateTableData(data, config);\n\n const rowHeightIndex = calculateRowHeightIndex(rows, config);\n\n rows = mapDataUsingRowHeightIndex(rows, rowHeightIndex, config);\n rows = alignTableData(rows, config);\n rows = padTableData(rows, config);\n\n return rows;\n};\n\n/**\n * @param {string[]} row\n * @param {number[]} columnWidthIndex\n * @param {Object} config\n * @returns {undefined}\n */\nconst create = (row, columnWidthIndex, config) => {\n const rows = prepareData([row], config);\n\n const body = rows.map((literalRow) => {\n return drawRow(literalRow, config.border);\n }).join('');\n\n let output;\n\n output = '';\n\n output += drawBorderTop(columnWidthIndex, config.border);\n output += body;\n output += drawBorderBottom(columnWidthIndex, config.border);\n\n output = _.trimEnd(output);\n\n process.stdout.write(output);\n};\n\n/**\n * @param {string[]} row\n * @param {number[]} columnWidthIndex\n * @param {Object} config\n * @returns {undefined}\n */\nconst append = (row, columnWidthIndex, config) => {\n const rows = prepareData([row], config);\n\n const body = rows.map((literalRow) => {\n return drawRow(literalRow, config.border);\n }).join('');\n\n let output;\n\n output = '\\r\\u001B[K';\n\n output += drawBorderJoin(columnWidthIndex, config.border);\n output += body;\n output += drawBorderBottom(columnWidthIndex, config.border);\n\n output = _.trimEnd(output);\n\n process.stdout.write(output);\n};\n\n/**\n * @param {Object} userConfig\n * @returns {Object}\n */\nexport default (userConfig = {}) => {\n const config = makeStreamConfig(userConfig);\n\n // @todo Use 'Object.values' when Node.js v6 support is dropped.\n const columnWidthIndex = _.values(_.mapValues(config.columns, (column) => {\n return column.width + column.paddingLeft + column.paddingRight;\n }));\n\n let empty;\n\n empty = true;\n\n return {\n /**\n * @param {string[]} row\n * @returns {undefined}\n */\n write: (row) => {\n if (row.length !== config.columnCount) {\n throw new Error('Row cell count does not match the config.columnCount.');\n }\n\n if (empty) {\n empty = false;\n\n return create(row, columnWidthIndex, config);\n } else {\n return append(row, columnWidthIndex, config);\n }\n }\n };\n};\n"],"file":"createStream.js"}
@@ -1,8 +1,10 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.drawBorderTop = exports.drawBorderJoin = exports.drawBorderBottom = exports.drawBorder = void 0;
7
+
6
8
  /**
7
9
  * @typedef drawBorder~parts
8
10
  * @property {string} left
@@ -20,10 +22,8 @@ const drawBorder = (columnSizeIndex, parts) => {
20
22
  const columns = columnSizeIndex.map(size => {
21
23
  return parts.body.repeat(size);
22
24
  }).join(parts.join);
23
-
24
25
  return parts.left + columns + parts.right + '\n';
25
26
  };
26
-
27
27
  /**
28
28
  * @typedef drawBorderTop~parts
29
29
  * @property {string} topLeft
@@ -37,6 +37,10 @@ const drawBorder = (columnSizeIndex, parts) => {
37
37
  * @param {drawBorderTop~parts} parts
38
38
  * @returns {string}
39
39
  */
40
+
41
+
42
+ exports.drawBorder = drawBorder;
43
+
40
44
  const drawBorderTop = (columnSizeIndex, parts) => {
41
45
  return drawBorder(columnSizeIndex, {
42
46
  body: parts.topBody,
@@ -45,7 +49,6 @@ const drawBorderTop = (columnSizeIndex, parts) => {
45
49
  right: parts.topRight
46
50
  });
47
51
  };
48
-
49
52
  /**
50
53
  * @typedef drawBorderJoin~parts
51
54
  * @property {string} joinLeft
@@ -59,6 +62,10 @@ const drawBorderTop = (columnSizeIndex, parts) => {
59
62
  * @param {drawBorderJoin~parts} parts
60
63
  * @returns {string}
61
64
  */
65
+
66
+
67
+ exports.drawBorderTop = drawBorderTop;
68
+
62
69
  const drawBorderJoin = (columnSizeIndex, parts) => {
63
70
  return drawBorder(columnSizeIndex, {
64
71
  body: parts.joinBody,
@@ -67,7 +74,6 @@ const drawBorderJoin = (columnSizeIndex, parts) => {
67
74
  right: parts.joinRight
68
75
  });
69
76
  };
70
-
71
77
  /**
72
78
  * @typedef drawBorderBottom~parts
73
79
  * @property {string} topLeft
@@ -81,6 +87,10 @@ const drawBorderJoin = (columnSizeIndex, parts) => {
81
87
  * @param {drawBorderBottom~parts} parts
82
88
  * @returns {string}
83
89
  */
90
+
91
+
92
+ exports.drawBorderJoin = drawBorderJoin;
93
+
84
94
  const drawBorderBottom = (columnSizeIndex, parts) => {
85
95
  return drawBorder(columnSizeIndex, {
86
96
  body: parts.bottomBody,
@@ -90,7 +100,5 @@ const drawBorderBottom = (columnSizeIndex, parts) => {
90
100
  });
91
101
  };
92
102
 
93
- exports.drawBorder = drawBorder;
94
103
  exports.drawBorderBottom = drawBorderBottom;
95
- exports.drawBorderJoin = drawBorderJoin;
96
- exports.drawBorderTop = drawBorderTop;
104
+ //# sourceMappingURL=drawBorder.js.map
@@ -0,0 +1,95 @@
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
+ return drawBorder(columnSizeIndex, {
39
+ body: parts.topBody,
40
+ join: parts.topJoin,
41
+ left: parts.topLeft,
42
+ right: parts.topRight
43
+ });
44
+ };
45
+
46
+ /**
47
+ * @typedef drawBorderJoin~parts
48
+ * @property {string} joinLeft
49
+ * @property {string} joinRight
50
+ * @property {string} joinBody
51
+ * @property {string} joinJoin
52
+ */
53
+
54
+ /**
55
+ * @param {number[]} columnSizeIndex
56
+ * @param {drawBorderJoin~parts} parts
57
+ * @returns {string}
58
+ */
59
+ const drawBorderJoin = (columnSizeIndex, parts) => {
60
+ return drawBorder(columnSizeIndex, {
61
+ body: parts.joinBody,
62
+ join: parts.joinJoin,
63
+ left: parts.joinLeft,
64
+ right: parts.joinRight
65
+ });
66
+ };
67
+
68
+ /**
69
+ * @typedef drawBorderBottom~parts
70
+ * @property {string} topLeft
71
+ * @property {string} topRight
72
+ * @property {string} topBody
73
+ * @property {string} topJoin
74
+ */
75
+
76
+ /**
77
+ * @param {number[]} columnSizeIndex
78
+ * @param {drawBorderBottom~parts} parts
79
+ * @returns {string}
80
+ */
81
+ const drawBorderBottom = (columnSizeIndex, parts) => {
82
+ return drawBorder(columnSizeIndex, {
83
+ body: parts.bottomBody,
84
+ join: parts.bottomJoin,
85
+ left: parts.bottomLeft,
86
+ right: parts.bottomRight
87
+ });
88
+ };
89
+
90
+ export {
91
+ drawBorder,
92
+ drawBorderBottom,
93
+ drawBorderJoin,
94
+ drawBorderTop
95
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/drawBorder.js"],"names":["drawBorder","columnSizeIndex","parts","columns","map","size","body","repeat","join","left","right","drawBorderTop","topBody","topJoin","topLeft","topRight","drawBorderJoin","joinBody","joinJoin","joinLeft","joinRight","drawBorderBottom","bottomBody","bottomJoin","bottomLeft","bottomRight"],"mappings":";;;;;;;AAAA;;;;;;;;AAQA;;;;;AAKA,MAAMA,UAAU,GAAG,CAACC,eAAD,EAAkBC,KAAlB,KAA4B;AAC7C,QAAMC,OAAO,GAAGF,eAAe,CAC5BG,GADa,CACRC,IAAD,IAAU;AACb,WAAOH,KAAK,CAACI,IAAN,CAAWC,MAAX,CAAkBF,IAAlB,CAAP;AACD,GAHa,EAIbG,IAJa,CAIRN,KAAK,CAACM,IAJE,CAAhB;AAMA,SAAON,KAAK,CAACO,IAAN,GAAaN,OAAb,GAAuBD,KAAK,CAACQ,KAA7B,GAAqC,IAA5C;AACD,CARD;AAUA;;;;;;;;AAQA;;;;;;;;;AAKA,MAAMC,aAAa,GAAG,CAACV,eAAD,EAAkBC,KAAlB,KAA4B;AAChD,SAAOF,UAAU,CAACC,eAAD,EAAkB;AACjCK,IAAAA,IAAI,EAAEJ,KAAK,CAACU,OADqB;AAEjCJ,IAAAA,IAAI,EAAEN,KAAK,CAACW,OAFqB;AAGjCJ,IAAAA,IAAI,EAAEP,KAAK,CAACY,OAHqB;AAIjCJ,IAAAA,KAAK,EAAER,KAAK,CAACa;AAJoB,GAAlB,CAAjB;AAMD,CAPD;AASA;;;;;;;;AAQA;;;;;;;;;AAKA,MAAMC,cAAc,GAAG,CAACf,eAAD,EAAkBC,KAAlB,KAA4B;AACjD,SAAOF,UAAU,CAACC,eAAD,EAAkB;AACjCK,IAAAA,IAAI,EAAEJ,KAAK,CAACe,QADqB;AAEjCT,IAAAA,IAAI,EAAEN,KAAK,CAACgB,QAFqB;AAGjCT,IAAAA,IAAI,EAAEP,KAAK,CAACiB,QAHqB;AAIjCT,IAAAA,KAAK,EAAER,KAAK,CAACkB;AAJoB,GAAlB,CAAjB;AAMD,CAPD;AASA;;;;;;;;AAQA;;;;;;;;;AAKA,MAAMC,gBAAgB,GAAG,CAACpB,eAAD,EAAkBC,KAAlB,KAA4B;AACnD,SAAOF,UAAU,CAACC,eAAD,EAAkB;AACjCK,IAAAA,IAAI,EAAEJ,KAAK,CAACoB,UADqB;AAEjCd,IAAAA,IAAI,EAAEN,KAAK,CAACqB,UAFqB;AAGjCd,IAAAA,IAAI,EAAEP,KAAK,CAACsB,UAHqB;AAIjCd,IAAAA,KAAK,EAAER,KAAK,CAACuB;AAJoB,GAAlB,CAAjB;AAMD,CAPD","sourcesContent":["/**\n * @typedef drawBorder~parts\n * @property {string} left\n * @property {string} right\n * @property {string} body\n * @property {string} join\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorder~parts} parts\n * @returns {string}\n */\nconst drawBorder = (columnSizeIndex, parts) => {\n const columns = columnSizeIndex\n .map((size) => {\n return parts.body.repeat(size);\n })\n .join(parts.join);\n\n return parts.left + columns + parts.right + '\\n';\n};\n\n/**\n * @typedef drawBorderTop~parts\n * @property {string} topLeft\n * @property {string} topRight\n * @property {string} topBody\n * @property {string} topJoin\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorderTop~parts} parts\n * @returns {string}\n */\nconst drawBorderTop = (columnSizeIndex, parts) => {\n return drawBorder(columnSizeIndex, {\n body: parts.topBody,\n join: parts.topJoin,\n left: parts.topLeft,\n right: parts.topRight\n });\n};\n\n/**\n * @typedef drawBorderJoin~parts\n * @property {string} joinLeft\n * @property {string} joinRight\n * @property {string} joinBody\n * @property {string} joinJoin\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorderJoin~parts} parts\n * @returns {string}\n */\nconst drawBorderJoin = (columnSizeIndex, parts) => {\n return drawBorder(columnSizeIndex, {\n body: parts.joinBody,\n join: parts.joinJoin,\n left: parts.joinLeft,\n right: parts.joinRight\n });\n};\n\n/**\n * @typedef drawBorderBottom~parts\n * @property {string} topLeft\n * @property {string} topRight\n * @property {string} topBody\n * @property {string} topJoin\n */\n\n/**\n * @param {number[]} columnSizeIndex\n * @param {drawBorderBottom~parts} parts\n * @returns {string}\n */\nconst drawBorderBottom = (columnSizeIndex, parts) => {\n return drawBorder(columnSizeIndex, {\n body: parts.bottomBody,\n join: parts.bottomJoin,\n left: parts.bottomLeft,\n right: parts.bottomRight\n });\n};\n\nexport {\n drawBorder,\n drawBorderBottom,\n drawBorderJoin,\n drawBorderTop\n};\n"],"file":"drawBorder.js"}
package/dist/drawRow.js CHANGED
@@ -1,8 +1,9 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
8
  /**
8
9
  * @typedef {Object} drawRow~border
@@ -16,6 +17,10 @@ Object.defineProperty(exports, "__esModule", {
16
17
  * @param {drawRow~border} border
17
18
  * @returns {string}
18
19
  */
19
- exports.default = (columns, border) => {
20
+ const drawRow = (columns, border) => {
20
21
  return border.bodyLeft + columns.join(border.bodyJoin) + border.bodyRight + '\n';
21
- };
22
+ };
23
+
24
+ var _default = drawRow;
25
+ exports.default = _default;
26
+ //# sourceMappingURL=drawRow.js.map
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @typedef {Object} drawRow~border
3
+ * @property {string} bodyLeft
4
+ * @property {string} bodyRight
5
+ * @property {string} bodyJoin
6
+ */
7
+
8
+ /**
9
+ * @param {number[]} columns
10
+ * @param {drawRow~border} border
11
+ * @returns {string}
12
+ */
13
+ export default (columns, border) => {
14
+ return border.bodyLeft + columns.join(border.bodyJoin) + border.bodyRight + '\n';
15
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/drawRow.js"],"names":["columns","border","bodyLeft","join","bodyJoin","bodyRight"],"mappings":";;;;;;;AAAA;;;;;;;AAOA;;;;;iBAKgBA,O,EAASC,M,KAAW;AAClC,SAAOA,MAAM,CAACC,QAAP,GAAkBF,OAAO,CAACG,IAAR,CAAaF,MAAM,CAACG,QAApB,CAAlB,GAAkDH,MAAM,CAACI,SAAzD,GAAqE,IAA5E;AACD,C","sourcesContent":["/**\n * @typedef {Object} drawRow~border\n * @property {string} bodyLeft\n * @property {string} bodyRight\n * @property {string} bodyJoin\n */\n\n/**\n * @param {number[]} columns\n * @param {drawRow~border} border\n * @returns {string}\n */\nexport default (columns, border) => {\n return border.bodyLeft + columns.join(border.bodyJoin) + border.bodyRight + '\\n';\n};\n"],"file":"drawRow.js"}
package/dist/drawTable.js CHANGED
@@ -1,14 +1,13 @@
1
- 'use strict';
1
+ "use strict";
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = void 0;
6
7
 
7
- var _drawBorder = require('./drawBorder');
8
+ var _drawBorder = require("./drawBorder");
8
9
 
9
- var _drawRow = require('./drawRow');
10
-
11
- var _drawRow2 = _interopRequireDefault(_drawRow);
10
+ var _drawRow = _interopRequireDefault(require("./drawRow"));
12
11
 
13
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
13
 
@@ -20,15 +19,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
20
19
  * @param {Function} drawHorizontalLine
21
20
  * @returns {string}
22
21
  */
23
- exports.default = (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLine) => {
22
+ const drawTable = (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLine) => {
24
23
  let output;
25
24
  let realRowIndex;
26
25
  let rowHeight;
27
-
28
26
  const rowCount = rows.length;
29
-
30
27
  realRowIndex = 0;
31
-
32
28
  output = '';
33
29
 
34
30
  if (drawHorizontalLine(realRowIndex, rowCount)) {
@@ -36,11 +32,10 @@ exports.default = (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLi
36
32
  }
37
33
 
38
34
  rows.forEach((row, index0) => {
39
- output += (0, _drawRow2.default)(row, border);
35
+ output += (0, _drawRow.default)(row, border);
40
36
 
41
37
  if (!rowHeight) {
42
38
  rowHeight = rowSpanIndex[realRowIndex];
43
-
44
39
  realRowIndex++;
45
40
  }
46
41
 
@@ -56,4 +51,8 @@ exports.default = (rows, border, columnSizeIndex, rowSpanIndex, drawHorizontalLi
56
51
  }
57
52
 
58
53
  return output;
59
- };
54
+ };
55
+
56
+ var _default = drawTable;
57
+ exports.default = _default;
58
+ //# sourceMappingURL=drawTable.js.map