diff options
| author | Michael Williamson <mike@zwobble.org> | 2014-03-06 11:06:43 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2014-03-06 11:06:43 +0000 |
| commit | f5b9b1c8632de9f2066bc45ded336d1e04e64aab (patch) | |
| tree | c2351d3052b1bb3fc0f0d470be1786100303113e | |
| parent | 85e30f452001b5d02a617da21c72e12b206dfdb4 (diff) | |
Use bluebird instead of q for better performance
| -rw-r--r-- | lib/document-to-html.js | 4 | ||||
| -rw-r--r-- | lib/document-xml-reader.js | 2 | ||||
| -rw-r--r-- | lib/docx-reader.js | 6 | ||||
| -rw-r--r-- | lib/office-xml-reader.js | 4 | ||||
| -rw-r--r-- | lib/promises.js | 15 | ||||
| -rw-r--r-- | lib/unzip.js | 10 | ||||
| -rw-r--r-- | lib/xmlreader.js | 4 | ||||
| -rw-r--r-- | package.json | 2 | ||||
| -rw-r--r-- | tests/document-to-html.tests.js | 8 | ||||
| -rw-r--r-- | tests/mammoth.tests.js | 2 | ||||
| -rw-r--r-- | tests/testing.js | 14 |
11 files changed, 43 insertions, 28 deletions
diff --git a/lib/document-to-html.js b/lib/document-to-html.js index 8033d8b..6eef821 100644 --- a/lib/document-to-html.js +++ b/lib/document-to-html.js @@ -1,4 +1,4 @@ -var q = require("q"); +var promises = require("./promises"); var async = require("async"); var htmlPaths = require("./html-paths"); @@ -18,7 +18,7 @@ function DocumentConverter(options) { var messages = []; var html = new HtmlGenerator(); - return q.nfcall(elementToHtml, document, html, messages).then(function() { + return promises.nfcall(elementToHtml, document, html, messages).then(function() { html.closeAll(); return new results.Result(html.asString(), messages); diff --git a/lib/document-xml-reader.js b/lib/document-xml-reader.js index f4701db..8937374 100644 --- a/lib/document-xml-reader.js +++ b/lib/document-xml-reader.js @@ -1,6 +1,6 @@ exports.DocumentXmlReader = DocumentXmlReader; -var q = require("q"); +var promises = require("./promises"); var _ = require("underscore"); var documents = require("./documents"); diff --git a/lib/docx-reader.js b/lib/docx-reader.js index a020ec8..e36ab10 100644 --- a/lib/docx-reader.js +++ b/lib/docx-reader.js @@ -1,6 +1,6 @@ exports.read = read; -var q = require("q"); +var promises = require("./promises"); var unzip = require("./unzip"); var readXmlFromZipFile = require("./office-xml-reader").readXmlFromZipFile; @@ -13,8 +13,8 @@ var readNumberingFromZipFile = require("./numbering-xml").readNumberingFromZipFi function read(options) { var docxFile = unzip.openZip(options); - return q.when(docxFile, function(docxFile) { - return q.all([ + return promises.when(docxFile).then(function(docxFile) { + return promises.all([ readRelationshipsFromZipFile(docxFile), readContentTypesFromZipFile(docxFile), readNumberingFromZipFile(docxFile), diff --git a/lib/office-xml-reader.js b/lib/office-xml-reader.js index 04b73fb..fa67c41 100644 --- a/lib/office-xml-reader.js +++ b/lib/office-xml-reader.js @@ -1,4 +1,4 @@ -var q = require("q"); +var promises = require("./promises"); var xmlreader = require("./xmlreader"); @@ -25,6 +25,6 @@ function readXmlFromZipFile(docxFile, path) { return docxFile.read(path, "utf-8") .then(read); } else { - return q.resolve(null); + return promises.resolve(null); } } diff --git a/lib/promises.js b/lib/promises.js new file mode 100644 index 0000000..2dfc77a --- /dev/null +++ b/lib/promises.js @@ -0,0 +1,15 @@ +var bluebird = require("bluebird/js/main/promise")(); +var _ = require("underscore"); + +exports.defer = bluebird.defer; +exports.when = bluebird.resolve; +exports.resolve = bluebird.resolve; +exports.all = bluebird.all; + +exports.nfcall = function(func) { + var args = Array.prototype.slice.call(arguments, 1); + var promisedFunc = bluebird.promisify(func); + return promisedFunc.apply(null, args); +}; + +bluebird.prototype.fail = bluebird.prototype.caught; diff --git a/lib/unzip.js b/lib/unzip.js index cad8c2d..855d2ca 100644 --- a/lib/unzip.js +++ b/lib/unzip.js @@ -1,6 +1,6 @@ exports.openZip = openZip; -var q = require("q"); +var promises = require("./promises"); var fs = require("fs"); var unzip = { Parse: require("unzip/lib/parse") @@ -14,12 +14,12 @@ function openZip(options) { } else if (options.file) { return options.file; } else { - return q.reject(new Error("Could not find file in options")); + return promises.reject(new Error("Could not find file in options")); } } function unzipStream(stream) { - var deferred = q.defer(); + var deferred = promises.defer(); var names = []; var files = {}; @@ -41,7 +41,7 @@ function unzipStream(stream) { } function readEntry(entry) { - var readDeferred = q.defer(); + var readDeferred = promises.defer(); var buffers = new Buffers(); entry @@ -58,7 +58,7 @@ function unzipStream(stream) { var zipFile = { read: function(path, encoding) { if (!exists(path)) { - return q.reject(new Error("No file in zip: " + path)); + return promises.reject(new Error("No file in zip: " + path)); } return files[path].then(function(buffer) { if (encoding) { diff --git a/lib/xmlreader.js b/lib/xmlreader.js index 3b14a93..e5ed672 100644 --- a/lib/xmlreader.js +++ b/lib/xmlreader.js @@ -1,4 +1,4 @@ -var q = require("q"); +var promises = require("./promises"); var sax = require("sax"); var _ = require("underscore"); @@ -15,7 +15,7 @@ function read(xmlString, namespaceMap) { var currentElement = rootElement; var stack = []; - var deferred = q.defer(); + var deferred = promises.defer(); parser.onopentag = function(node) { var attributes = mapObject(node.attributes, function(attribute) { diff --git a/package.json b/package.json index 394c43f..1a6576a 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "url": "https://github.com/mwilliamson/mammoth.js.git" }, "dependencies": { - "q": "~0.9.2", + "bluebird": "~1.0.8", "sax": "~0.5.2", "underscore": "~1.4.4", "lop": "~0.2.8", diff --git a/tests/document-to-html.tests.js b/tests/document-to-html.tests.js index dde395d..35f4424 100644 --- a/tests/document-to-html.tests.js +++ b/tests/document-to-html.tests.js @@ -1,5 +1,5 @@ var assert = require("assert"); -var q = require("q"); +var promises = require("../lib/promises"); var documents = require("../lib/documents"); var DocumentConverter = require("../lib/document-to-html").DocumentConverter; @@ -201,7 +201,7 @@ describe('DocumentConverter', function() { var imageBuffer = new Buffer("Not an image at all!"); var image = new documents.Image({ readImage: function(encoding) { - return q.when(imageBuffer.toString(encoding)); + return promises.when(imageBuffer.toString(encoding)); }, contentType: "image/png" }); @@ -215,7 +215,7 @@ describe('DocumentConverter', function() { var imageBuffer = new Buffer("Not an image at all!"); var image = new documents.Image({ readImage: function() { - return q.when(imageBuffer); + return promises.when(imageBuffer); }, altText: "It's a hat" }); @@ -234,7 +234,7 @@ describe('DocumentConverter', function() { var imageBuffer = new Buffer("Not an image at all!"); var image = new documents.Image({ readImage: function(encoding) { - return q.when(imageBuffer.toString(encoding)); + return promises.when(imageBuffer.toString(encoding)); }, contentType: "image/png" }); diff --git a/tests/mammoth.tests.js b/tests/mammoth.tests.js index c9f4787..564eb8c 100644 --- a/tests/mammoth.tests.js +++ b/tests/mammoth.tests.js @@ -2,7 +2,7 @@ var assert = require("assert"); var path = require("path"); var fs = require("fs"); -var q = require("q"); +var promises = require("../lib/promises"); var mammoth = require("../") var htmlPaths = require("../lib/html-paths"); diff --git a/tests/testing.js b/tests/testing.js index 6fef626..57bcb7e 100644 --- a/tests/testing.js +++ b/tests/testing.js @@ -1,6 +1,6 @@ var path = require("path"); var fs = require("fs"); -var q = require("q"); +var promises = require("../lib/promises"); var _ = require("underscore"); exports.test = test; @@ -11,7 +11,7 @@ exports.createFakeDocxFile = createFakeDocxFile; function test(name, func) { it(name, function(done) { var result = func(); - q.when(result).then(function() { + promises.when(result).then(function() { done() }).done(); }); @@ -19,22 +19,22 @@ function test(name, func) { function testData(testDataPath) { var fullPath = path.join(__dirname, "test-data", testDataPath); - return q.nfcall(fs.readFile, fullPath, "utf-8"); + return promises.nfcall(fs.readFile, fullPath, "utf-8"); } function createFakeDocxFile(files) { function read(path, encoding) { - return q.when(files[path], function(buffer) { + return promises.when(files[path], function(buffer) { if (_.isString(buffer)) { buffer = new Buffer(buffer); } if (!Buffer.isBuffer(buffer)) { - return q.reject(new Error("file was not a buffer")); + return promises.reject(new Error("file was not a buffer")); } else if (encoding) { - return q.when(buffer.toString(encoding)); + return promises.when(buffer.toString(encoding)); } else { - return q.when(buffer); + return promises.when(buffer); } }); } |
