UNPKG

@spare/csv

Version:
52 lines (44 loc) 1.49 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var enumChars = require('@spare/enum-chars'); var tableMargin = require('@spare/table-margin'); var tablePadder = require('@spare/table-padder'); var matrix = require('@vect/matrix'); class Csv { /*** * * @param {Object} table * @param {Object} option * * * @param {Function} [option.read] * @param {Function} [option.headRead] * * @param {number} [option.top] * @param {number} [option.bottom] * @param {number} [option.left] * @param {number} [option.right] * * @param {boolean} [option.ansi=true] * @param {boolean} [option.fullAngle] * @param {number} [option.level=0] * * @returns {string} */ static table(table, option = {}) { if (!table) return enumChars.AEU; let matrix$1 = table.rows || table.matrix, banner = table.head || table.banner; const [height, width] = matrix.size(matrix$1), labelWidth = banner === null || banner === void 0 ? void 0 : banner.length; if (!height || !width || !labelWidth) return enumChars.AEU; table = tableMargin.tableMargin(table, option); // use: top, left, bottom ,right, read, headRead let { head, rows } = tablePadder.tablePadder(table, option); // use: ansi, full matrix.mutate(rows, text => text.includes(',') ? `"${text}"` : text); return [head.join(','), ...rows.map(row => row.join(','))].join(enumChars.LF); } } exports.Csv = Csv;