.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / stylelint / node_modules / table / dist / makeStreamConfig.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 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
21 /**
22  * Merges user provided border characters with the default border ("honeywell") characters.
23  *
24  * @param {Object} border
25  * @returns {Object}
26  */
27 const makeBorder = function makeBorder() {
28   let border = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
29
30   return Object.assign({}, (0, _getBorderCharacters2.default)('honeywell'), border);
31 };
32
33 /**
34  * Creates a configuration for every column using default
35  * values for the missing configuration properties.
36  *
37  * @param {number} columnCount
38  * @param {Object} columns
39  * @param {Object} columnDefault
40  * @returns {Object}
41  */
42 const makeColumns = function makeColumns(columnCount) {
43   let columns = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
44   let columnDefault = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
45
46   _lodash2.default.times(columnCount, index => {
47     if (_lodash2.default.isUndefined(columns[index])) {
48       columns[index] = {};
49     }
50
51     columns[index] = Object.assign({
52       alignment: 'left',
53       paddingLeft: 1,
54       paddingRight: 1,
55       truncate: Infinity,
56       wrapWord: false
57     }, columnDefault, columns[index]);
58   });
59
60   return columns;
61 };
62
63 /**
64  * @typedef {Object} columnConfig
65  * @property {string} alignment
66  * @property {number} width
67  * @property {number} truncate
68  * @property {number} paddingLeft
69  * @property {number} paddingRight
70  */
71
72 /**
73  * @typedef {Object} streamConfig
74  * @property {columnConfig} columnDefault
75  * @property {Object} border
76  * @property {columnConfig[]}
77  * @property {number} columnCount Number of columns in the table (required).
78  */
79
80 /**
81  * Makes a new configuration object out of the userConfig object
82  * using default values for the missing configuration properties.
83  *
84  * @param {streamConfig} userConfig
85  * @returns {Object}
86  */
87
88 exports.default = function () {
89   let userConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
90
91   (0, _validateConfig2.default)('streamConfig.json', userConfig);
92
93   const config = _lodash2.default.cloneDeep(userConfig);
94
95   if (!config.columnDefault || !config.columnDefault.width) {
96     throw new Error('Must provide config.columnDefault.width when creating a stream.');
97   }
98
99   if (!config.columnCount) {
100     throw new Error('Must provide config.columnCount.');
101   }
102
103   config.border = makeBorder(config.border);
104   config.columns = makeColumns(config.columnCount, config.columns, config.columnDefault);
105
106   return config;
107 };