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