aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2014-03-06 11:06:43 +0000
committerMichael Williamson <mike@zwobble.org>2014-03-06 11:06:43 +0000
commitf5b9b1c8632de9f2066bc45ded336d1e04e64aab (patch)
treec2351d3052b1bb3fc0f0d470be1786100303113e /lib
parent85e30f452001b5d02a617da21c72e12b206dfdb4 (diff)
Use bluebird instead of q for better performance
Diffstat (limited to 'lib')
-rw-r--r--lib/document-to-html.js4
-rw-r--r--lib/document-xml-reader.js2
-rw-r--r--lib/docx-reader.js6
-rw-r--r--lib/office-xml-reader.js4
-rw-r--r--lib/promises.js15
-rw-r--r--lib/unzip.js10
-rw-r--r--lib/xmlreader.js4
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) {