@spare/csv
Version:
Csv table formatter
52 lines (44 loc) • 1.49 kB
JavaScript
;
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;