exceljs
Version:
Excel Workbook Manager - Read and Write xlsx and csv Files.
64 lines (51 loc) • 1.51 kB
JavaScript
const _ = require('../../../utils/under-dash');
const defaultNumFormats = require('../../defaultnumformats');
const BaseXform = require('../base-xform');
function hashDefaultFormats() {
const hash = {};
_.each(defaultNumFormats, (dnf, id) => {
if (dnf.f) {
hash[dnf.f] = parseInt(id, 10);
}
// at some point, add the other cultures here...
});
return hash;
}
const defaultFmtHash = hashDefaultFormats();
// NumFmt encapsulates translation between number format and xlsx
class NumFmtXform extends BaseXform {
constructor(id, formatCode) {
super();
this.id = id;
this.formatCode = formatCode;
}
get tag() {
return 'numFmt';
}
render(xmlStream, model) {
xmlStream.leafNode('numFmt', {numFmtId: model.id, formatCode: model.formatCode});
}
parseOpen(node) {
switch (node.name) {
case 'numFmt':
this.model = {
id: parseInt(node.attributes.numFmtId, 10),
formatCode: node.attributes.formatCode.replace(/[\\](.)/g, '$1'),
};
return true;
default:
return false;
}
}
parseText() {}
parseClose() {
return false;
}
}
NumFmtXform.getDefaultFmtId = function getDefaultFmtId(formatCode) {
return defaultFmtHash[formatCode];
};
NumFmtXform.getDefaultFmtCode = function getDefaultFmtCode(numFmtId) {
return defaultNumFormats[numFmtId] && defaultNumFormats[numFmtId].f;
};
module.exports = NumFmtXform;