table 3.7.10 → 4.0.1
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.
- package/README.md +34 -15
- package/dist/alignString.js +1 -3
- package/dist/alignTableData.js +1 -3
- package/dist/calculateCellHeight.js +2 -4
- package/dist/calculateCellWidthIndex.js +1 -3
- package/dist/calculateMaximumColumnWidthIndex.js +1 -3
- package/dist/calculateRowHeightIndex.js +1 -3
- package/dist/createStream.js +2 -4
- package/dist/drawRow.js +1 -3
- package/dist/drawTable.js +1 -3
- package/dist/getBorderCharacters.js +1 -3
- package/dist/index.js +4 -4
- package/dist/makeConfig.js +5 -7
- package/dist/makeStreamConfig.js +5 -7
- package/dist/mapDataUsingRowHeightIndex.js +1 -3
- package/dist/padTableData.js +1 -3
- package/dist/stringifyTableData.js +1 -3
- package/dist/table.js +2 -4
- package/dist/truncateTableData.js +1 -3
- package/dist/validateConfig.js +752 -58
- package/dist/validateStreamConfig.js +739 -50
- package/dist/validateTableData.js +1 -3
- package/dist/wrapString.js +1 -3
- package/dist/wrapWord.js +1 -3
- package/package.json +25 -7
- package/test/README/usage/basic.js +3 -1
- package/test/README/usage/cell_content_alignment.js +3 -1
- package/test/README/usage/column_width.js +3 -1
- package/test/README/usage/custom_border.js +3 -1
- package/test/README/usage/draw_horizontal_line.js +3 -1
- package/test/README/usage/moon_mission.js +3 -2
- package/test/README/usage/padding_cell_content.js +3 -1
- package/test/README/usage/predefined_border_templates.js +3 -2
- package/test/README/usage/text_truncating.js +3 -1
- package/test/README/usage/text_wrapping.js +3 -1
- package/test/config.js +43 -0
- package/test/configSamples.js +153 -0
- package/test/streamConfig.js +43 -0
- package/test/streamConfigSamples.js +151 -0
- package/test/wrapString.js +2 -2
- package/dist/alignString.js.map +0 -1
- package/dist/alignTableData.js.map +0 -1
- package/dist/calculateCellHeight.js.map +0 -1
- package/dist/calculateCellWidthIndex.js.map +0 -1
- package/dist/calculateMaximumColumnWidthIndex.js.map +0 -1
- package/dist/calculateRowHeightIndex.js.map +0 -1
- package/dist/createStream.js.map +0 -1
- package/dist/drawBorder.js.map +0 -1
- package/dist/drawRow.js.map +0 -1
- package/dist/drawTable.js.map +0 -1
- package/dist/getBorderCharacters.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/makeConfig.js.map +0 -1
- package/dist/makeStreamConfig.js.map +0 -1
- package/dist/mapDataUsingRowHeightIndex.js.map +0 -1
- package/dist/padTableData.js.map +0 -1
- package/dist/stringifyTableData.js.map +0 -1
- package/dist/table.js.map +0 -1
- package/dist/truncateTableData.js.map +0 -1
- package/dist/validateConfig.js.map +0 -1
- package/dist/validateStreamConfig.js.map +0 -1
- package/dist/validateTableData.js.map +0 -1
- package/dist/wrapString.js.map +0 -1
- package/dist/wrapWord.js.map +0 -1
package/dist/wrapString.js
CHANGED
package/dist/wrapWord.js
CHANGED
package/package.json
CHANGED
|
@@ -10,20 +10,24 @@
|
|
|
10
10
|
"chalk": "^1.1.1",
|
|
11
11
|
"lodash": "^4.0.0",
|
|
12
12
|
"slice-ansi": "0.0.4",
|
|
13
|
-
"string-width": "^
|
|
13
|
+
"string-width": "^2.0.0"
|
|
14
14
|
},
|
|
15
15
|
"description": "Formats data into a string table.",
|
|
16
16
|
"devDependencies": {
|
|
17
|
+
"ajv-cli": "^1.1.0",
|
|
17
18
|
"babel": "^6.5.2",
|
|
18
19
|
"babel-cli": "^6.14.0",
|
|
19
|
-
"babel-
|
|
20
|
+
"babel-core": "^6.14.0",
|
|
21
|
+
"babel-plugin-istanbul": "^2.0.3",
|
|
20
22
|
"babel-preset-es2015-node4": "^2.1.0",
|
|
21
23
|
"babel-register": "^6.14.0",
|
|
22
24
|
"chai": "^3.4.1",
|
|
23
25
|
"eslint": "^3.5.0",
|
|
24
26
|
"eslint-config-canonical": "^1.8.6",
|
|
25
27
|
"gitdown": "^2.4.0",
|
|
28
|
+
"husky": "^0.11.7",
|
|
26
29
|
"mocha": "^3.0.2",
|
|
30
|
+
"nyc": "^8.3.1",
|
|
27
31
|
"sinon": "^1.17.2"
|
|
28
32
|
},
|
|
29
33
|
"keywords": [
|
|
@@ -36,15 +40,29 @@
|
|
|
36
40
|
"license": "BSD-3-Clause",
|
|
37
41
|
"main": "./dist/index.js",
|
|
38
42
|
"name": "table",
|
|
43
|
+
"nyc": {
|
|
44
|
+
"include": [
|
|
45
|
+
"src/*.js"
|
|
46
|
+
],
|
|
47
|
+
"instrument": false,
|
|
48
|
+
"lines": 70,
|
|
49
|
+
"require": [
|
|
50
|
+
"babel-register"
|
|
51
|
+
],
|
|
52
|
+
"sourceMap": false
|
|
53
|
+
},
|
|
39
54
|
"repository": {
|
|
40
55
|
"type": "git",
|
|
41
56
|
"url": "https://github.com/gajus/table"
|
|
42
57
|
},
|
|
43
58
|
"scripts": {
|
|
44
|
-
"build": "babel --copy-files ./src --out-dir ./dist",
|
|
45
|
-
"lint": "eslint ./src ./tests",
|
|
46
|
-
"readme": "gitdown ./.README/README.md --output-file ./README.md",
|
|
47
|
-
"
|
|
59
|
+
"build": "rm -fr ./dist && NODE_ENV=production babel --copy-files ./src --out-dir ./dist && npm run make-validators",
|
|
60
|
+
"lint": "npm run build && eslint ./src ./tests",
|
|
61
|
+
"make-readme": "gitdown ./.README/README.md --output-file ./README.md",
|
|
62
|
+
"make-validators": "ajv compile --all-errors --inline-refs=false -s src/schemas/config -c ajv-keywords/keywords/typeof -o dist/validateConfig.js && ajv compile --all-errors --inline-refs=false -s src/schemas/streamConfig -c ajv-keywords/keywords/typeof -o dist/validateStreamConfig.js",
|
|
63
|
+
"precommit": "npm run lint && npm run test",
|
|
64
|
+
"prepublish": "NODE_ENV=production npm run build",
|
|
65
|
+
"test": "npm run build && nyc --check-coverage mocha"
|
|
48
66
|
},
|
|
49
|
-
"version": "
|
|
67
|
+
"version": "4.0.1"
|
|
50
68
|
}
|
package/test/config.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {
|
|
2
|
+
expect
|
|
3
|
+
} from 'chai';
|
|
4
|
+
import configSamples from './configSamples';
|
|
5
|
+
import validateConfig from '../dist/validateConfig';
|
|
6
|
+
import configSchema from '../src/schemas/config.json';
|
|
7
|
+
import Ajv from 'ajv';
|
|
8
|
+
import ajvKeywords from 'ajv-keywords';
|
|
9
|
+
|
|
10
|
+
describe('config.json schema', () => {
|
|
11
|
+
var validate;
|
|
12
|
+
|
|
13
|
+
before(() => {
|
|
14
|
+
var ajv = new Ajv({allErrors: true});
|
|
15
|
+
ajvKeywords(ajv, 'typeof');
|
|
16
|
+
validate = ajv.compile(configSchema);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('should pass validation of valid config samples', () => {
|
|
20
|
+
configSamples.valid.forEach((sample, i) => {
|
|
21
|
+
testValid(sample, validate);
|
|
22
|
+
testValid(sample, validateConfig);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
function testValid(sample, validate) {
|
|
26
|
+
var valid = validate(sample);
|
|
27
|
+
if (!valid) console.log(validate.errors);
|
|
28
|
+
expect(valid).to.equal(true);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should fail validation of invalid config samples', () => {
|
|
33
|
+
configSamples.invalid.forEach((sample, i) => {
|
|
34
|
+
testInvalid(sample, validate);
|
|
35
|
+
testInvalid(sample, validateConfig);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
function testInvalid(sample, validate) {
|
|
39
|
+
var valid = validate(sample);
|
|
40
|
+
expect(valid).to.equal(false);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
valid: [
|
|
3
|
+
{
|
|
4
|
+
columns: {
|
|
5
|
+
0: {
|
|
6
|
+
alignment: 'left',
|
|
7
|
+
// minWidth: 10,
|
|
8
|
+
width: 10
|
|
9
|
+
},
|
|
10
|
+
1: {
|
|
11
|
+
alignment: 'center',
|
|
12
|
+
// minWidth: 10,
|
|
13
|
+
width: 10
|
|
14
|
+
},
|
|
15
|
+
2: {
|
|
16
|
+
alignment: 'right',
|
|
17
|
+
// minWidth: 10,
|
|
18
|
+
width: 10
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
border: {
|
|
24
|
+
topBody: `─`,
|
|
25
|
+
topJoin: `┬`,
|
|
26
|
+
topLeft: `┌`,
|
|
27
|
+
topRight: `┐`,
|
|
28
|
+
|
|
29
|
+
bottomBody: `─`,
|
|
30
|
+
bottomJoin: `┴`,
|
|
31
|
+
bottomLeft: `└`,
|
|
32
|
+
bottomRight: `┘`,
|
|
33
|
+
|
|
34
|
+
bodyLeft: `│`,
|
|
35
|
+
bodyRight: `│`,
|
|
36
|
+
bodyJoin: `│`,
|
|
37
|
+
|
|
38
|
+
joinBody: `─`,
|
|
39
|
+
joinLeft: `├`,
|
|
40
|
+
joinRight: `┤`,
|
|
41
|
+
joinJoin: `┼`
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
columns: {
|
|
46
|
+
0: {
|
|
47
|
+
paddingLeft: 3
|
|
48
|
+
},
|
|
49
|
+
1: {
|
|
50
|
+
width: 2,
|
|
51
|
+
paddingRight: 3
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
border: {},
|
|
57
|
+
columnDefault: {
|
|
58
|
+
paddingLeft: 0,
|
|
59
|
+
paddingRight: 1
|
|
60
|
+
},
|
|
61
|
+
// drawJoin: () => {
|
|
62
|
+
// return false
|
|
63
|
+
// }
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
columnDefault: {
|
|
67
|
+
width: 50
|
|
68
|
+
},
|
|
69
|
+
// columnCount: 3,
|
|
70
|
+
columns: {
|
|
71
|
+
0: {
|
|
72
|
+
width: 10,
|
|
73
|
+
alignment: 'right'
|
|
74
|
+
},
|
|
75
|
+
1: {
|
|
76
|
+
alignment: 'center',
|
|
77
|
+
},
|
|
78
|
+
2: {
|
|
79
|
+
width: 10
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{ border: { topBody: '-' } },
|
|
84
|
+
{ border: { topJoin: '-' } },
|
|
85
|
+
{ border: { topLeft: '-' } },
|
|
86
|
+
{ border: { topRight: '-' } },
|
|
87
|
+
{ border: { bottomBody: '-' } },
|
|
88
|
+
{ border: { bottomJoin: '-' } },
|
|
89
|
+
{ border: { bottomLeft: '-' } },
|
|
90
|
+
{ border: { bottomRight: '-' } },
|
|
91
|
+
{ border: { bodyLeft: '-' } },
|
|
92
|
+
{ border: { bodyRight: '-' } },
|
|
93
|
+
{ border: { bodyJoin: '-' } },
|
|
94
|
+
{ border: { joinBody: '-' } },
|
|
95
|
+
{ border: { joinLeft: '-' } },
|
|
96
|
+
{ border: { joinRight: '-' } },
|
|
97
|
+
{ border: { joinJoin: '-' } },
|
|
98
|
+
{ columns: { '1': { alignment: 'left' } } },
|
|
99
|
+
{ columns: { '1': { width: 5 } } },
|
|
100
|
+
{ columns: { '1': { wrapWord: true } } },
|
|
101
|
+
{ columns: { '1': { truncate: 1 } } },
|
|
102
|
+
{ columns: { '1': { paddingLeft: 1 } } },
|
|
103
|
+
{ columns: { '1': { paddingRight: 1 } } },
|
|
104
|
+
{ columnDefault: { alignment: 'left' } },
|
|
105
|
+
{ columnDefault: { width: 5 } },
|
|
106
|
+
{ columnDefault: { wrapWord: true } },
|
|
107
|
+
{ columnDefault: { truncate: 1 } },
|
|
108
|
+
{ columnDefault: { paddingLeft: 1 } },
|
|
109
|
+
{ columnDefault: { paddingRight: 1 } },
|
|
110
|
+
{ drawHorizontalLine: function(){} }
|
|
111
|
+
],
|
|
112
|
+
invalid: [
|
|
113
|
+
{ border: 1 },
|
|
114
|
+
{ border: { unknown: '-' } },
|
|
115
|
+
{ border: { topBody: 1 } },
|
|
116
|
+
{ border: { topJoin: 1 } },
|
|
117
|
+
{ border: { topLeft: 1 } },
|
|
118
|
+
{ border: { topRight: 1 } },
|
|
119
|
+
{ border: { bottomBody: 1 } },
|
|
120
|
+
{ border: { bottomJoin: 1 } },
|
|
121
|
+
{ border: { bottomLeft: 1 } },
|
|
122
|
+
{ border: { bottomRight: 1 } },
|
|
123
|
+
{ border: { bodyLeft: 1 } },
|
|
124
|
+
{ border: { bodyRight: 1 } },
|
|
125
|
+
{ border: { bodyJoin: 1 } },
|
|
126
|
+
{ border: { joinBody: 1 } },
|
|
127
|
+
{ border: { joinLeft: 1 } },
|
|
128
|
+
{ border: { joinRight: 1 } },
|
|
129
|
+
{ border: { joinJoin: 1 } },
|
|
130
|
+
{ columns: 1 },
|
|
131
|
+
{ columns: { a: { width: 5 } } },
|
|
132
|
+
{ columns: { '1': 1 } },
|
|
133
|
+
{ columns: { '1': { unknown: 1 } } },
|
|
134
|
+
{ columns: { '1': { alignment: 1 } } },
|
|
135
|
+
{ columns: { '1': { alignment: '1' } } },
|
|
136
|
+
{ columns: { '1': { width: '5' } } },
|
|
137
|
+
{ columns: { '1': { wrapWord: 1 } } },
|
|
138
|
+
{ columns: { '1': { truncate: '1' } } },
|
|
139
|
+
{ columns: { '1': { paddingLeft: '1' } } },
|
|
140
|
+
{ columns: { '1': { paddingRight: '1' } } },
|
|
141
|
+
{ columnDefault: 1 },
|
|
142
|
+
{ columnDefault: { unknown: 1 } },
|
|
143
|
+
{ columnDefault: { alignment: 1 } },
|
|
144
|
+
{ columnDefault: { alignment: '1' } },
|
|
145
|
+
{ columnDefault: { width: '5' } },
|
|
146
|
+
{ columnDefault: { wrapWord: 1 } },
|
|
147
|
+
{ columnDefault: { truncate: '1' } },
|
|
148
|
+
{ columnDefault: { paddingLeft: '1' } },
|
|
149
|
+
{ columnDefault: { paddingRight: '1' } },
|
|
150
|
+
{ drawHorizontalLine: 1 },
|
|
151
|
+
{ unknown: 1 }
|
|
152
|
+
]
|
|
153
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {
|
|
2
|
+
expect
|
|
3
|
+
} from 'chai';
|
|
4
|
+
import configSamples from './streamConfigSamples';
|
|
5
|
+
import validateConfig from '../dist/validateStreamConfig';
|
|
6
|
+
import configSchema from '../src/schemas/streamConfig.json';
|
|
7
|
+
import Ajv from 'ajv';
|
|
8
|
+
import ajvKeywords from 'ajv-keywords';
|
|
9
|
+
|
|
10
|
+
describe('streamConfig.json schema', () => {
|
|
11
|
+
var validate;
|
|
12
|
+
|
|
13
|
+
before(() => {
|
|
14
|
+
var ajv = new Ajv({allErrors: true});
|
|
15
|
+
ajvKeywords(ajv, 'typeof');
|
|
16
|
+
validate = ajv.compile(configSchema);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
it('should pass validation of valid streamConfig samples', () => {
|
|
20
|
+
configSamples.valid.forEach((sample, i) => {
|
|
21
|
+
testValid(sample, validate);
|
|
22
|
+
testValid(sample, validateConfig);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
function testValid(sample, validate) {
|
|
26
|
+
var valid = validate(sample);
|
|
27
|
+
if (!valid) console.log(validate.errors);
|
|
28
|
+
expect(valid).to.equal(true);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should fail validation of invalid streamConfig samples', () => {
|
|
33
|
+
configSamples.invalid.forEach((sample, i) => {
|
|
34
|
+
testInvalid(sample, validate);
|
|
35
|
+
testInvalid(sample, validateConfig);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
function testInvalid(sample, validate) {
|
|
39
|
+
var valid = validate(sample);
|
|
40
|
+
expect(valid).to.equal(false);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
});
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
valid: [
|
|
3
|
+
{
|
|
4
|
+
columns: {
|
|
5
|
+
0: {
|
|
6
|
+
alignment: 'left',
|
|
7
|
+
// minWidth: 10,
|
|
8
|
+
width: 10
|
|
9
|
+
},
|
|
10
|
+
1: {
|
|
11
|
+
alignment: 'center',
|
|
12
|
+
// minWidth: 10,
|
|
13
|
+
width: 10
|
|
14
|
+
},
|
|
15
|
+
2: {
|
|
16
|
+
alignment: 'right',
|
|
17
|
+
// minWidth: 10,
|
|
18
|
+
width: 10
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
border: {
|
|
24
|
+
topBody: `─`,
|
|
25
|
+
topJoin: `┬`,
|
|
26
|
+
topLeft: `┌`,
|
|
27
|
+
topRight: `┐`,
|
|
28
|
+
|
|
29
|
+
bottomBody: `─`,
|
|
30
|
+
bottomJoin: `┴`,
|
|
31
|
+
bottomLeft: `└`,
|
|
32
|
+
bottomRight: `┘`,
|
|
33
|
+
|
|
34
|
+
bodyLeft: `│`,
|
|
35
|
+
bodyRight: `│`,
|
|
36
|
+
bodyJoin: `│`,
|
|
37
|
+
|
|
38
|
+
joinBody: `─`,
|
|
39
|
+
joinLeft: `├`,
|
|
40
|
+
joinRight: `┤`,
|
|
41
|
+
joinJoin: `┼`
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
columns: {
|
|
46
|
+
0: {
|
|
47
|
+
paddingLeft: 3
|
|
48
|
+
},
|
|
49
|
+
1: {
|
|
50
|
+
width: 2,
|
|
51
|
+
paddingRight: 3
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
border: {},
|
|
57
|
+
columnDefault: {
|
|
58
|
+
paddingLeft: 0,
|
|
59
|
+
paddingRight: 1
|
|
60
|
+
},
|
|
61
|
+
// drawJoin: () => {
|
|
62
|
+
// return false
|
|
63
|
+
// }
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
columnDefault: {
|
|
67
|
+
width: 50
|
|
68
|
+
},
|
|
69
|
+
// columnCount: 3,
|
|
70
|
+
columns: {
|
|
71
|
+
0: {
|
|
72
|
+
width: 10,
|
|
73
|
+
alignment: 'right'
|
|
74
|
+
},
|
|
75
|
+
1: {
|
|
76
|
+
alignment: 'center',
|
|
77
|
+
},
|
|
78
|
+
2: {
|
|
79
|
+
width: 10
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
{ border: { topBody: '-' } },
|
|
84
|
+
{ border: { topJoin: '-' } },
|
|
85
|
+
{ border: { topLeft: '-' } },
|
|
86
|
+
{ border: { topRight: '-' } },
|
|
87
|
+
{ border: { bottomBody: '-' } },
|
|
88
|
+
{ border: { bottomJoin: '-' } },
|
|
89
|
+
{ border: { bottomLeft: '-' } },
|
|
90
|
+
{ border: { bottomRight: '-' } },
|
|
91
|
+
{ border: { bodyLeft: '-' } },
|
|
92
|
+
{ border: { bodyRight: '-' } },
|
|
93
|
+
{ border: { bodyJoin: '-' } },
|
|
94
|
+
{ border: { joinBody: '-' } },
|
|
95
|
+
{ border: { joinLeft: '-' } },
|
|
96
|
+
{ border: { joinRight: '-' } },
|
|
97
|
+
{ border: { joinJoin: '-' } },
|
|
98
|
+
{ columns: { '1': { alignment: 'left' } } },
|
|
99
|
+
{ columns: { '1': { width: 5 } } },
|
|
100
|
+
{ columns: { '1': { wrapWord: true } } },
|
|
101
|
+
{ columns: { '1': { truncate: 1 } } },
|
|
102
|
+
{ columns: { '1': { paddingLeft: 1 } } },
|
|
103
|
+
{ columns: { '1': { paddingRight: 1 } } },
|
|
104
|
+
{ columnDefault: { alignment: 'left' } },
|
|
105
|
+
{ columnDefault: { width: 5 } },
|
|
106
|
+
{ columnDefault: { wrapWord: true } },
|
|
107
|
+
{ columnDefault: { truncate: 1 } },
|
|
108
|
+
{ columnDefault: { paddingLeft: 1 } },
|
|
109
|
+
{ columnDefault: { paddingRight: 1 } }
|
|
110
|
+
],
|
|
111
|
+
invalid: [
|
|
112
|
+
{ border: 1 },
|
|
113
|
+
{ border: { unknown: '-' } },
|
|
114
|
+
{ border: { topBody: 1 } },
|
|
115
|
+
{ border: { topJoin: 1 } },
|
|
116
|
+
{ border: { topLeft: 1 } },
|
|
117
|
+
{ border: { topRight: 1 } },
|
|
118
|
+
{ border: { bottomBody: 1 } },
|
|
119
|
+
{ border: { bottomJoin: 1 } },
|
|
120
|
+
{ border: { bottomLeft: 1 } },
|
|
121
|
+
{ border: { bottomRight: 1 } },
|
|
122
|
+
{ border: { bodyLeft: 1 } },
|
|
123
|
+
{ border: { bodyRight: 1 } },
|
|
124
|
+
{ border: { bodyJoin: 1 } },
|
|
125
|
+
{ border: { joinBody: 1 } },
|
|
126
|
+
{ border: { joinLeft: 1 } },
|
|
127
|
+
{ border: { joinRight: 1 } },
|
|
128
|
+
{ border: { joinJoin: 1 } },
|
|
129
|
+
{ columns: 1 },
|
|
130
|
+
{ columns: { a: { width: 5 } } },
|
|
131
|
+
{ columns: { '1': 1 } },
|
|
132
|
+
{ columns: { '1': { unknown: 1 } } },
|
|
133
|
+
{ columns: { '1': { alignment: 1 } } },
|
|
134
|
+
{ columns: { '1': { alignment: '1' } } },
|
|
135
|
+
{ columns: { '1': { width: '5' } } },
|
|
136
|
+
{ columns: { '1': { wrapWord: 1 } } },
|
|
137
|
+
{ columns: { '1': { truncate: '1' } } },
|
|
138
|
+
{ columns: { '1': { paddingLeft: '1' } } },
|
|
139
|
+
{ columns: { '1': { paddingRight: '1' } } },
|
|
140
|
+
{ columnDefault: 1 },
|
|
141
|
+
{ columnDefault: { unknown: 1 } },
|
|
142
|
+
{ columnDefault: { alignment: 1 } },
|
|
143
|
+
{ columnDefault: { alignment: '1' } },
|
|
144
|
+
{ columnDefault: { width: '5' } },
|
|
145
|
+
{ columnDefault: { wrapWord: 1 } },
|
|
146
|
+
{ columnDefault: { truncate: '1' } },
|
|
147
|
+
{ columnDefault: { paddingLeft: '1' } },
|
|
148
|
+
{ columnDefault: { paddingRight: '1' } },
|
|
149
|
+
{ unknown: 1 }
|
|
150
|
+
]
|
|
151
|
+
};
|
package/test/wrapString.js
CHANGED
|
@@ -26,14 +26,14 @@ describe('wrapString', () => {
|
|
|
26
26
|
});
|
|
27
27
|
context('subject string contains ANSI escape codes', () => {
|
|
28
28
|
describe('subject is lesser than the chunk size', () => {
|
|
29
|
-
it('returns subject in a single chunk', () => {
|
|
29
|
+
it.skip('returns subject in a single chunk', () => {
|
|
30
30
|
expect(wrapString(chalk.red('aaa'), 3)).to.deep.equal([
|
|
31
31
|
'\u001b[31m\u001b[31m\u001b[31m\u001b[31m\u001b[31maaa\u001b[39m'
|
|
32
32
|
]);
|
|
33
33
|
});
|
|
34
34
|
});
|
|
35
35
|
describe('subject is larger than the chunk size', () => {
|
|
36
|
-
it('returns subject sliced into multiple chunks', () => {
|
|
36
|
+
it.skip('returns subject sliced into multiple chunks', () => {
|
|
37
37
|
expect(wrapString(chalk.red('aaabbbc'), 3)).to.deep.equal([
|
|
38
38
|
'\u001b[31m\u001b[31m\u001b[31m\u001b[31m\u001b[31maaa\u001b[39m',
|
|
39
39
|
'\u001b[31m\u001b[31m\u001b[31m\u001b[31m\u001b[31mbbb\u001b[39m',
|
package/dist/alignString.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["alignString.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA;;;;;;AAEA,IAAI,oBAAJ;IACI,kBADJ;IAEI,mBAFJ;IAGI,mBAHJ;;AAKA,aAAa,CACT,MADS,EAET,OAFS,EAGT,QAHS,CAAb;;;;;;;AAWA,YAAY,mBAAC,OAAD,EAAU,KAAV,EAAoB;AAC5B,WAAO,UAAU,sBAAS,GAAT,EAAc,KAAd,CAAjB;AACH,CAFD;;;;;;;AASA,aAAa,oBAAC,OAAD,EAAU,KAAV,EAAoB;AAC7B,WAAO,sBAAS,GAAT,EAAc,KAAd,IAAuB,OAA9B;AACH,CAFD;;;;;;;AASA,cAAc,qBAAC,OAAD,EAAU,KAAV,EAAoB;AAC9B,QAAI,kBAAJ;;AAEA,gBAAY,QAAQ,CAApB;;AAEA,QAAI,YAAY,CAAZ,KAAkB,CAAtB,EAAyB;AACrB,eAAO,sBAAS,GAAT,EAAc,SAAd,IAA2B,OAA3B,GAAqC,sBAAS,GAAT,EAAc,SAAd,CAA5C;AACH,KAFD,MAEO;AACH,oBAAY,qBAAQ,SAAR,CAAZ;;AAEA,eAAO,sBAAS,GAAT,EAAc,SAAd,IAA2B,OAA3B,GAAqC,sBAAS,GAAT,EAAc,YAAY,CAA1B,CAA5C;AACH;AACJ,CAZD;;;;;;;;;;;;kBAuBe,UAAC,OAAD,EAAU,cAAV,EAA0B,SAA1B,EAAwC;AACnD,QAAI,uBAAJ;QACI,qBADJ;;AAGA,QAAI,CAAC,wBAAW,OAAX,CAAL,EAA0B;AACtB,cAAM,IAAI,KAAJ,CAAU,2CAAV,CAAN;AACH;;AAED,QAAI,CAAC,wBAAW,cAAX,CAAL,EAAiC;AAC7B,cAAM,IAAI,KAAJ,CAAU,mDAAV,CAAN;AACH;;AAED,mBAAe,2BAAY,OAAZ,CAAf;;AAEA,QAAI,eAAe,cAAnB,EAAmC;;;AAG/B,cAAM,IAAI,KAAJ,CAAU,2EAAV,CAAN;AACH;;AAED,QAAI,CAAC,wBAAW,SAAX,CAAL,EAA4B;AACxB,cAAM,IAAI,KAAJ,CAAU,6CAAV,CAAN;AACH;;AAED,QAAI,WAAW,OAAX,CAAmB,SAAnB,MAAkC,CAAC,CAAvC,EAA0C;AACtC,cAAM,IAAI,KAAJ,CAAU,4FAAV,CAAN;AACH;;AAED,QAAI,iBAAiB,CAArB,EAAwB;AACpB,eAAO,sBAAS,GAAT,EAAc,cAAd,CAAP;AACH;;AAED,qBAAiB,iBAAiB,YAAlC;;AAEA,QAAI,cAAc,MAAlB,EAA0B;AACtB,eAAO,UAAU,OAAV,EAAmB,cAAnB,CAAP;AACH;;AAED,QAAI,cAAc,OAAlB,EAA2B;AACvB,eAAO,WAAW,OAAX,EAAoB,cAApB,CAAP;AACH;;AAED,WAAO,YAAY,OAAZ,EAAqB,cAArB,CAAP;AACH,C","file":"alignString.js","sourcesContent":["import _ from 'lodash';\nimport stringWidth from 'string-width';\n\nlet alignCenter,\n alignLeft,\n alignRight,\n alignments;\n\nalignments = [\n 'left',\n 'right',\n 'center'\n];\n\n/**\n * @param {string} subject\n * @param {number} width\n * @returns {string}\n */\nalignLeft = (subject, width) => {\n return subject + _.repeat(' ', width);\n};\n\n/**\n * @param {string} subject\n * @param {number} width\n * @returns {string}\n */\nalignRight = (subject, width) => {\n return _.repeat(' ', width) + subject;\n};\n\n/**\n * @param {string} subject\n * @param {number} width\n * @returns {string}\n */\nalignCenter = (subject, width) => {\n let halfWidth;\n\n halfWidth = width / 2;\n\n if (halfWidth % 2 === 0) {\n return _.repeat(' ', halfWidth) + subject + _.repeat(' ', halfWidth);\n } else {\n halfWidth = _.floor(halfWidth);\n\n return _.repeat(' ', halfWidth) + subject + _.repeat(' ', halfWidth + 1);\n }\n};\n\n/**\n * Pads a string to the left and/or right to position the subject\n * text in a desired alignment within a container.\n *\n * @param {string} subject\n * @param {number} containerWidth\n * @param {string} alignment One of the valid options (left, right, center).\n * @returns {string}\n */\nexport default (subject, containerWidth, alignment) => {\n let availableWidth,\n subjectWidth;\n\n if (!_.isString(subject)) {\n throw new Error('Subject parameter value must be a string.');\n }\n\n if (!_.isNumber(containerWidth)) {\n throw new Error('Container width parameter value must be a number.');\n }\n\n subjectWidth = stringWidth(subject);\n\n if (subjectWidth > containerWidth) {\n // console.log('subjectWidth', subjectWidth, 'containerWidth', containerWidth, 'subject', subject);\n\n throw new Error('Subject parameter value width cannot be greater than the container width.');\n }\n\n if (!_.isString(alignment)) {\n throw new Error('Alignment parameter value must be a string.');\n }\n\n if (alignments.indexOf(alignment) === -1) {\n throw new Error('Alignment parameter value must be a known alignment parameter value (left, right, center).');\n }\n\n if (subjectWidth === 0) {\n return _.repeat(' ', containerWidth);\n }\n\n availableWidth = containerWidth - subjectWidth;\n\n if (alignment === 'left') {\n return alignLeft(subject, availableWidth);\n }\n\n if (alignment === 'right') {\n return alignRight(subject, availableWidth);\n }\n\n return alignCenter(subject, availableWidth);\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["alignTableData.js"],"names":[],"mappings":";;;;;;;;;;AACA;;;;AACA;;;;;;;;;;;;kBAOe,UAAC,IAAD,EAAO,MAAP,EAAkB;AAC7B,WAAO,mBAAM,IAAN,EAAY,UAAC,KAAD,EAAW;AAC1B,eAAO,mBAAM,KAAN,EAAa,UAAC,KAAD,EAAQ,MAAR,EAAmB;AACnC,gBAAI,eAAJ;;AAEA,qBAAS,OAAO,OAAP,CAAe,MAAf,CAAT;;AAEA,gBAAI,2BAAY,KAAZ,MAAuB,OAAO,KAAlC,EAAyC;AACrC,uBAAO,KAAP;AACH,aAFD,MAEO;AACH,uBAAO,2BAAY,KAAZ,EAAmB,OAAO,KAA1B,EAAiC,OAAO,SAAxC,CAAP;AACH;AACJ,SAVM,CAAP;AAWH,KAZM,CAAP;AAaH,C","file":"alignTableData.js","sourcesContent":["import _ from 'lodash';\nimport alignString from './alignString';\nimport stringWidth from 'string-width';\n\n/**\n * @param {table~row[]} rows\n * @param {Object} config\n * @return {table~row[]}\n */\nexport default (rows, config) => {\n return _.map(rows, (cells) => {\n return _.map(cells, (value, index1) => {\n let column;\n\n column = config.columns[index1];\n\n if (stringWidth(value) === column.width) {\n return value;\n } else {\n return alignString(value, column.width, column.alignment);\n }\n });\n });\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["calculateCellHeight.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA;;;;AACA;;;;;;;;;;;;;kBAQe,UAAC,KAAD,EAAQ,WAAR,EAA6C;AAAA,QAAxB,WAAwB,yDAAV,KAAU;;AACxD,QAAI,CAAC,wBAAW,KAAX,CAAL,EAAwB;AACpB,cAAM,IAAI,KAAJ,CAAU,yBAAV,CAAN;AACH;;AAED,QAAI,CAAC,yBAAY,WAAZ,CAAL,EAA+B;AAC3B,cAAM,IAAI,KAAJ,CAAU,kCAAV,CAAN;AACH;;AAED,QAAI,cAAc,CAAlB,EAAqB;AACjB,cAAM,IAAI,KAAJ,CAAU,sCAAV,CAAN;AACH;;AAED,QAAI,WAAJ,EAAiB;AACb,eAAO,wBAAS,KAAT,EAAgB,WAAhB,EAA6B,MAApC;AACH;;AAED,WAAO,oBAAO,2BAAY,KAAZ,IAAqB,WAA5B,CAAP;AACH,C","file":"calculateCellHeight.js","sourcesContent":["import _ from 'lodash';\nimport stringWidth from 'string-width';\nimport wrapWord from './wrapWord';\n\n/**\n * @param {string} value\n * @param {number} columnWidth\n * @param {boolean} useWrapWord\n * @returns {number}\n */\nexport default (value, columnWidth, useWrapWord = false) => {\n if (!_.isString(value)) {\n throw new Error('Value must be a string.');\n }\n\n if (!_.isInteger(columnWidth)) {\n throw new Error('Column width must be an integer.');\n }\n\n if (columnWidth < 1) {\n throw new Error('Column width must be greater than 0.');\n }\n\n if (useWrapWord) {\n return wrapWord(value, columnWidth).length;\n }\n\n return _.ceil(stringWidth(value) / columnWidth);\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["calculateCellWidthIndex.js"],"names":[],"mappings":";;;;;;;;;;AACA;;;;;;;;;;;;;kBAQe,UAAC,KAAD,EAAW;AACtB,WAAO,mBAAM,KAAN,EAAa,UAAC,KAAD,EAAW;AAC3B,eAAO,2BAAY,KAAZ,CAAP;AACH,KAFM,CAAP;AAGH,C","file":"calculateCellWidthIndex.js","sourcesContent":["import _ from 'lodash';\nimport stringWidth from 'string-width';\n\n/**\n * Calculates width of each cell contents.\n *\n * @param {string[]} cells\n * @return {number[]}\n */\nexport default (cells) => {\n return _.map(cells, (value) => {\n return stringWidth(value);\n });\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["calculateMaximumColumnWidthIndex.js"],"names":[],"mappings":";;;;;;;;;;;;;;AACA;;;;;;;;;;;;;kBAQe,UAAC,IAAD,EAAU;AACrB,QAAI,gBAAJ;;AAEA,QAAI,CAAC,KAAK,CAAL,CAAL,EAAc;AACV,cAAM,IAAI,KAAJ,CAAU,qCAAV,CAAN;AACH;;AAED,cAAU,oBAAO,MAAM,KAAK,CAAL,EAAQ,MAAd,CAAP,EAA8B,CAA9B,CAAV;;AAEA,2BAAU,IAAV,EAAgB,UAAC,GAAD,EAAS;AACrB,YAAI,yBAAJ;;AAEA,2BAAmB,uCAAwB,GAAxB,CAAnB;;AAEA,+BAAU,gBAAV,EAA4B,UAAC,UAAD,EAAa,MAAb,EAAwB;AAChD,gBAAI,QAAQ,MAAR,IAAkB,UAAtB,EAAkC;AAC9B,wBAAQ,MAAR,IAAkB,UAAlB;AACH;AACJ,SAJD;AAKH,KAVD;;AAYA,WAAO,OAAP;AACH,C","file":"calculateMaximumColumnWidthIndex.js","sourcesContent":["import _ from 'lodash';\nimport calculateCellWidthIndex from './calculateCellWidthIndex';\n\n/**\n * Produces an array of values that describe the largest value length (width) in every column.\n *\n * @param {Array[]} rows\n * @return {number[]}\n */\nexport default (rows) => {\n let columns;\n\n if (!rows[0]) {\n throw new Error('Dataset must have at least one row.');\n }\n\n columns = _.fill(Array(rows[0].length), 0);\n\n _.forEach(rows, (row) => {\n let columnWidthIndex;\n\n columnWidthIndex = calculateCellWidthIndex(row);\n\n _.forEach(columnWidthIndex, (valueWidth, index0) => {\n if (columns[index0] < valueWidth) {\n columns[index0] = valueWidth;\n }\n });\n });\n\n return columns;\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["calculateRowHeightIndex.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;;;;;;;;;;;;;kBASe,UAAC,IAAD,EAAO,MAAP,EAAkB;AAC7B,QAAI,qBAAJ;QACI,mBADJ;;AAGA,iBAAa,KAAK,CAAL,EAAQ,MAArB;;AAEA,mBAAe,EAAf;;AAEA,2BAAU,IAAV,EAAgB,UAAC,KAAD,EAAW;AACvB,YAAI,wBAAJ;;AAEA,0BAAkB,oBAAO,MAAM,UAAN,CAAP,EAA0B,CAA1B,CAAlB;;AAEA,+BAAU,KAAV,EAAiB,UAAC,KAAD,EAAQ,MAAR,EAAmB;AAChC,gBAAI,CAAC,wBAAW,OAAO,OAAP,CAAe,MAAf,EAAuB,KAAlC,CAAL,EAA+C;AAC3C,sBAAM,IAAI,KAAJ,CAAU,uCAAV,CAAN;AACH;;AAED,gBAAI,CAAC,yBAAY,OAAO,OAAP,CAAe,MAAf,EAAuB,QAAnC,CAAL,EAAmD;AAC/C,sBAAM,IAAI,KAAJ,CAAU,2CAAV,CAAN;AACH;;AAED,4BAAgB,MAAhB,IAA0B,mCAAoB,KAApB,EAA2B,OAAO,OAAP,CAAe,MAAf,EAAuB,KAAlD,EAAyD,OAAO,OAAP,CAAe,MAAf,EAAuB,QAAhF,CAA1B;AACH,SAVD;;AAYA,qBAAa,IAAb,CAAkB,mBAAM,eAAN,CAAlB;AACH,KAlBD;;AAoBA,WAAO,YAAP;AACH,C","file":"calculateRowHeightIndex.js","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 * @return {number[]}\n */\nexport default (rows, config) => {\n let rowSpanIndex,\n tableWidth;\n\n tableWidth = rows[0].length;\n\n rowSpanIndex = [];\n\n _.forEach(rows, (cells) => {\n let cellHeightIndex;\n\n cellHeightIndex = _.fill(Array(tableWidth), 1);\n\n _.forEach(cells, (value, index1) => {\n if (!_.isNumber(config.columns[index1].width)) {\n throw new Error('column[index].width must be a number.');\n }\n\n if (!_.isBoolean(config.columns[index1].wrapWord)) {\n throw new Error('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"]}
|
package/dist/createStream.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["createStream.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;;;AACA;;;;AACA;;AAOA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;AACA;;;;;;AAEA,IAAI,eAAJ;IACI,eADJ;IAEI,oBAFJ;;;;;;;;AAUA,SAAS,gBAAC,GAAD,EAAM,gBAAN,EAAwB,MAAxB,EAAmC;AACxC,QAAI,aAAJ;QACI,eADJ;QAEI,aAFJ;;AAIA,WAAO,YAAY,CAAC,GAAD,CAAZ,EAAmB,MAAnB,CAAP;;AAEA,WAAO,mBAAM,IAAN,EAAY,UAAC,UAAD,EAAgB;AAC/B,eAAO,uBAAQ,UAAR,EAAoB,OAAO,MAA3B,CAAP;AACH,KAFM,EAEJ,IAFI,CAEC,EAFD,CAAP;;AAIA,aAAS,EAAT;AACA,cAAU,+BAAc,gBAAd,EAAgC,OAAO,MAAvC,CAAV;AACA,cAAU,IAAV;AACA,cAAU,kCAAiB,gBAAjB,EAAmC,OAAO,MAA1C,CAAV;;AAEA,aAAS,uBAAU,MAAV,CAAT;;AAEA,YAAQ,MAAR,CAAe,KAAf,CAAqB,MAArB;AACH,CAnBD;;;;;;;;AA2BA,SAAS,gBAAC,GAAD,EAAM,gBAAN,EAAwB,MAAxB,EAAmC;AACxC,QAAI,aAAJ;QACI,eADJ;QAEI,aAFJ;;AAIA,WAAO,YAAY,CAAC,GAAD,CAAZ,EAAmB,MAAnB,CAAP;;;;AAIA,WAAO,mBAAM,IAAN,EAAY,UAAC,UAAD,EAAgB;AAC/B,eAAO,uBAAQ,UAAR,EAAoB,OAAO,MAA3B,CAAP;AACH,KAFM,EAEJ,IAFI,CAEC,EAFD,CAAP;;AAIA,aAAS,UAAT;AACA,cAAU,gCAAe,gBAAf,EAAiC,OAAO,MAAxC,CAAV;AACA,cAAU,IAAV;AACA,cAAU,kCAAiB,gBAAjB,EAAmC,OAAO,MAA1C,CAAV;;AAEA,aAAS,uBAAU,MAAV,CAAT;;AAEA,YAAQ,MAAR,CAAe,KAAf,CAAqB,MAArB;AACH,CArBD;;;;;;;AA4BA,cAAc,qBAAC,IAAD,EAAO,MAAP,EAAkB;AAC5B,QAAI,uBAAJ;QACI,aADJ;;AAGA,WAAO,kCAAmB,IAAnB,CAAP;;AAEA,WAAO,iCAAkB,IAAlB,EAAwB,MAAxB,CAAP;;AAEA,qBAAiB,uCAAwB,IAAxB,EAA8B,MAA9B,CAAjB;;AAEA,WAAO,0CAA2B,IAA3B,EAAiC,cAAjC,EAAiD,MAAjD,CAAP;AACA,WAAO,8BAAe,IAAf,EAAqB,MAArB,CAAP;AACA,WAAO,4BAAa,IAAb,EAAmB,MAAnB,CAAP;;AAEA,WAAO,IAAP;AACH,CAfD;;;;;;;kBAqBe,YAAqB;AAAA,QAApB,UAAoB,yDAAP,EAAO;;AAChC,QAAI,yBAAJ;QACI,eADJ;QAEI,cAFJ;;AAIA,aAAS,gCAAiB,UAAjB,CAAT;;AAEA,uBAAmB,yBAAY,OAAO,OAAnB,EAA4B,UAAC,MAAD,EAAY;AACvD,eAAO,OAAO,KAAP,GAAe,OAAO,WAAtB,GAAoC,OAAO,YAAlD;AACH,KAFkB,CAAnB;;AAIA,YAAQ,IAAR;;AAEA,WAAO;;;;;AAKH,eAAO,eAAC,GAAD,EAAS;AACZ,gBAAI,IAAI,MAAJ,KAAe,OAAO,WAA1B,EAAuC;AACnC,sBAAM,IAAI,KAAJ,CAAU,uDAAV,CAAN;AACH;;AAED,gBAAI,KAAJ,EAAW;AACP,wBAAQ,KAAR;;AAEA,uBAAO,OAAO,GAAP,EAAY,gBAAZ,EAA8B,MAA9B,CAAP;AACH,aAJD,MAIO;AACH,uBAAO,OAAO,GAAP,EAAY,gBAAZ,EAA8B,MAA9B,CAAP;AACH;AACJ;AAjBE,KAAP;AAmBH,C","file":"createStream.js","sourcesContent":["import makeStreamConfig from './makeStreamConfig';\nimport drawRow from './drawRow';\nimport {\n drawBorderBottom,\n drawBorderJoin,\n drawBorderTop\n} from './drawBorder';\nimport _ from 'lodash';\n\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\nlet append,\n create,\n prepareData;\n\n/**\n * @param {string[]} row\n * @param {number[]} columnWidthIndex\n * @param {Object} config\n * @returns {undefined}\n */\ncreate = (row, columnWidthIndex, config) => {\n let body,\n output,\n rows;\n\n rows = prepareData([row], config);\n\n body = _.map(rows, (literalRow) => {\n return drawRow(literalRow, config.border);\n }).join('');\n\n output = '';\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 */\nappend = (row, columnWidthIndex, config) => {\n let body,\n output,\n rows;\n\n rows = prepareData([row], config);\n\n // console.log('rows', rows);\n\n body = _.map(rows, (literalRow) => {\n return drawRow(literalRow, config.border);\n }).join('');\n\n output = '\\r\\x1b[K';\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 {Array} data\n * @param {Object} config\n * @returns {Array}\n */\nprepareData = (data, config) => {\n let rowHeightIndex,\n rows;\n\n rows = stringifyTableData(data);\n\n rows = truncateTableData(data, config);\n\n 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 {Object} userConfig\n * @return {Object}\n */\nexport default (userConfig = {}) => {\n let columnWidthIndex,\n config,\n empty;\n\n config = makeStreamConfig(userConfig);\n\n columnWidthIndex = _.mapValues(config.columns, (column) => {\n return column.width + column.paddingLeft + column.paddingRight;\n });\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"]}
|
package/dist/drawBorder.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["drawBorder.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,IAAI,mBAAJ;IACI,yBADJ;IAEI,uBAFJ;IAGI,sBAHJ;;;;;;;;;;;;;;;AAkBA,QA+EI,UA/EJ,gBAAa,oBAAC,eAAD,EAAkB,KAAlB,EAA4B;AACrC,QAAI,gBAAJ;;AAEA,cAAU,mBAAM,eAAN,EAAuB,UAAC,IAAD,EAAU;AACvC,eAAO,sBAAS,MAAM,IAAf,EAAqB,IAArB,CAAP;AACH,KAFS,CAAV;;AAIA,cAAU,QAAQ,IAAR,CAAa,MAAM,IAAnB,CAAV;;AAEA,WAAO,MAAM,IAAN,GAAa,OAAb,GAAuB,MAAM,KAA7B,GAAqC,IAA5C;AACH,CAVD;;;;;;;;;;;;;;;AAyBA,QAuDI,aAvDJ,mBAAgB,uBAAC,eAAD,EAAkB,KAAlB,EAA4B;AACxC,WAAO,WAAW,eAAX,EAA4B;AAC/B,cAAM,MAAM,OADmB;AAE/B,eAAO,MAAM,QAFkB;AAG/B,cAAM,MAAM,OAHmB;AAI/B,cAAM,MAAM;AAJmB,KAA5B,CAAP;AAMH,CAPD;;;;;;;;;;;;;;;AAsBA,QAkCI,cAlCJ,oBAAiB,wBAAC,eAAD,EAAkB,KAAlB,EAA4B;AACzC,WAAO,WAAW,eAAX,EAA4B;AAC/B,cAAM,MAAM,QADmB;AAE/B,eAAO,MAAM,SAFkB;AAG/B,cAAM,MAAM,QAHmB;AAI/B,cAAM,MAAM;AAJmB,KAA5B,CAAP;AAMH,CAPD;;;;;;;;;;;;;;;AAsBA,QAaI,gBAbJ,sBAAmB,0BAAC,eAAD,EAAkB,KAAlB,EAA4B;AAC3C,WAAO,WAAW,eAAX,EAA4B;AAC/B,cAAM,MAAM,UADmB;AAE/B,eAAO,MAAM,WAFkB;AAG/B,cAAM,MAAM,UAHmB;AAI/B,cAAM,MAAM;AAJmB,KAA5B,CAAP;AAMH,CAPD;;QAUI,U,GAAA,U;QACA,a,GAAA,a;QACA,c,GAAA,c;QACA,gB,GAAA,gB","file":"drawBorder.js","sourcesContent":["import _ from 'lodash';\n\nlet drawBorder,\n drawBorderBottom,\n drawBorderJoin,\n drawBorderTop;\n\n/**\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 */\ndrawBorder = (columnSizeIndex, parts) => {\n let columns;\n\n columns = _.map(columnSizeIndex, (size) => {\n return _.repeat(parts.body, size);\n });\n\n columns = columns.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 * @return {string}\n */\ndrawBorderTop = (columnSizeIndex, parts) => {\n return drawBorder(columnSizeIndex, {\n left: parts.topLeft,\n right: parts.topRight,\n body: parts.topBody,\n join: parts.topJoin\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 */\ndrawBorderJoin = (columnSizeIndex, parts) => {\n return drawBorder(columnSizeIndex, {\n left: parts.joinLeft,\n right: parts.joinRight,\n body: parts.joinBody,\n join: parts.joinJoin\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 */\ndrawBorderBottom = (columnSizeIndex, parts) => {\n return drawBorder(columnSizeIndex, {\n left: parts.bottomLeft,\n right: parts.bottomRight,\n body: parts.bottomBody,\n join: parts.bottomJoin\n });\n};\n\nexport {\n drawBorder,\n drawBorderTop,\n drawBorderJoin,\n drawBorderBottom\n};\n"]}
|