38 lines
1.7 KiB
JavaScript
38 lines
1.7 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var DEFAULT_RECORD_DELIMITER = '\n';
|
|
var VALID_RECORD_DELIMITERS = [DEFAULT_RECORD_DELIMITER, '\r\n'];
|
|
var CsvStringifier = /** @class */ (function () {
|
|
function CsvStringifier(fieldStringifier, recordDelimiter) {
|
|
if (recordDelimiter === void 0) { recordDelimiter = DEFAULT_RECORD_DELIMITER; }
|
|
this.fieldStringifier = fieldStringifier;
|
|
this.recordDelimiter = recordDelimiter;
|
|
_validateRecordDelimiter(recordDelimiter);
|
|
}
|
|
CsvStringifier.prototype.getHeaderString = function () {
|
|
var headerRecord = this.getHeaderRecord();
|
|
return headerRecord ? this.joinRecords([this.getCsvLine(headerRecord)]) : null;
|
|
};
|
|
CsvStringifier.prototype.stringifyRecords = function (records) {
|
|
var _this = this;
|
|
var csvLines = Array.from(records, function (record) { return _this.getCsvLine(_this.getRecordAsArray(record)); });
|
|
return this.joinRecords(csvLines);
|
|
};
|
|
CsvStringifier.prototype.getCsvLine = function (record) {
|
|
var _this = this;
|
|
return record
|
|
.map(function (fieldValue) { return _this.fieldStringifier.stringify(fieldValue); })
|
|
.join(this.fieldStringifier.fieldDelimiter);
|
|
};
|
|
CsvStringifier.prototype.joinRecords = function (records) {
|
|
return records.join(this.recordDelimiter) + this.recordDelimiter;
|
|
};
|
|
return CsvStringifier;
|
|
}());
|
|
exports.CsvStringifier = CsvStringifier;
|
|
function _validateRecordDelimiter(delimiter) {
|
|
if (VALID_RECORD_DELIMITERS.indexOf(delimiter) === -1) {
|
|
throw new Error("Invalid record delimiter `" + delimiter + "` is specified");
|
|
}
|
|
}
|
|
//# sourceMappingURL=abstract.js.map
|