aboutsummaryrefslogtreecommitdiff
path: root/lib/documents.js
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/documents.js
parent504f59e38e57b543ac87f73df53fe3a6ba34e26d (diff)
Split out document conversion to separate module
Diffstat (limited to 'lib/documents.js')
-rw-r--r--lib/documents.js38
1 files changed, 38 insertions, 0 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;
+ }
+};