diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-03-29 20:31:19 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-03-29 20:31:19 +0000 |
| commit | 15aaddae7a7e2dd8d369b514218778931a1543e0 (patch) | |
| tree | 3564634c61e53dfa15f82f02757c289da988ce3f /lib/documents.js | |
| parent | 12aa4a332cf40f5aab393bc7eafc2020945ea9f4 (diff) | |
Convert XML into simple document elements
Diffstat (limited to 'lib/documents.js')
| -rw-r--r-- | lib/documents.js | 64 |
1 files changed, 47 insertions, 17 deletions
diff --git a/lib/documents.js b/lib/documents.js index a470b84..d51e604 100644 --- a/lib/documents.js +++ b/lib/documents.js @@ -1,38 +1,68 @@ +var q = require("q"); + exports.DocumentConverter = DocumentConverter; +exports.Document = Document; +exports.Paragraph = Paragraph; +exports.Run = Run; +exports.Text = Text; function DocumentConverter() { } -DocumentConverter.prototype.convertToHtml = function(documentXml) { - var body = documentXml.root.first("w:body"); - - var html = body.children.map(elementToHtml).join(""); +DocumentConverter.prototype.convertToHtml = function(document) { + var html = document.children.map(elementToHtml).join(""); - return { + return q.when({ html: html - }; + }); } function elementToHtml(element) { - if (element.type === "element") { - var handler = elementConverters[element.name]; - if (handler) { - return handler(element); - } else { - return ""; - } + var handler = elementConverters[element.type]; + if (handler) { + return handler(element); + } else { + return ""; } } var elementConverters = { - "w:p": function(element) { + "paragraph": function(element) { var innerHtml = element.children.map(elementToHtml).join(""); return "<p>" + innerHtml + "</p>"; }, - "w:r": function(element) { + "run": function(element) { return element.children.map(elementToHtml).join(""); }, - "w:t": function(element) { - return element.children[0].value; + "text": function(element) { + return element.value; } }; + +function Document(children) { + return { + type: "document", + children: children + }; +} + +function Paragraph(children) { + return { + type: "paragraph", + children: children + }; +} + +function Run(children) { + return { + type: "run", + children: children + }; +} + +function Text(value) { + return { + type: "text", + value: value + }; +} |
