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 /lib | |
| parent | 85e30f452001b5d02a617da21c72e12b206dfdb4 (diff) | |
Use bluebird instead of q for better performance
Diffstat (limited to 'lib')
| -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 |
7 files changed, 30 insertions, 15 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) { |
