| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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;
|