From e732f9c743d1b8a744b783f7af97507409ca3fda Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 9 Aug 2018 10:28:46 +0200 Subject: [PATCH 1/2] fix wrongly replacing text in shared strings --- lib/index.js | 3 +-- test/helpers-test.js | 12 ++++++------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/index.js b/lib/index.js index d50e1d0..14fda9b 100755 --- a/lib/index.js +++ b/lib/index.js @@ -770,8 +770,7 @@ module.exports = (function() { } else { var newString = string.replace(placeholder.placeholder, self.stringify(substitution)); cell.attrib.t = "s"; - self.replaceString(string, newString); - return newString; + return self.insertCellValue(cell, newString) } }; diff --git a/test/helpers-test.js b/test/helpers-test.js index bacaf20..18ff83a 100644 --- a/test/helpers-test.js +++ b/test/helpers-test.js @@ -638,8 +638,8 @@ describe("Helpers", function() { t.addSharedString(string); buster.expect(t.substituteScalar(col, string, placeholder, substitution)).toEqual("foo: bar"); buster.expect(col.attrib.t).toEqual("s"); - buster.expect(val.text).toEqual("0"); - buster.expect(t.sharedStrings).toEqual(["foo: bar"]); + buster.expect(val.text).toEqual("1"); + buster.expect(t.sharedStrings).toEqual(["foo: ${foo}", "foo: bar"]); }); it("can substitute parts of strings with booleans", function() { @@ -666,8 +666,8 @@ describe("Helpers", function() { t.addSharedString(string); buster.expect(t.substituteScalar(col, string, placeholder, substitution)).toEqual("foo: 0"); buster.expect(col.attrib.t).toEqual("s"); - buster.expect(val.text).toEqual("0"); - buster.expect(t.sharedStrings).toEqual(["foo: 0"]); + buster.expect(val.text).toEqual("1"); + buster.expect(t.sharedStrings).toEqual(["foo: ${foo}", "foo: 0"]); }); it("can substitute parts of strings with numbers", function() { @@ -694,8 +694,8 @@ describe("Helpers", function() { t.addSharedString(string); buster.expect(t.substituteScalar(col, string, placeholder, substitution)).toEqual("foo: 10"); buster.expect(col.attrib.t).toEqual("s"); - buster.expect(val.text).toEqual("0"); - buster.expect(t.sharedStrings).toEqual(["foo: 10"]); + buster.expect(val.text).toEqual("1"); + buster.expect(t.sharedStrings).toEqual(["foo: ${foo}", "foo: 10"]); }); From 306ea34cee38425627de8e4b0e8d82ed5b0be389 Mon Sep 17 00:00:00 2001 From: Steven Date: Thu, 9 Aug 2018 14:43:16 +0200 Subject: [PATCH 2/2] add test to multple-sheets-arrays.xlsx --- test/crud-test.js | 5 ++++- test/templates/multple-sheets-arrays.xlsx | Bin 4828 -> 8598 bytes 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/test/crud-test.js b/test/crud-test.js index 748886a..2f8d786 100644 --- a/test/crud-test.js +++ b/test/crud-test.js @@ -852,7 +852,8 @@ describe("CRUD operations", function() { for (let sheetNumber = 1; sheetNumber <= 2; sheetNumber++) { // Set up some placeholder values matching the placeholders in the template var values = { - page: 'page: ' + sheetNumber + page: 'page: ' + sheetNumber, + sheetNumber }; // Perform substitution @@ -868,6 +869,8 @@ describe("CRUD operations", function() { buster.expect(sheet2).toBeDefined(); buster.expect(getSharedString(sharedStrings, sheet1, "A1")).toEqual("page: 1"); buster.expect(getSharedString(sharedStrings, sheet2, "A1")).toEqual("page: 2"); + buster.expect(getSharedString(sharedStrings, sheet1, "A2")).toEqual("Page 1"); + buster.expect(getSharedString(sharedStrings, sheet2, "A2")).toEqual("Page 2"); fs.writeFileSync('test/output/multple-sheets-arrays.xlsx', newData, 'binary'); done(); diff --git a/test/templates/multple-sheets-arrays.xlsx b/test/templates/multple-sheets-arrays.xlsx index 7f0ce5f1b6c6893f454380dbcd104054eb52b6d1..40e52fce75d4ad3fc9b1b8ea0bd87ae22c237615 100644 GIT binary patch literal 8598 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⪚PBtpDj~&@TtDiZ+n{!hzqpgwP_<>z(wK&x{K;? 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