exceljs
Version:
Excel Workbook Manager - Read and Write xlsx and csv Files.
61 lines (48 loc) • 1.36 kB
JavaScript
const BaseXform = require('../base-xform');
const validation = {
boolean(value, dflt) {
if (value === undefined) {
return dflt;
}
return value;
},
};
// Protection encapsulates translation from style.protection model to/from xlsx
class ProtectionXform extends BaseXform {
get tag() {
return 'protection';
}
render(xmlStream, model) {
xmlStream.addRollback();
xmlStream.openNode('protection');
let isValid = false;
function add(name, value) {
if (value !== undefined) {
xmlStream.addAttribute(name, value);
isValid = true;
}
}
add('locked', validation.boolean(model.locked, true) ? undefined : '0');
add('hidden', validation.boolean(model.hidden, false) ? '1' : undefined);
xmlStream.closeNode();
if (isValid) {
xmlStream.commit();
} else {
xmlStream.rollback();
}
}
parseOpen(node) {
const model = {
locked: !(node.attributes.locked === '0'),
hidden: node.attributes.hidden === '1',
};
// only want to record models that differ from defaults
const isSignificant = !model.locked || model.hidden;
this.model = isSignificant ? model : null;
}
parseText() {}
parseClose() {
return false;
}
}
module.exports = ProtectionXform;