From 50ee2485a2bddd196442b4158242e5d727fb77ed Mon Sep 17 00:00:00 2001 From: arturas-vitkauskas Date: Thu, 27 Oct 2016 09:24:55 +0300 Subject: [PATCH 1/2] #206 Add support for core-xform property cp:lastPrinted --- lib/doc/workbook.js | 2 ++ lib/stream/xlsx/workbook-writer.js | 1 + lib/xlsx/xform/core/core-xform.js | 3 +++ spec/unit/xlsx/xform/core/core-xform.spec.js | 10 +++++++++- spec/unit/xlsx/xform/core/data/core.03.xml | 10 ++++++++++ 5 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 spec/unit/xlsx/xform/core/data/core.03.xml diff --git a/lib/doc/workbook.js b/lib/doc/workbook.js index c9a95e185..1832a41b4 100644 --- a/lib/doc/workbook.js +++ b/lib/doc/workbook.js @@ -137,6 +137,7 @@ Workbook.prototype = { return { creator: this.creator || 'Unknown', lastModifiedBy: this.lastModifiedBy || 'Unknown', + lastPrinted: this.lastPrinted, created: this.created, modified: this.modified, worksheets: this._worksheets.map(function(worksheet) { return worksheet.model; }), @@ -156,6 +157,7 @@ Workbook.prototype = { this.creator = value.creator; this.lastModifiedBy = value.lastModifiedBy; + this.lastPrinted = value.lastPrinted; this.created = value.created; this.modified = value.modified; this.company = value.company; diff --git a/lib/stream/xlsx/workbook-writer.js b/lib/stream/xlsx/workbook-writer.js index 3976fd76e..2991d55b7 100644 --- a/lib/stream/xlsx/workbook-writer.js +++ b/lib/stream/xlsx/workbook-writer.js @@ -52,6 +52,7 @@ var WorkbookWriter = module.exports = function(options) { this.modified = options.modified || this.created; this.creator = options.creator || 'ExcelJS'; this.lastModifiedBy = options.lastModifiedBy || 'ExcelJS'; + this.lastPrinted = options.lastPrinted; // using shared strings creates a smaller xlsx file but may use more memory this.useSharedStrings = options.useSharedStrings || false; diff --git a/lib/xlsx/xform/core/core-xform.js b/lib/xlsx/xform/core/core-xform.js index 911adaa2c..4fb41b256 100644 --- a/lib/xlsx/xform/core/core-xform.js +++ b/lib/xlsx/xform/core/core-xform.js @@ -46,6 +46,7 @@ var CoreXform = module.exports = function() { 'cp:keywords': new StringXform({tag: 'cp:keywords'}), 'cp:category': new StringXform({tag: 'cp:category'}), 'cp:lastModifiedBy': new StringXform({tag: 'cp:lastModifiedBy'}), + 'cp:lastPrinted': new DateXform({tag: 'cp:lastPrinted', format: CoreXform.DateFormat}), '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}) } @@ -77,6 +78,7 @@ utils.inherits(CoreXform, BaseXform, { this.map['cp:keywords'].render(xmlStream, model.keywords); this.map['cp:category'].render(xmlStream, model.category); this.map['cp:lastModifiedBy'].render(xmlStream, model.lastModifiedBy); + this.map['cp:lastPrinted'].render(xmlStream, model.lastPrinted); this.map['dcterms:created'].render(xmlStream, model.created); this.map['dcterms:modified'].render(xmlStream, model.modified); @@ -123,6 +125,7 @@ utils.inherits(CoreXform, BaseXform, { keywords: this.map['cp:keywords'].model, category: this.map['cp:category'].model, lastModifiedBy: this.map['cp:lastModifiedBy'].model, + lastPrinted: this.map['cp:lastPrinted'].model, created: this.map['dcterms:created'].model, modified: this.map['dcterms:modified'].model }; diff --git a/spec/unit/xlsx/xform/core/core-xform.spec.js b/spec/unit/xlsx/xform/core/core-xform.spec.js index 876703412..cf2dda094 100644 --- a/spec/unit/xlsx/xform/core/core-xform.spec.js +++ b/spec/unit/xlsx/xform/core/core-xform.spec.js @@ -31,7 +31,15 @@ var expectations = [ xml: fs.readFileSync(__dirname + '/data/core.02.xml').toString().replace(/\r\n/g, '\n'), get parsedModel() { return this.preparedModel; }, tests: ['render', 'renderIn', 'parse'] - } + }, + { + title: 'core.xml - with cp:lastPrinted', + create: function() { return new CoreXform()}, + preparedModel: { creator: 'Guyon Roche', lastModifiedBy: 'Guyon Roche', lastPrinted: new Date('2016-08-16T19:56:07Z'), created: new Date('2016-04-20T16:26:46Z'), modified: new Date('2016-05-12T06:52:49Z')}, + xml: fs.readFileSync(__dirname + '/data/core.03.xml').toString().replace(/\r\n/g, '\n'), + get parsedModel() { return this.preparedModel; }, + tests: ['render', 'renderIn', 'parse'] + }, ]; describe('CoreXform', function () { diff --git a/spec/unit/xlsx/xform/core/data/core.03.xml b/spec/unit/xlsx/xform/core/data/core.03.xml new file mode 100644 index 000000000..f44ce3cf1 --- /dev/null +++ b/spec/unit/xlsx/xform/core/data/core.03.xml @@ -0,0 +1,10 @@ + + + Guyon Roche + Guyon Roche + 2016-08-16T19:56:07Z + 2016-04-20T16:26:46Z + 2016-05-12T06:52:49Z + \ No newline at end of file From f60904760d1074fd4dcd22e91ba6a7f19467305a Mon Sep 17 00:00:00 2001 From: arturas-vitkauskas Date: Thu, 27 Oct 2016 12:36:28 +0300 Subject: [PATCH 2/2] #206 Remove dangling comma --- spec/unit/xlsx/xform/core/core-xform.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/unit/xlsx/xform/core/core-xform.spec.js b/spec/unit/xlsx/xform/core/core-xform.spec.js index cf2dda094..0f69b9eba 100644 --- a/spec/unit/xlsx/xform/core/core-xform.spec.js +++ b/spec/unit/xlsx/xform/core/core-xform.spec.js @@ -39,7 +39,7 @@ 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'] - }, + } ]; describe('CoreXform', function () {