17fd35d1eadefc090a7667a12444f2211b6db5ea
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / table / dist / makeConfig.js
1 "use strict";
2
3 Object.defineProperty(exports, "__esModule", {
4   value: true
5 });
6 exports.default = void 0;
7
8 var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
9
10 var _isUndefined2 = _interopRequireDefault(require("lodash/isUndefined"));
11
12 var _times2 = _interopRequireDefault(require("lodash/times"));
13
14 var _getBorderCharacters = _interopRequireDefault(require("./getBorderCharacters"));
15
16 var _validateConfig = _interopRequireDefault(require("./validateConfig"));
17
18 var _calculateMaximumColumnWidthIndex = _interopRequireDefault(require("./calculateMaximumColumnWidthIndex"));
19
20 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22 /**
23  * Merges user provided border characters with the default border ("honeywell") characters.
24  *
25  * @param {Object} border
26  * @returns {Object}
27  */
28 const makeBorder = (border = {}) => {
29   return Object.assign({}, (0, _getBorderCharacters.default)('honeywell'), border);
30 };
31 /**
32  * Creates a configuration for every column using default
33  * values for the missing configuration properties.
34  *
35  * @param {Array[]} rows
36  * @param {Object} columns
37  * @param {Object} columnDefault
38  * @returns {Object}
39  */
40
41
42 const makeColumns = (rows, columns = {}, columnDefault = {}) => {
43   const maximumColumnWidthIndex = (0, _calculateMaximumColumnWidthIndex.default)(rows);
44   (0, _times2.default)(rows[0].length, index => {
45     if ((0, _isUndefined2.default)(columns[index])) {
46       columns[index] = {};
47     }
48
49     columns[index] = Object.assign({
50       alignment: 'left',
51       paddingLeft: 1,
52       paddingRight: 1,
53       truncate: Infinity,
54       width: maximumColumnWidthIndex[index],
55       wrapWord: false
56     }, columnDefault, columns[index]);
57   });
58   return columns;
59 };
60 /**
61  * Makes a new configuration object out of the userConfig object
62  * using default values for the missing configuration properties.
63  *
64  * @param {Array[]} rows
65  * @param {Object} userConfig
66  * @returns {Object}
67  */
68
69
70 const makeConfig = (rows, userConfig = {}) => {
71   (0, _validateConfig.default)('config.json', userConfig);
72   const config = (0, _cloneDeep2.default)(userConfig);
73   config.border = makeBorder(config.border);
74   config.columns = makeColumns(rows, config.columns, config.columnDefault);
75
76   if (!config.drawHorizontalLine) {
77     /**
78          * @returns {boolean}
79          */
80     config.drawHorizontalLine = () => {
81       return true;
82     };
83   }
84
85   if (config.singleLine === undefined) {
86     config.singleLine = false;
87   }
88
89   return config;
90 };
91
92 var _default = makeConfig;
93 exports.default = _default;
94 //# sourceMappingURL=makeConfig.js.map