@catull/igniteui-angular
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
100 lines • 11.4 kB
JavaScript
import { __values } from "tslib";
import { ExportUtilities } from '../exporter-common/export-utilities';
/**
* @hidden
*/
var CharSeparatedValueData = /** @class */ (function () {
function CharSeparatedValueData(_data, valueDelimiter) {
this._data = _data;
this._headerRecord = '';
this._dataRecords = '';
this._eor = '\r\n';
this._escapeCharacters = ['\r', '\n', '\r\n'];
this._delimiterLength = 1;
this._isSpecialData = false;
this.setDelimiter(valueDelimiter);
}
CharSeparatedValueData.prototype.prepareData = function () {
if (!this._data || this._data.length === 0) {
return '';
}
var keys = ExportUtilities.getKeysFromData(this._data);
if (keys.length === 0) {
return '';
}
this._isSpecialData = ExportUtilities.isSpecialData(this._data);
this._escapeCharacters.push(this._delimiter);
this._headerRecord = this.processHeaderRecord(keys, this._escapeCharacters);
this._dataRecords = this.processDataRecords(this._data, keys, this._escapeCharacters);
return this._headerRecord + this._dataRecords;
};
CharSeparatedValueData.prototype.processField = function (value, escapeChars) {
var safeValue = ExportUtilities.hasValue(value) ? String(value) : '';
if (escapeChars.some(function (v) { return safeValue.includes(v); })) {
safeValue = "\"" + safeValue + "\"";
}
return safeValue + this._delimiter;
};
CharSeparatedValueData.prototype.processHeaderRecord = function (keys, escapeChars) {
var e_1, _a;
var recordData = '';
try {
for (var keys_1 = __values(keys), keys_1_1 = keys_1.next(); !keys_1_1.done; keys_1_1 = keys_1.next()) {
var keyName = keys_1_1.value;
recordData += this.processField(keyName, this._escapeCharacters);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (keys_1_1 && !keys_1_1.done && (_a = keys_1.return)) _a.call(keys_1);
}
finally { if (e_1) throw e_1.error; }
}
return recordData.slice(0, -this._delimiterLength) + this._eor;
};
CharSeparatedValueData.prototype.processRecord = function (record, keys, escapeChars) {
var e_2, _a;
var recordData = '';
try {
for (var keys_2 = __values(keys), keys_2_1 = keys_2.next(); !keys_2_1.done; keys_2_1 = keys_2.next()) {
var keyName = keys_2_1.value;
var value = (record[keyName] !== undefined) ? record[keyName] : this._isSpecialData ? record : '';
recordData += this.processField(value, this._escapeCharacters);
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (keys_2_1 && !keys_2_1.done && (_a = keys_2.return)) _a.call(keys_2);
}
finally { if (e_2) throw e_2.error; }
}
return recordData.slice(0, -this._delimiterLength) + this._eor;
};
CharSeparatedValueData.prototype.processDataRecords = function (currentData, keys, escapeChars) {
var e_3, _a;
var dataRecords = '';
try {
for (var currentData_1 = __values(currentData), currentData_1_1 = currentData_1.next(); !currentData_1_1.done; currentData_1_1 = currentData_1.next()) {
var row = currentData_1_1.value;
dataRecords += this.processRecord(row, keys, escapeChars);
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (currentData_1_1 && !currentData_1_1.done && (_a = currentData_1.return)) _a.call(currentData_1);
}
finally { if (e_3) throw e_3.error; }
}
return dataRecords;
};
CharSeparatedValueData.prototype.setDelimiter = function (value) {
this._delimiter = value;
this._delimiterLength = value.length;
};
return CharSeparatedValueData;
}());
export { CharSeparatedValueData };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvY3N2L2NoYXItc2VwYXJhdGVkLXZhbHVlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUV0RTs7R0FFRztBQUNIO0lBU0ksZ0NBQW9CLEtBQVksRUFBRSxjQUFzQjtRQUFwQyxVQUFLLEdBQUwsS0FBSyxDQUFPO1FBUnhCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLFNBQUksR0FBRyxNQUFNLENBQUM7UUFFZCxzQkFBaUIsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDekMscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBRzNCLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLDRDQUFXLEdBQWxCO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFNLElBQUksR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25CLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVB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SUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDekMsQ0FBQztJQUNMLDZCQUFDO0FBQUQsQ0FBQyxBQTFFRCxJQTBFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4cG9ydFV0aWxpdGllcyB9IGZyb20gJy4uL2V4cG9ydGVyLWNvbW1vbi9leHBvcnQtdXRpbGl0aWVzJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBDaGFyU2VwYXJhdGVkVmFsdWVEYXRhIHtcbiAgICBwcml2YXRlIF9oZWFkZXJSZWNvcmQgPSAnJztcbiAgICBwcml2YXRlIF9kYXRhUmVjb3JkcyA9ICcnO1xuICAgIHByaXZhdGUgX2VvciA9ICdcXHJcXG4nO1xuICAgIHByaXZhdGUgX2RlbGltaXRlcjtcbiAgICBwcml2YXRlIF9lc2NhcGVDaGFyYWN0ZXJzID0gWydcXHInLCAnXFxuJywgJ1xcclxcbiddO1xuICAgIHByaXZhdGUgX2RlbGltaXRlckxlbmd0aCA9IDE7XG4gICAgcHJpdmF0ZSBfaXNTcGVjaWFsRGF0YSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YTogYW55W10sIHZhbHVlRGVsaW1pdGVyOiBzdHJpbmcpICB7XG4gICAgICAgIHRoaXMuc2V0RGVsaW1pdGVyKHZhbHVlRGVsaW1pdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJlcGFyZURhdGEoKSB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YSB8fCB0aGlzLl9kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2V5cyA9IEV4cG9ydFV0aWxpdGllcy5nZXRLZXlzRnJvbURhdGEodGhpcy5fZGF0YSk7XG5cbiAgICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pc1NwZWNpYWxEYXRhID0gRXhwb3J0VXRpbGl0aWVzLmlzU3BlY2lhbERhdGEodGhpcy5fZGF0YSk7XG4gICAgICAgIHRoaXMuX2VzY2FwZUNoYXJhY3RlcnMucHVzaCh0aGlzLl9kZWxpbWl0ZXIpO1xuXG4gICAgICAgIHRoaXMuX2hlYWRlclJlY29yZCA9IHRoaXMucHJvY2Vzc0hlYWRlclJlY29yZChrZXlzLCB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzKTtcbiAgICAgICAgdGhpcy5fZGF0YVJlY29yZHMgPSB0aGlzLnByb2Nlc3NEYXRhUmVjb3Jkcyh0aGlzLl9kYXRhLCBrZXlzLCB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyUmVjb3JkICsgdGhpcy5fZGF0YVJlY29yZHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzRmllbGQodmFsdWUsIGVzY2FwZUNoYXJzKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHNhZmVWYWx1ZSA9IEV4cG9ydFV0aWxpdGllcy5oYXNWYWx1ZSh2YWx1ZSkgPyBTdHJpbmcodmFsdWUpIDogJyc7XG4gICAgICAgIGlmIChlc2NhcGVDaGFycy5zb21lKCh2KSA9PiBzYWZlVmFsdWUuaW5jbHVkZXModikpKSB7XG4gICAgICAgICAgICBzYWZlVmFsdWUgPSBgXCIke3NhZmVWYWx1ZX1cImA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNhZmVWYWx1ZSArIHRoaXMuX2RlbGltaXRlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NIZWFkZXJSZWNvcmQoa2V5cywgZXNjYXBlQ2hhcnMpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmVjb3JkRGF0YSA9ICcnO1xuICAgICAgICBmb3IgKGNvbnN0IGtleU5hbWUgb2Yga2V5cykge1xuICAgICAgICAgICAgcmVjb3JkRGF0YSArPSB0aGlzLnByb2Nlc3NGaWVsZChrZXlOYW1lLCB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWNvcmREYXRhLnNsaWNlKDAsIC10aGlzLl9kZWxpbWl0ZXJMZW5ndGgpICsgdGhpcy5fZW9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1JlY29yZChyZWNvcmQsIGtleXMsIGVzY2FwZUNoYXJzKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlY29yZERhdGEgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBrZXlOYW1lIG9mIGtleXMpIHtcblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAocmVjb3JkW2tleU5hbWVdICE9PSB1bmRlZmluZWQpID8gcmVjb3JkW2tleU5hbWVdIDogdGhpcy5faXNTcGVjaWFsRGF0YSA/IHJlY29yZCA6ICcnO1xuICAgICAgICAgICAgcmVjb3JkRGF0YSArPSB0aGlzLnByb2Nlc3NGaWVsZCh2YWx1ZSwgdGhpcy5fZXNjYXBlQ2hhcmFjdGVycyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVjb3JkRGF0YS5zbGljZSgwLCAtdGhpcy5fZGVsaW1pdGVyTGVuZ3RoKSArIHRoaXMuX2VvcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NEYXRhUmVjb3JkcyhjdXJyZW50RGF0YSwga2V5cywgZXNjYXBlQ2hhcnMpIHtcbiAgICAgICAgbGV0IGRhdGFSZWNvcmRzID0gJyc7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIGN1cnJlbnREYXRhKSB7XG4gICAgICAgICAgICBkYXRhUmVjb3JkcyArPSB0aGlzLnByb2Nlc3NSZWNvcmQocm93LCBrZXlzLCBlc2NhcGVDaGFycyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YVJlY29yZHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWxpbWl0ZXIodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fZGVsaW1pdGVyID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RlbGltaXRlckxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICB9XG59XG4iXX0=