69 lines
3.0 KiB
JavaScript
69 lines
3.0 KiB
JavaScript
"use strict";
|
|
var __extends = (this && this.__extends) || (function () {
|
|
var extendStatics = function (d, b) {
|
|
extendStatics = Object.setPrototypeOf ||
|
|
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
return extendStatics(d, b);
|
|
};
|
|
return function (d, b) {
|
|
extendStatics(d, b);
|
|
function __() { this.constructor = d; }
|
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
};
|
|
})();
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var DEFAULT_FIELD_DELIMITER = ',';
|
|
var VALID_FIELD_DELIMITERS = [DEFAULT_FIELD_DELIMITER, ';'];
|
|
var FieldStringifier = /** @class */ (function () {
|
|
function FieldStringifier(fieldDelimiter) {
|
|
this.fieldDelimiter = fieldDelimiter;
|
|
}
|
|
FieldStringifier.prototype.isEmpty = function (value) {
|
|
return typeof value === 'undefined' || value === null || value === '';
|
|
};
|
|
FieldStringifier.prototype.quoteField = function (field) {
|
|
return "\"" + field.replace(/"/g, '""') + "\"";
|
|
};
|
|
return FieldStringifier;
|
|
}());
|
|
exports.FieldStringifier = FieldStringifier;
|
|
var DefaultFieldStringifier = /** @class */ (function (_super) {
|
|
__extends(DefaultFieldStringifier, _super);
|
|
function DefaultFieldStringifier() {
|
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
}
|
|
DefaultFieldStringifier.prototype.stringify = function (value) {
|
|
if (this.isEmpty(value))
|
|
return '';
|
|
var str = String(value);
|
|
return this.needsQuote(str) ? this.quoteField(str) : str;
|
|
};
|
|
DefaultFieldStringifier.prototype.needsQuote = function (str) {
|
|
return str.includes(this.fieldDelimiter) || str.includes('\n') || str.includes('"');
|
|
};
|
|
return DefaultFieldStringifier;
|
|
}(FieldStringifier));
|
|
var ForceQuoteFieldStringifier = /** @class */ (function (_super) {
|
|
__extends(ForceQuoteFieldStringifier, _super);
|
|
function ForceQuoteFieldStringifier() {
|
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
}
|
|
ForceQuoteFieldStringifier.prototype.stringify = function (value) {
|
|
return this.isEmpty(value) ? '' : this.quoteField(String(value));
|
|
};
|
|
return ForceQuoteFieldStringifier;
|
|
}(FieldStringifier));
|
|
function createFieldStringifier(fieldDelimiter, alwaysQuote) {
|
|
if (fieldDelimiter === void 0) { fieldDelimiter = DEFAULT_FIELD_DELIMITER; }
|
|
if (alwaysQuote === void 0) { alwaysQuote = false; }
|
|
_validateFieldDelimiter(fieldDelimiter);
|
|
return alwaysQuote ? new ForceQuoteFieldStringifier(fieldDelimiter) : new DefaultFieldStringifier(fieldDelimiter);
|
|
}
|
|
exports.createFieldStringifier = createFieldStringifier;
|
|
function _validateFieldDelimiter(delimiter) {
|
|
if (VALID_FIELD_DELIMITERS.indexOf(delimiter) === -1) {
|
|
throw new Error("Invalid field delimiter `" + delimiter + "` is specified");
|
|
}
|
|
}
|
|
//# sourceMappingURL=field-stringifier.js.map
|