table 3.7.9 → 3.8.3

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 (79) hide show
  1. package/dist/alignString.js +47 -68
  2. package/dist/alignTableData.js +20 -24
  3. package/dist/calculateCellHeight.js +18 -28
  4. package/dist/calculateCellWidthIndex.js +9 -11
  5. package/dist/calculateMaximumColumnWidthIndex.js +18 -28
  6. package/dist/calculateRowHeightIndex.js +22 -45
  7. package/dist/createStream.js +75 -95
  8. package/dist/drawBorder.js +33 -47
  9. package/dist/drawRow.js +4 -5
  10. package/dist/drawTable.js +27 -32
  11. package/dist/getBorderCharacters.js +98 -99
  12. package/dist/index.js +1 -2
  13. package/dist/makeConfig.js +43 -63
  14. package/dist/makeStreamConfig.js +40 -59
  15. package/dist/mapDataUsingRowHeightIndex.js +28 -55
  16. package/dist/padTableData.js +11 -19
  17. package/dist/schemas/config.json +3 -1
  18. package/dist/schemas/streamConfig.json +2 -0
  19. package/dist/stringifyTableData.js +9 -11
  20. package/dist/table.js +8 -13
  21. package/dist/truncateTableData.js +12 -18
  22. package/dist/validateConfig.js +753 -50
  23. package/dist/validateStreamConfig.js +739 -50
  24. package/dist/validateTableData.js +28 -36
  25. package/dist/wrapString.js +13 -16
  26. package/dist/wrapWord.js +24 -29
  27. package/package.json +35 -12
  28. package/test/README/usage/basic.js +25 -0
  29. package/test/README/usage/cell_content_alignment.js +45 -0
  30. package/test/README/usage/column_width.js +33 -0
  31. package/test/README/usage/custom_border.js +50 -0
  32. package/test/README/usage/draw_horizontal_line.js +41 -0
  33. package/test/README/usage/expectTable.js +13 -0
  34. package/test/README/usage/moon_mission.js +67 -0
  35. package/test/README/usage/padding_cell_content.js +39 -0
  36. package/test/README/usage/predefined_border_templates.js +91 -0
  37. package/test/README/usage/streaming.js +56 -0
  38. package/test/README/usage/text_truncating.js +32 -0
  39. package/test/README/usage/text_wrapping.js +67 -0
  40. package/test/alignString.js +102 -0
  41. package/test/calculateCellHeight.js +44 -0
  42. package/test/calculateCellWidthIndex.js +20 -0
  43. package/test/calculateMaximumColumnWidthIndex.js +59 -0
  44. package/test/calculateRowHeightIndex.js +78 -0
  45. package/test/config.js +43 -0
  46. package/test/configSamples.js +153 -0
  47. package/test/createStream.js +41 -0
  48. package/test/drawBorder.js +71 -0
  49. package/test/makeConfig.js +75 -0
  50. package/test/mapDataUsingRowHeightIndex.js +119 -0
  51. package/test/streamConfig.js +43 -0
  52. package/test/streamConfigSamples.js +151 -0
  53. package/test/validateTableData.js +65 -0
  54. package/test/wrapString.js +45 -0
  55. package/test/wrapWord.js +32 -0
  56. package/dist/alignString.js.map +0 -1
  57. package/dist/alignTableData.js.map +0 -1
  58. package/dist/calculateCellHeight.js.map +0 -1
  59. package/dist/calculateCellWidthIndex.js.map +0 -1
  60. package/dist/calculateMaximumColumnWidthIndex.js.map +0 -1
  61. package/dist/calculateRowHeightIndex.js.map +0 -1
  62. package/dist/createStream.js.map +0 -1
  63. package/dist/drawBorder.js.map +0 -1
  64. package/dist/drawRow.js.map +0 -1
  65. package/dist/drawTable.js.map +0 -1
  66. package/dist/getBorderCharacters.js.map +0 -1
  67. package/dist/index.js.map +0 -1
  68. package/dist/makeConfig.js.map +0 -1
  69. package/dist/makeStreamConfig.js.map +0 -1
  70. package/dist/mapDataUsingRowHeightIndex.js.map +0 -1
  71. package/dist/padTableData.js.map +0 -1
  72. package/dist/stringifyTableData.js.map +0 -1
  73. package/dist/table.js.map +0 -1
  74. package/dist/truncateTableData.js.map +0 -1
  75. package/dist/validateConfig.js.map +0 -1
  76. package/dist/validateStreamConfig.js.map +0 -1
  77. package/dist/validateTableData.js.map +0 -1
  78. package/dist/wrapString.js.map +0 -1
  79. package/dist/wrapWord.js.map +0 -1
