aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2014-01-06 22:32:27 +0000
committerMichael Williamson <mike@zwobble.org>2014-01-06 22:32:27 +0000
commit723a7d54bd4823b2a9876fdea7b8b08cde74f669 (patch)
tree048096d0bfbdaa9ff889143aff5f8f150e0267cc
parent278082b9fe502ce1ca083db66beb2c25c4a6ca5f (diff)
Use same module for node.js and browsers
-rw-r--r--browser-demo/demo.js45
-rw-r--r--browser/unzip.js32
-rw-r--r--lib/browser.js98
-rw-r--r--makefile2
-rw-r--r--package.json3
5 files changed, 69 insertions, 111 deletions
diff --git a/browser-demo/demo.js b/browser-demo/demo.js
index 20dcda0..3126192 100644
--- a/browser-demo/demo.js
+++ b/browser-demo/demo.js
@@ -1,16 +1,37 @@
(function() {
- mammoth.fileInput(
- document.getElementById("document"),
- function(result) {
- document.getElementById("output").innerHTML = result.value;
-
- var messageHtml = result.messages.map(function(message) {
- return '<li class="' + message.type + '">' + escapeHtml(message.message) + "</li>";
- }).join("");
-
- document.getElementById("messages").innerHTML = "<ul>" + messageHtml + "</ul>";
- }
- );
+ document.getElementById("document")
+ .addEventListener("change", handleFileSelect, false);
+
+ function handleFileSelect(event) {
+ readFileInputEventAsArrayBuffer(event, function(arrayBuffer) {
+ mammoth.convertToHtml({arrayBuffer: arrayBuffer})
+ .then(displayResult)
+ .done();
+ });
+ }
+
+ function displayResult(result) {
+ document.getElementById("output").innerHTML = result.value;
+
+ var messageHtml = result.messages.map(function(message) {
+ return '<li class="' + message.type + '">' + escapeHtml(message.message) + "</li>";
+ }).join("");
+
+ document.getElementById("messages").innerHTML = "<ul>" + messageHtml + "</ul>";
+ }
+
+ function readFileInputEventAsArrayBuffer(event, callback) {
+ var file = event.target.files[0];
+
+ var reader = new FileReader();
+
+ reader.onload = function(loadEvent) {
+ var arrayBuffer = loadEvent.target.result;
+ callback(arrayBuffer);
+ };
+
+ reader.readAsArrayBuffer(file);
+ }
function escapeHtml(value) {
return value
diff --git a/browser/unzip.js b/browser/unzip.js
new file mode 100644
index 0000000..97fcdb1
--- /dev/null
+++ b/browser/unzip.js
@@ -0,0 +1,32 @@
+var q = require("q");
+
+exports.openZip = openZip;
+
+function openZip(options) {
+ if (options.arrayBuffer) {
+ return openArrayBuffer(options.arrayBuffer);
+ } else {
+ return q.reject(new Error("Could not find file in options"));
+ }
+}
+
+function openArrayBuffer(arrayBuffer) {
+ var zipFile = new JSZip(arrayBuffer);
+ function exists(name) {
+ return zipFile.file(name) !== null;
+ }
+
+ function read(name, encoding) {
+ var array = zipFile.file(name).asUint8Array();
+ var buffer = new Buffer(array);
+ if (encoding) {
+ return q.when(buffer.toString(encoding));
+ } else {
+ return q.when(buffer);
+ }
+ }
+ return {
+ exists: exists,
+ read: read
+ };
+}
diff --git a/lib/browser.js b/lib/browser.js
deleted file mode 100644
index a9b9dbd..0000000
--- a/lib/browser.js
+++ /dev/null
@@ -1,98 +0,0 @@
-var q = require("q");
-var mammoth = require("./");
-
-
-exports.fileInput = fileInput;
-exports.readFileInputOnChange = readFileInputOnChange;
-exports.standardOptions = mammoth.standardOptions;
-exports.htmlPaths = mammoth.htmlPaths;
-exports.style = mammoth.style;
-
-exports.convertDocumentToHtml = callbackify(mammoth.convertDocumentToHtml);
-exports.convertArrayBufferToHtml = convertArrayBufferToHtml;
-
-function callbackify(func) {
- return function() {
- var args = Array.prototype.slice.call(arguments, 0, arguments.length - 1);
- var callback = arguments[arguments.length - 1];
- satisfyCallback(func.apply(this, args), callback);
- };
-}
-
-function convertArrayBufferToHtml(arrayBuffer, options, callback) {
- try {
- var file = openFile(arrayBuffer);
- var result = mammoth.read({file: file}).then(function(documentResult) {
- options = options || mammoth.standardOptions;
- return mammoth.convertDocumentToHtml(documentResult, options);
- });
- satisfyCallback(result, callback);
- } catch (error) {
- callback({error: error});
- }
-}
-
-function readFileInputOnChange(inputElement, callback) {
- function handleFileSelect(event) {
- var file = event.target.files[0];
-
- var reader = new FileReader();
-
- reader.onload = function(loadEvent) {
- var arrayBuffer = loadEvent.target.result;
- try {
- var file = openFile(arrayBuffer);
- satisfyCallback(mammoth.read({file: file}), callback);
- } catch (error) {
- callback({error: error});
- }
- };
-
- reader.readAsArrayBuffer(file);
- }
- inputElement.addEventListener('change', handleFileSelect, false);
-}
-
-function fileInput(inputElement, callback) {
- readFileInputOnChange(inputElement, function(documentResult) {
- if (documentResult.error) {
- callback(documentResult);
- } else {
- var options = mammoth.standardOptions;
- satisfyCallback(
- mammoth.convertDocumentToHtml(documentResult, options),
- callback
- );
- }
-
- });
-}
-
-
-function openFile(arrayBuffer) {
- var zipFile = new JSZip(arrayBuffer);
- function exists(name) {
- return zipFile.file(name) !== null;
- }
-
- function read(name, encoding) {
- var array = zipFile.file(name).asUint8Array();
- var buffer = new Buffer(array);
- if (encoding) {
- return q.when(buffer.toString(encoding));
- } else {
- return q.when(buffer);
- }
- }
- return {
- exists: exists,
- read: read
- };
-}
-
-
-function satisfyCallback(promise, callback) {
- promise.then(callback, function(error) {
- callback({error: error});
- }).done();
-}
diff --git a/makefile b/makefile
index fb9ee7b..864914c 100644
--- a/makefile
+++ b/makefile
@@ -24,7 +24,7 @@ browser-demo/bundle.js:
cat static/jszip/jszip-inflate.js >> $@
cat static/jszip/jszip-load.js >> $@
node_modules/.bin/node-license-sniffer . --recurse --js-comment >> $@
- node_modules/.bin/browserify lib/browser.js --standalone mammoth >> $@
+ node_modules/.bin/browserify lib/index.js --standalone mammoth >> $@
browser-demo/bundle.min.js: browser-demo/bundle.js
node_modules/.bin/uglifyjs browser-demo/bundle.js -c > $@
diff --git a/package.json b/package.json
index 544f3e3..394c43f 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,9 @@
"duck": "~0.1.11",
"uglify-js": "~2.4.8"
},
+ "browser": {
+ "./lib/unzip.js": "./browser/unzip.js"
+ },
"scripts": {
"test": "mocha tests"
},