From d69bbff912a12849ad56c46006e3f5cd92954f21 Mon Sep 17 00:00:00 2001 From: Christian Holm Date: Tue, 14 Mar 2017 20:13:43 +0100 Subject: [PATCH] Add support for cp:contentStatus --- lib/doc/workbook.js | 2 ++ lib/xlsx/xform/core/core-xform.js | 14 +++----------- spec/integration/workbook.spec.js | 4 +++- spec/unit/xlsx/xform/core/core-xform.spec.js | 8 ++++++++ spec/unit/xlsx/xform/core/data/core.04.xml | 10 ++++++++++ 5 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 spec/unit/xlsx/xform/core/data/core.04.xml diff --git a/lib/doc/workbook.js b/lib/doc/workbook.js index 2da73b315..1fafd3de9 100644 --- a/lib/doc/workbook.js +++ b/lib/doc/workbook.js @@ -153,6 +153,7 @@ Workbook.prototype = { description: this.description, language: this.language, revision: this.revision, + contentStatus: this.contentStatus }; }, set model(value) { @@ -173,6 +174,7 @@ Workbook.prototype = { this.description = value.description; this.language = value.language; this.revision = value.revision; + this.contentStatus = value.contentStatus; this.properties = value.properties; this._worksheets = []; diff --git a/lib/xlsx/xform/core/core-xform.js b/lib/xlsx/xform/core/core-xform.js index 61efa4d06..4a2e6f5f2 100644 --- a/lib/xlsx/xform/core/core-xform.js +++ b/lib/xlsx/xform/core/core-xform.js @@ -28,17 +28,6 @@ var BaseXform = require('../base-xform'); var DateXform = require('../simple/date-xform'); var StringXform = require('../simple/string-xform'); -var props = { - creator: 'Author', - title: 'Title', - subject: 'Subject', - description: 'Comments', - language: 'Language', - keywords: 'Tags', - category: 'Categories', - identifier: 'Identifier' -}; - var CoreXform = module.exports = function() { this.map = { 'dc:creator': new StringXform({tag: 'dc:creator'}), @@ -52,6 +41,7 @@ var CoreXform = module.exports = function() { 'cp:lastModifiedBy': new StringXform({tag: 'cp:lastModifiedBy'}), 'cp:lastPrinted': new DateXform({tag: 'cp:lastPrinted', format: CoreXform.DateFormat}), 'cp:revision': new DateXform({tag: 'cp:revision'}), + 'cp:contentStatus': new StringXform({tag: 'cp:contentStatus'}), 'dcterms:created': new DateXform({tag: 'dcterms:created', attrs: CoreXform.DateAttrs, format: CoreXform.DateFormat}), 'dcterms:modified': new DateXform({tag: 'dcterms:modified', attrs: CoreXform.DateAttrs, format: CoreXform.DateFormat}) } @@ -87,6 +77,7 @@ utils.inherits(CoreXform, BaseXform, { this.map['cp:lastModifiedBy'].render(xmlStream, model.lastModifiedBy); this.map['cp:lastPrinted'].render(xmlStream, model.lastPrinted); this.map['cp:revision'].render(xmlStream, model.revision); + this.map['cp:contentStatus'].render(xmlStream, model.contentStatus); this.map['dcterms:created'].render(xmlStream, model.created); this.map['dcterms:modified'].render(xmlStream, model.modified); @@ -137,6 +128,7 @@ utils.inherits(CoreXform, BaseXform, { lastModifiedBy: this.map['cp:lastModifiedBy'].model, lastPrinted: this.map['cp:lastPrinted'].model, revision: this.map['cp:revision'].model, + contentStatus: this.map['cp:contentStatus'].model, created: this.map['dcterms:created'].model, modified: this.map['dcterms:modified'].model }; diff --git a/spec/integration/workbook.spec.js b/spec/integration/workbook.spec.js index bafe71148..7a61ac24a 100644 --- a/spec/integration/workbook.spec.js +++ b/spec/integration/workbook.spec.js @@ -107,12 +107,13 @@ describe('Workbook', function() { }); }); - it('language and revision', function() { + it('language, revision and contentStatus', function() { var wb = new Excel.Workbook(); var ws = wb.addWorksheet('Hello'); ws.getCell('A1').value = 'World!'; wb.language = 'Klingon'; wb.revision = new Date(Date.UTC(2016,10,1,12)); + wb.contentStauts = 'Final'; return wb.xlsx.writeFile(TEST_XLSX_FILE_NAME) .then(function() { var wb2 = new Excel.Workbook(); @@ -121,6 +122,7 @@ describe('Workbook', function() { .then(function(wb2) { expect(wb2.language).to.equal(wb.language); expect(wb2.revision).to.equalDate(wb.revision); + expect(wb2.contentStatus).to.equal(wb.contentStatus); }); }); diff --git a/spec/unit/xlsx/xform/core/core-xform.spec.js b/spec/unit/xlsx/xform/core/core-xform.spec.js index 0f69b9eba..9341d7cac 100644 --- a/spec/unit/xlsx/xform/core/core-xform.spec.js +++ b/spec/unit/xlsx/xform/core/core-xform.spec.js @@ -39,6 +39,14 @@ var expectations = [ xml: fs.readFileSync(__dirname + '/data/core.03.xml').toString().replace(/\r\n/g, '\n'), get parsedModel() { return this.preparedModel; }, tests: ['render', 'renderIn', 'parse'] + }, + { + title: 'core.xml - with cp:contentStatus', + create: function() { return new CoreXform()}, + preparedModel: { creator: 'Guyon Roche', lastModifiedBy: 'Guyon Roche', contentStatus: 'Final', created: new Date('2016-04-20T16:26:46Z'), modified: new Date('2016-05-12T06:52:49Z')}, + xml: fs.readFileSync(__dirname + '/data/core.04.xml').toString().replace(/\r\n/g, '\n'), + get parsedModel() { return this.preparedModel; }, + tests: ['render', 'renderIn', 'parse'] } ]; diff --git a/spec/unit/xlsx/xform/core/data/core.04.xml b/spec/unit/xlsx/xform/core/data/core.04.xml new file mode 100644 index 000000000..a0c3180ae --- /dev/null +++ b/spec/unit/xlsx/xform/core/data/core.04.xml @@ -0,0 +1,10 @@ + + + Guyon Roche + Guyon Roche + Final + 2016-04-20T16:26:46Z + 2016-05-12T06:52:49Z + \ No newline at end of file