UNPKG

@catull/igniteui-angular

Version:

Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps

64 lines 9.33 kB
import { ExportUtilities } from '../exporter-common/export-utilities'; /** * @hidden */ export class CharSeparatedValueData { constructor(_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); } prepareData() { if (!this._data || this._data.length === 0) { return ''; } const 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; } processField(value, escapeChars) { let safeValue = ExportUtilities.hasValue(value) ? String(value) : ''; if (escapeChars.some((v) => safeValue.includes(v))) { safeValue = `"${safeValue}"`; } return safeValue + this._delimiter; } processHeaderRecord(keys, escapeChars) { let recordData = ''; for (const keyName of keys) { recordData += this.processField(keyName, this._escapeCharacters); } return recordData.slice(0, -this._delimiterLength) + this._eor; } processRecord(record, keys, escapeChars) { let recordData = ''; for (const keyName of keys) { const value = (record[keyName] !== undefined) ? record[keyName] : this._isSpecialData ? record : ''; recordData += this.processField(value, this._escapeCharacters); } return recordData.slice(0, -this._delimiterLength) + this._eor; } processDataRecords(currentData, keys, escapeChars) { let dataRecords = ''; for (const row of currentData) { dataRecords += this.processRecord(row, keys, escapeChars); } return dataRecords; } setDelimiter(value) { this._delimiter = value; this._delimiterLength = value.length; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhci1zZXBhcmF0ZWQtdmFsdWUtZGF0YS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2lnbml0ZXVpLWFuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvY3N2L2NoYXItc2VwYXJhdGVkLXZhbHVlLWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRXRFOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHNCQUFzQjtJQVMvQixZQUFvQixLQUFZLEVBQUUsY0FBc0I7UUFBcEMsVUFBSyxHQUFMLEtBQUssQ0FBTztRQVJ4QixrQkFBYSxHQUFHLEVBQUUsQ0FBQztRQUNuQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixTQUFJLEdBQUcsTUFBTSxDQUFDO1FBRWQsc0JBQWlCLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLHFCQUFnQixHQUFHLENBQUMsQ0FBQztRQUNyQixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUczQixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxNQUFNLElBQUksR0FBRyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV6RCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ25CLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTdDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUV0RixPQUFPLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNsRCxDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQUssRUFBRSxXQUFXO1FBQ25DLElBQUksU0FBUyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hELFNBQVMsR0FBRyxJQUFJLFNBQVMsR0FBRyxDQUFDO1NBQ2hDO1FBQ0QsT0FBTyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBSSxFQUFFLFdBQVc7UUFDekMsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxFQUFFO1lBQ3hCLFVBQVUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUNwRTtRQUVELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25FLENBQUM7SUFFTyxhQUFhLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXO1FBQzNDLElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNwQixLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksRUFBRTtZQUV4QixNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwRyxVQUFVLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDbEU7UUFFRCxPQUFPLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuRSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXO1FBQ3JELElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixLQUFLLE1BQU0sR0FBRyxJQUFJLFdBQVcsRUFBRTtZQUMzQixXQUFXLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1NBQzdEO1FBRUQsT0FBTyxXQUFXLENBQUM7SUFDdkIsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFLO1FBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ3pDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4cG9ydFV0aWxpdGllcyB9IGZyb20gJy4uL2V4cG9ydGVyLWNvbW1vbi9leHBvcnQtdXRpbGl0aWVzJztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbmV4cG9ydCBjbGFzcyBDaGFyU2VwYXJhdGVkVmFsdWVEYXRhIHtcbiAgICBwcml2YXRlIF9oZWFkZXJSZWNvcmQgPSAnJztcbiAgICBwcml2YXRlIF9kYXRhUmVjb3JkcyA9ICcnO1xuICAgIHByaXZhdGUgX2VvciA9ICdcXHJcXG4nO1xuICAgIHByaXZhdGUgX2RlbGltaXRlcjtcbiAgICBwcml2YXRlIF9lc2NhcGVDaGFyYWN0ZXJzID0gWydcXHInLCAnXFxuJywgJ1xcclxcbiddO1xuICAgIHByaXZhdGUgX2RlbGltaXRlckxlbmd0aCA9IDE7XG4gICAgcHJpdmF0ZSBfaXNTcGVjaWFsRGF0YSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfZGF0YTogYW55W10sIHZhbHVlRGVsaW1pdGVyOiBzdHJpbmcpICB7XG4gICAgICAgIHRoaXMuc2V0RGVsaW1pdGVyKHZhbHVlRGVsaW1pdGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJlcGFyZURhdGEoKSB7XG4gICAgICAgIGlmICghdGhpcy5fZGF0YSB8fCB0aGlzLl9kYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2V5cyA9IEV4cG9ydFV0aWxpdGllcy5nZXRLZXlzRnJvbURhdGEodGhpcy5fZGF0YSk7XG5cbiAgICAgICAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9pc1NwZWNpYWxEYXRhID0gRXhwb3J0VXRpbGl0aWVzLmlzU3BlY2lhbERhdGEodGhpcy5fZGF0YSk7XG4gICAgICAgIHRoaXMuX2VzY2FwZUNoYXJhY3RlcnMucHVzaCh0aGlzLl9kZWxpbWl0ZXIpO1xuXG4gICAgICAgIHRoaXMuX2hlYWRlclJlY29yZCA9IHRoaXMucHJvY2Vzc0hlYWRlclJlY29yZChrZXlzLCB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzKTtcbiAgICAgICAgdGhpcy5fZGF0YVJlY29yZHMgPSB0aGlzLnByb2Nlc3NEYXRhUmVjb3Jkcyh0aGlzLl9kYXRhLCBrZXlzLCB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5faGVhZGVyUmVjb3JkICsgdGhpcy5fZGF0YVJlY29yZHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzRmllbGQodmFsdWUsIGVzY2FwZUNoYXJzKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHNhZmVWYWx1ZSA9IEV4cG9ydFV0aWxpdGllcy5oYXNWYWx1ZSh2YWx1ZSkgPyBTdHJpbmcodmFsdWUpIDogJyc7XG4gICAgICAgIGlmIChlc2NhcGVDaGFycy5zb21lKCh2KSA9PiBzYWZlVmFsdWUuaW5jbHVkZXModikpKSB7XG4gICAgICAgICAgICBzYWZlVmFsdWUgPSBgXCIke3NhZmVWYWx1ZX1cImA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNhZmVWYWx1ZSArIHRoaXMuX2RlbGltaXRlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NIZWFkZXJSZWNvcmQoa2V5cywgZXNjYXBlQ2hhcnMpOiBzdHJpbmcge1xuICAgICAgICBsZXQgcmVjb3JkRGF0YSA9ICcnO1xuICAgICAgICBmb3IgKGNvbnN0IGtleU5hbWUgb2Yga2V5cykge1xuICAgICAgICAgICAgcmVjb3JkRGF0YSArPSB0aGlzLnByb2Nlc3NGaWVsZChrZXlOYW1lLCB0aGlzLl9lc2NhcGVDaGFyYWN0ZXJzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWNvcmREYXRhLnNsaWNlKDAsIC10aGlzLl9kZWxpbWl0ZXJMZW5ndGgpICsgdGhpcy5fZW9yO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvY2Vzc1JlY29yZChyZWNvcmQsIGtleXMsIGVzY2FwZUNoYXJzKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlY29yZERhdGEgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBrZXlOYW1lIG9mIGtleXMpIHtcblxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSAocmVjb3JkW2tleU5hbWVdICE9PSB1bmRlZmluZWQpID8gcmVjb3JkW2tleU5hbWVdIDogdGhpcy5faXNTcGVjaWFsRGF0YSA/IHJlY29yZCA6ICcnO1xuICAgICAgICAgICAgcmVjb3JkRGF0YSArPSB0aGlzLnByb2Nlc3NGaWVsZCh2YWx1ZSwgdGhpcy5fZXNjYXBlQ2hhcmFjdGVycyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVjb3JkRGF0YS5zbGljZSgwLCAtdGhpcy5fZGVsaW1pdGVyTGVuZ3RoKSArIHRoaXMuX2VvcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIHByb2Nlc3NEYXRhUmVjb3JkcyhjdXJyZW50RGF0YSwga2V5cywgZXNjYXBlQ2hhcnMpIHtcbiAgICAgICAgbGV0IGRhdGFSZWNvcmRzID0gJyc7XG4gICAgICAgIGZvciAoY29uc3Qgcm93IG9mIGN1cnJlbnREYXRhKSB7XG4gICAgICAgICAgICBkYXRhUmVjb3JkcyArPSB0aGlzLnByb2Nlc3NSZWNvcmQocm93LCBrZXlzLCBlc2NhcGVDaGFycyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZGF0YVJlY29yZHM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREZWxpbWl0ZXIodmFsdWUpIHtcbiAgICAgICAgdGhpcy5fZGVsaW1pdGVyID0gdmFsdWU7XG4gICAgICAgIHRoaXMuX2RlbGltaXRlckxlbmd0aCA9IHZhbHVlLmxlbmd0aDtcbiAgICB9XG59XG4iXX0=