@@ -1,24 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
6
 
7
- var _isNumber2 = require('lodash/isNumber');
7
+ var _lodash = require('lodash');
8
8
 
9
- var _isNumber3 = _interopRequireDefault(_isNumber2);
10
-
11
- var _isString2 = require('lodash/isString');
12
-
13
- var _isString3 = _interopRequireDefault(_isString2);
14
-
15
- var _floor2 = require('lodash/floor');
16
-
17
- var _floor3 = _interopRequireDefault(_floor2);
18
-
19
- var _repeat2 = require('lodash/repeat');
20
-
21
- var _repeat3 = _interopRequireDefault(_repeat2);
9
+ var _lodash2 = _interopRequireDefault(_lodash);
22
10
 
23
11
  var _stringWidth = require('string-width');
24
12
 
@@ -26,20 +14,15 @@ var _stringWidth2 = _interopRequireDefault(_stringWidth);
26
14
 
27
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
16
 
29
- var alignCenter = void 0,
30
- alignLeft = void 0,
31
- alignRight = void 0,
32
- alignments = void 0;
33
-
34
- alignments = ['left', 'right', 'center'];
17
+ const alignments = ['left', 'right', 'center'];
35
18
 
36
19
  /**
37
20
  * @param {string} subject
38
21
  * @param {number} width
39
22
  * @returns {string}
40
23
  */
