UNPKG

exceljs

Version:

Excel Workbook Manager - Read and Write xlsx and csv Files.

74 lines (62 loc) 1.8 kB
const XmlStream = require('../../../utils/xml-stream'); const BaseXform = require('../base-xform'); const RelationshipXform = require('./relationship-xform'); class RelationshipsXform extends BaseXform { constructor() { super(); this.map = { Relationship: new RelationshipXform(), }; } render(xmlStream, model) { model = model || this._values; xmlStream.openXml(XmlStream.StdDocAttributes); xmlStream.openNode('Relationships', RelationshipsXform.RELATIONSHIPS_ATTRIBUTES); model.forEach(relationship => { this.map.Relationship.render(xmlStream, relationship); }); xmlStream.closeNode(); } parseOpen(node) { if (this.parser) { this.parser.parseOpen(node); return true; } switch (node.name) { case 'Relationships': this.model = []; return true; default: this.parser = this.map[node.name]; if (this.parser) { this.parser.parseOpen(node); return true; } throw new Error(`Unexpected xml node in parseOpen: ${JSON.stringify(node)}`); } } parseText(text) { if (this.parser) { this.parser.parseText(text); } } parseClose(name) { if (this.parser) { if (!this.parser.parseClose(name)) { this.model.push(this.parser.model); this.parser = undefined; } return true; } switch (name) { case 'Relationships': return false; default: throw new Error(`Unexpected xml node in parseClose: ${name}`); } } } RelationshipsXform.RELATIONSHIPS_ATTRIBUTES = { xmlns: 'http://schemas.openxmlformats.org/package/2006/relationships', }; module.exports = RelationshipsXform;