aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-03-29 20:17:47 +0000
committerMichael Williamson <mike@zwobble.org>2013-03-29 20:17:47 +0000
commit12aa4a332cf40f5aab393bc7eafc2020945ea9f4 (patch)
tree787581b9cad818fa17351acc840c7c22498425f3 /lib
parent504f59e38e57b543ac87f73df53fe3a6ba34e26d (diff)
Split out document conversion to separate module
Diffstat (limited to 'lib')
-rw-r--r--lib/documents.js38
-rw-r--r--lib/index.js36
2 files changed, 43 insertions, 31 deletions
diff --git a/lib/documents.js b/lib/documents.js
new file mode 100644
index 0000000..a470b84
--- /dev/null
+++ b/lib/documents.js
@@ -0,0 +1,38 @@
+exports.DocumentConverter = DocumentConverter;
+
+function DocumentConverter() {
+}
+
+DocumentConverter.prototype.convertToHtml = function(documentXml) {
+ var body = documentXml.root.first("w:body");
+
+ var html = body.children.map(elementToHtml).join("");
+
+ return {
+ html: html
+ };
+}
+
+function elementToHtml(element) {
+ if (element.type === "element") {
+ var handler = elementConverters[element.name];
+ if (handler) {
+ return handler(element);
+ } else {
+ return "";
+ }
+ }
+}
+
+var elementConverters = {
+ "w:p": function(element) {
+ var innerHtml = element.children.map(elementToHtml).join("");
+ return "<p>" + innerHtml + "</p>";
+ },
+ "w:r": function(element) {
+ return element.children.map(elementToHtml).join("");
+ },
+ "w:t": function(element) {
+ return element.children[0].value;
+ }
+};
diff --git a/lib/index.js b/lib/index.js
index 11364b3..25bf0f5 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -1,49 +1,23 @@
var q = require("q");
var xmlreader = require("./xmlreader");
+var documents = require("./documents");
+
exports.Converter = Converter;
function Converter() {
+ this._documentConverter = new documents.DocumentConverter();
}
Converter.prototype.convertToHtml = function(docxFile) {
+ var documentConverter = this._documentConverter;
return docxFile.read("word/document.xml").then(function(documentXmlString) {
return parseXml(documentXmlString);
}).then(function(documentXml) {
- var body = documentXml.root.first("w:body");
-
- var html = body.children.map(elementToHtml).join("");
-
- return {
- html: html
- };
+ return documentConverter.convertToHtml(documentXml);
});
}
function parseXml(string) {
return xmlreader.read(string);
}
-
-function elementToHtml(element) {
- if (element.type === "element") {
- var handler = elementConverters[element.name];
- if (handler) {
- return handler(element);
- } else {
- return "";
- }
- }
-}
-
-var elementConverters = {
- "w:p": function(element) {
- var innerHtml = element.children.map(elementToHtml).join("");
- return "<p>" + innerHtml + "</p>";
- },
- "w:r": function(element) {
- return element.children.map(elementToHtml).join("");
- },
- "w:t": function(element) {
- return element.children[0].value;
- }
-};