41
- alignLeft = function alignLeft(subject, width) {
42
- return subject + (0, _repeat3.default)(' ', width);
24
+ const alignLeft = (subject, width) => {
25
+ return subject + _lodash2.default.repeat(' ', width);
43
26
  };
44
27
 
45
28
  /**
@@ -47,8 +30,8 @@ alignLeft = function alignLeft(subject, width) {
47
30
  * @param {number} width
48
31
  * @returns {string}
49
32
  */
50
- alignRight = function alignRight(subject, width) {
51
- return (0, _repeat3.default)(' ', width) + subject;
33
+ const alignRight = (subject, width) => {
34
+ return _lodash2.default.repeat(' ', width) + subject;
52
35
  };
53
36
 
54
37
  /**
@@ -56,18 +39,18 @@ alignRight = function alignRight(subject, width) {
56
39
  * @param {number} width
57
40
  * @returns {string}
58
41
  */
59
- alignCenter = function alignCenter(subject, width) {
60
- var halfWidth = void 0;
42
+ const alignCenter = (subject, width) => {
43
+ let halfWidth;
61
44
 
62
- halfWidth = width / 2;
45
+ halfWidth = width / 2;
63
46
 
64
- if (halfWidth % 2 === 0) {
65
- return (0, _repeat3.default)(' ', halfWidth) + subject + (0, _repeat3.default)(' ', halfWidth);
66
- } else {
67
- halfWidth = (0, _floor3.default)(halfWidth);
47
+ if (halfWidth % 2 === 0) {
48
+ return _lodash2.default.repeat(' ', halfWidth) + subject + _lodash2.default.repeat(' ', halfWidth);
49
+ } else {
50
+ halfWidth = _lodash2.default.floor(halfWidth);
68
51
 
69
- return (0, _repeat3.default)(' ', halfWidth) + subject + (0, _repeat3.default)(' ', halfWidth + 1);
70
- }
52
+ return _lodash2.default.repeat(' ', halfWidth) + subject + _lodash2.default.repeat(' ', halfWidth + 1);
53
+ }
71
54
  };
72
55
 
73
56
  /**
@@ -80,50 +63,46 @@ alignCenter = function alignCenter(subject, width) {
80
63
  * @returns {string}
81
64
  */
82
65
 
83
- exports.default = function (subject, containerWidth, alignment) {
84
- var availableWidth = void 0,
85
- subjectWidth = void 0;
86
-
87
- if (!(0, _isString3.default)(subject)) {
88
- throw new Error('Subject parameter value must be a string.');
89
- }
66
+ exports.default = (subject, containerWidth, alignment) => {
67
+ if (!_lodash2.default.isString(subject)) {
68
+ throw new Error('Subject parameter value must be a string.');
69
+ }
90
70
 
91
- if (!(0, _isNumber3.default)(containerWidth)) {
92
- throw new Error('Container width parameter value must be a number.');
93
- }
71
+ if (!_lodash2.default.isNumber(containerWidth)) {
72
+ throw new Error('Container width parameter value must be a number.');
73
+ }
94
74
 
95
- subjectWidth = (0, _stringWidth2.default)(subject);
75
+ const subjectWidth = (0, _stringWidth2.default)(subject);
96
76
 
97
- if (subjectWidth > containerWidth) {
98
- // console.log('subjectWidth', subjectWidth, 'containerWidth', containerWidth, 'subject', subject);
77
+ if (subjectWidth > containerWidth) {
78
+ // console.log('subjectWidth', subjectWidth, 'containerWidth', containerWidth, 'subject', subject);
99
79
 
100
- throw new Error('Subject parameter value width cannot be greater than the container width.');
101
- }
80
+ throw new Error('Subject parameter value width cannot be greater than the container width.');
81
+ }
102
82
 
103
- if (!(0, _isString3.default)(alignment)) {
104
- throw new Error('Alignment parameter value must be a string.');
105
- }
83
+ if (!_lodash2.default.isString(alignment)) {
84
+ throw new Error('Alignment parameter value must be a string.');
85
+ }
106
86
 
107
- if (alignments.indexOf(alignment) === -1) {
108
- throw new Error('Alignment parameter value must be a known alignment parameter value (left, right, center).');
109
- }
87
+ if (alignments.indexOf(alignment) === -1) {
88
+ throw new Error('Alignment parameter value must be a known alignment parameter value (left, right, center).');
89
+ }
110
90
 
111
- if (subjectWidth === 0) {
112
- return (0, _repeat3.default)(' ', containerWidth);
113
- }
91
+ if (subjectWidth === 0) {
92
+ return _lodash2.default.repeat(' ', containerWidth);
93
+ }
114
94
 
115
- availableWidth = containerWidth - subjectWidth;
95
+ const availableWidth = containerWidth - subjectWidth;
116
96
 
117
- if (alignment === 'left') {
118
- return alignLeft(subject, availableWidth);
119
- }
97
+ if (alignment === 'left') {
98
+ return alignLeft(subject, availableWidth);
99
+ }
120
100
 
121
- if (alignment === 'right') {
122
- return alignRight(subject, availableWidth);
123
- }
101
+ if (alignment === 'right') {
102
+ return alignRight(subject, availableWidth);
103
+ }
124
104
 
125
- return alignCenter(subject, availableWidth);
105
+ return alignCenter(subject, availableWidth);
126
106
  };
127
107
 
128
- module.exports = exports['default'];
129
- //# sourceMappingURL=alignString.js.map
108
+ module.exports = exports['default'];
@@ -1,44 +1,40 @@
1
1
  'use strict';
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
6
 
7
- var _map2 = require('lodash/map');
7
+ var _lodash = require('lodash');
8
8
 
9
- var _map3 = _interopRequireDefault(_map2);
10
-
11
- var _alignString = require('./alignString');
12
-
13
- var _alignString2 = _interopRequireDefault(_alignString);
9
+ var _lodash2 = _interopRequireDefault(_lodash);
14
10
 
15
11
  var _stringWidth = require('string-width');
16
12
 
17
13
  var _stringWidth2 = _interopRequireDefault(_stringWidth);
18
14
 
15
+ var _alignString = require('./alignString');
16
+
17
+ var _alignString2 = _interopRequireDefault(_alignString);
18
+
19
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
20
 
21
21
  /**
22
22
  * @param {table~row[]} rows
23
23
  * @param {Object} config
24
- * @return {table~row[]}
24
+ * @returns {table~row[]}
25
25
  */
26
-
27
- exports.default = function (rows, config) {
28
- return (0, _map3.default)(rows, function (cells) {
29
- return (0, _map3.default)(cells, function (value, index1) {
30
- var column = void 0;
31
-
32
- column = config.columns[index1];
33
-
34
- if ((0, _stringWidth2.default)(value) === column.width) {
35
- return value;
36
- } else {
37
- return (0, _alignString2.default)(value, column.width, column.alignment);
38
- }
39
- });
26
+ exports.default = (rows, config) => {
27
+ return _lodash2.default.map(rows, cells => {
28
+ return _lodash2.default.map(cells, (value, index1) => {
29
+ const column = config.columns[index1];
30
+
31
+ if ((0, _stringWidth2.default)(value) === column.width) {
32
+ return value;
33
+ } else {
34
+ return (0, _alignString2.default)(value, column.width, column.alignment);
35
+ }
40
36
  });
37
+ });
41
38
  };
42
39
 
43
- module.exports = exports['default'];
44
- //# sourceMappingURL=alignTableData.js.map
40
+ module.exports = exports['default'];
@@ -1,20 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
6
 
7
- var _ceil2 = require('lodash/ceil');
7
+ var _lodash = require('lodash');
8
8
 
9
- var _ceil3 = _interopRequireDefault(_ceil2);
10
-
11
- var _isInteger2 = require('lodash/isInteger');
12
-
13
- var _isInteger3 = _interopRequireDefault(_isInteger2);
14
-
15
- var _isString2 = require('lodash/isString');
16
-
17
- var _isString3 = _interopRequireDefault(_isString2);
9
+ var _lodash2 = _interopRequireDefault(_lodash);
18
10
 
19
11
  var _stringWidth = require('string-width');
20
12
 
@@ -32,28 +24,26 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
32
24
  * @param {boolean} useWrapWord
33
25
  * @returns {number}
34
26
  */
35
-
36
27
  exports.default = function (value, columnWidth) {
37
- var useWrapWord = arguments.length <= 2 || arguments[2] === undefined ? false : arguments[2];
28
+ let useWrapWord = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
38
29
 
39
- if (!(0, _isString3.default)(value)) {
40
- throw new Error('Value must be a string.');
41
- }
30
+ if (!_lodash2.default.isString(value)) {
31
+ throw new Error('Value must be a string.');
32
+ }
42
33
 
43
- if (!(0, _isInteger3.default)(columnWidth)) {
44
- throw new Error('Column width must be an integer.');
45
- }
34
+ if (!_lodash2.default.isInteger(columnWidth)) {
35
+ throw new Error('Column width must be an integer.');
36
+ }
46
37
 
47
- if (columnWidth < 1) {
48
- throw new Error('Column width must be greater than 0.');
49
- }
38
+ if (columnWidth < 1) {
39
+ throw new Error('Column width must be greater than 0.');
40
+ }
50
41
 
51
- if (useWrapWord) {
52
- return (0, _wrapWord2.default)(value, columnWidth).length;
53
- }
42
+ if (useWrapWord) {
43
+ return (0, _wrapWord2.default)(value, columnWidth).length;
44
+ }
54
45
 
55
- return (0, _ceil3.default)((0, _stringWidth2.default)(value) / columnWidth);
46
+ return _lodash2.default.ceil((0, _stringWidth2.default)(value) / columnWidth);
56
47
  };
57
48
 
58
- module.exports = exports['default'];
59
- //# sourceMappingURL=calculateCellHeight.js.map
49
+ module.exports = exports['default'];
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
6
 
7
- var _map2 = require('lodash/map');
7
+ var _lodash = require('lodash');
8
8
 
9
- var _map3 = _interopRequireDefault(_map2);
9
+ var _lodash2 = _interopRequireDefault(_lodash);
10
10
 
11
11
  var _stringWidth = require('string-width');
12
12
 
@@ -18,14 +18,12 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
18
18
  * Calculates width of each cell contents.
19
19
  *
20
20
  * @param {string[]} cells
21
- * @return {number[]}
21
+ * @returns {number[]}
22
22
  */
23
-
24
- exports.default = function (cells) {
25
- return (0, _map3.default)(cells, function (value) {
26
- return (0, _stringWidth2.default)(value);
27
- });
23
+ exports.default = cells => {
24
+ return _lodash2.default.map(cells, value => {
25
+ return (0, _stringWidth2.default)(value);
26
+ });
28
27
  };
29
28
 
30
- module.exports = exports['default'];
31
- //# sourceMappingURL=calculateCellWidthIndex.js.map
29
+ module.exports = exports['default'];
@@ -1,16 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
6
 
7
- var _forEach2 = require('lodash/forEach');
7
+ var _lodash = require('lodash');
8
8
 
9
- var _forEach3 = _interopRequireDefault(_forEach2);
10
-
11
- var _fill2 = require('lodash/fill');
12
-
13
- var _fill3 = _interopRequireDefault(_fill2);
9
+ var _lodash2 = _interopRequireDefault(_lodash);
14
10
 
15
11
  var _calculateCellWidthIndex = require('./calculateCellWidthIndex');
16
12
 
@@ -22,32 +18,26 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
22
18
  * Produces an array of values that describe the largest value length (width) in every column.
23
19
  *
24
20
  * @param {Array[]} rows
25
- * @return {number[]}
21
+ * @returns {number[]}
26
22
  */
23
+ exports.default = rows => {
24
+ if (!rows[0]) {
25
+ throw new Error('Dataset must have at least one row.');
26
+ }
27
27
 
28
- exports.default = function (rows) {
29
- var columns = void 0;
30
-
31
- if (!rows[0]) {
32
- throw new Error('Dataset must have at least one row.');
33
- }
34
-
35
- columns = (0, _fill3.default)(Array(rows[0].length), 0);
36
-
37
- (0, _forEach3.default)(rows, function (row) {
38
- var columnWidthIndex = void 0;
28
+ const columns = _lodash2.default.fill(Array(rows[0].length), 0);
39
29
 
40
- columnWidthIndex = (0, _calculateCellWidthIndex2.default)(row);
30
+ _lodash2.default.forEach(rows, row => {
31
+ const columnWidthIndex = (0, _calculateCellWidthIndex2.default)(row);
41
32
 
42
- (0, _forEach3.default)(columnWidthIndex, function (valueWidth, index0) {
43
- if (columns[index0] < valueWidth) {
44
- columns[index0] = valueWidth;
45
- }
46
- });
33
+ _lodash2.default.forEach(columnWidthIndex, (valueWidth, index0) => {
34
+ if (columns[index0] < valueWidth) {
35
+ columns[index0] = valueWidth;
36
+ }
47
37
  });
38
+ });
48
39
 
49
- return columns;
40
+ return columns;
50
41
  };
51
42
 
52
- module.exports = exports['default'];
53
- //# sourceMappingURL=calculateMaximumColumnWidthIndex.js.map
43
+ module.exports = exports['default'];
@@ -1,28 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  Object.defineProperty(exports, "__esModule", {
4
- value: true
4
+ value: true
5
5
  });
6
6
 
7
- var _max2 = require('lodash/max');
7
+ var _lodash = require('lodash');
8
8
 
9
- var _max3 = _interopRequireDefault(_max2);
10
-
11
- var _isBoolean2 = require('lodash/isBoolean');
12
-
13
- var _isBoolean3 = _interopRequireDefault(_isBoolean2);
14
-
15
- var _isNumber2 = require('lodash/isNumber');
16
-
17
- var _isNumber3 = _interopRequireDefault(_isNumber2);
18
-
19
- var _fill2 = require('lodash/fill');
20
-
21
- var _fill3 = _interopRequireDefault(_fill2);
22
-
23
- var _forEach2 = require('lodash/forEach');
24
-
25
- var _forEach3 = _interopRequireDefault(_forEach2);
9
+ var _lodash2 = _interopRequireDefault(_lodash);
26
10
 
27
11
  var _calculateCellHeight = require('./calculateCellHeight');
28
12
 
@@ -35,39 +19,32 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
35
19
  *
36
20
  * @param {Array[]} rows
37
21
  * @param {Object} config
38
- * @return {number[]}
22
+ * @returns {number[]}
39
23
  */
24
+ exports.default = (rows, config) => {
25
+ const tableWidth = rows[0].length;
40
26
 
41
- exports.default = function (rows, config) {
42
- var rowSpanIndex = void 0,
43
- tableWidth = void 0;
44
-
45
- tableWidth = rows[0].length;
46
-
47
- rowSpanIndex = [];
27
+ const rowSpanIndex = [];
48
28
 
49
- (0, _forEach3.default)(rows, function (cells) {
50
- var cellHeightIndex = void 0;
29
+ _lodash2.default.forEach(rows, cells => {
30
+ const cellHeightIndex = _lodash2.default.fill(Array(tableWidth), 1);
51
31
 
52
- cellHeightIndex = (0, _fill3.default)(Array(tableWidth), 1);
32
+ _lodash2.default.forEach(cells, (value, index1) => {
33
+ if (!_lodash2.default.isNumber(config.columns[index1].width)) {
34
+ throw new Error('column[index].width must be a number.');
35
+ }
53
36
 
54
- (0, _forEach3.default)(cells, function (value, index1) {
55
- if (!(0, _isNumber3.default)(config.columns[index1].width)) {
56
- throw new Error('column[index].width must be a number.');
57
- }
37
+ if (!_lodash2.default.isBoolean(config.columns[index1].wrapWord)) {
38
+ throw new Error('column[index].wrapWord must be a boolean.');
39
+ }
58
40
 
59
- if (!(0, _isBoolean3.default)(config.columns[index1].wrapWord)) {
60
- throw new Error('column[index].wrapWord must be a boolean.');
61
- }
62
-
63
- cellHeightIndex[index1] = (0, _calculateCellHeight2.default)(value, config.columns[index1].width, config.columns[index1].wrapWord);
64
- });
65
-
66
- rowSpanIndex.push((0, _max3.default)(cellHeightIndex));
41
+ cellHeightIndex[index1] = (0, _calculateCellHeight2.default)(value, config.columns[index1].width, config.columns[index1].wrapWord);
67
42
  });
68
43
 
69
- return rowSpanIndex;
44
+ rowSpanIndex.push(_lodash2.default.max(cellHeightIndex));
45
+ });
46
+
47
+ return rowSpanIndex;
70
48
  };
71
49
 
72
- module.exports = exports['default'];
73
- //# sourceMappingURL=calculateRowHeightIndex.js.map
50
+ module.exports = exports['default'];