UNPKG

moonlifedb

Version:

A JSON database with a bunch of tools and typescript support.

71 lines (70 loc) 3.37 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.CosmeticConstructor = void 0; class CosmeticConstructor { /** * A table generator tool. * Creates a summary table based on Object of Arrays. * @example const table = new Table.summaryTableY({ firstColumn: ['User1', 'User2'], secondColumn: ['Lissa Squeens'] }, 'longest'); * * @param {Object} table object of your table, where every element should be string[] | number[] | boolean[] * @param {Number|'longest'} length how wide each column has to be */ summaryTableY(settings) { var lengths = 0; var minlength = 0; for (const [key, value] of Object.entries(settings.table)) { if (String(key).length > minlength) minlength = String(key).length; value.forEach((element) => { if (String(element).length > minlength) minlength = String(element).length; }); } if (settings.length == 'longest' || !settings.length) { lengths = minlength; } else { if (minlength < settings.length) { const lengthError = '\u001b[1;31mLength must be greater or equal to minimum length\u001b[0m\n' + `\t\u001b[0;30mmin: \u001b[0m\u001b[0;33m${minlength}\u001b[0m \u001b[1;31m<\u001b[0m \u001b[1;36m${length}\u001b[0m` + '\u001b[0m'; throw new Error(lengthError); } else lengths = settings.length; } if (lengths < 1) { const lengthError = '\u001b[1;31mLength must be greater than 0' + '\u001b[0m'; throw new Error(lengthError); } var visualTable = ''; if (settings.tableName != undefined) visualTable += '| ' + settings.tableName + '\n'; visualTable += '|' + (' ' + '-'.repeat(lengths) + ' |').repeat(Object.keys(settings.table).length) + '\n|'; for (const [key] of Object.entries(settings.table)) { visualTable += ' ' + key + ' '.repeat(lengths - key.length) + ' |'; } visualTable += '\n|' + (' ' + '-'.repeat(lengths) + ' |').repeat(Object.keys(settings.table).length) + '\n|'; var maxlines = 0; for (const [key] of Object.entries(settings.table)) { if (settings.table[key].length > maxlines) maxlines = settings.table[key].length; } for (let line = 0; line < maxlines; line++) { let i = -1; for (const [key] of Object.entries(settings.table)) { i++; if (settings.table[key].length > maxlines) maxlines = settings.table[key].length; let arr = []; settings.table[key].forEach((dir) => { arr.push(dir); }); visualTable += (' ' + String(arr[line] != undefined ? arr[line] : ' ') + ' '.repeat(lengths - String(arr[line] != undefined ? arr[line] : ' ').length) + ' |'); } visualTable += '\n|'; } visualTable += (' ' + '-'.repeat(lengths) + ' |').repeat(Object.keys(settings.table).length) + '\n'; return visualTable; } } exports.CosmeticConstructor = CosmeticConstructor;