exceljs
Version:
Excel Workbook Manager - Read and Write xlsx and csv Files.
59 lines (57 loc) • 1.34 kB
JavaScript
"use strict";
const BaseXform = require('../base-xform');
class DateXform extends BaseXform {
constructor(options) {
super();
this.tag = options.tag;
this.attr = options.attr;
this.attrs = options.attrs;
this._format = options.format || function (dt) {
try {
if (Number.isNaN(dt.getTime())) return '';
return dt.toISOString();
} catch (e) {
return '';
}
};
this._parse = options.parse || function (str) {
return new Date(str);
};
}
render(xmlStream, model) {
if (model) {
xmlStream.openNode(this.tag);
if (this.attrs) {
xmlStream.addAttributes(this.attrs);
}
if (this.attr) {
xmlStream.addAttribute(this.attr, this._format(model));
} else {
xmlStream.writeText(this._format(model));
}
xmlStream.closeNode();
}
}
parseOpen(node) {
if (node.name === this.tag) {
if (this.attr) {
this.model = this._parse(node.attributes[this.attr]);
} else {
this.text = [];
}
}
}
parseText(text) {
if (!this.attr) {
this.text.push(text);
}
}
parseClose() {
if (!this.attr) {
this.model = this._parse(this.text.join(''));
}
return false;
}
}
module.exports = DateXform;
//# sourceMappingURL=date-xform.js.map