From e3891290bd3034d0ce8034387ffab1e5a9793a70 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 29 Mar 2013 20:42:38 +0000 Subject: Add basic style mappings for paragraphs --- lib/documents.js | 75 ++++++++++++++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 29 deletions(-) (limited to 'lib') diff --git a/lib/documents.js b/lib/documents.js index d51e604..5d2d0b7 100644 --- a/lib/documents.js +++ b/lib/documents.js @@ -1,3 +1,5 @@ +var util = require("util"); + var q = require("q"); exports.DocumentConverter = DocumentConverter; @@ -6,38 +8,52 @@ exports.Paragraph = Paragraph; exports.Run = Run; exports.Text = Text; -function DocumentConverter() { -} - -DocumentConverter.prototype.convertToHtml = function(document) { - var html = document.children.map(elementToHtml).join(""); +function DocumentConverter(options) { + options = options || {}; + options.paragraphStyleMap = options.paragraphStyleMap || {}; - return q.when({ - html: html - }); -} - -function elementToHtml(element) { - var handler = elementConverters[element.type]; - if (handler) { - return handler(element); - } else { - return ""; + var paragraphStyleMap = options.paragraphStyleMap; + + function convertToHtml(document) { + var html = document.children.map(elementToHtml).join(""); + + return q.when({ + html: html + }); } -} -var elementConverters = { - "paragraph": function(element) { + function elementToHtml(element) { + var handler = elementConverters[element.type]; + if (handler) { + return handler(element); + } else { + return ""; + } + } + + function convertParagraph(element) { var innerHtml = element.children.map(elementToHtml).join(""); - return "

" + innerHtml + "

"; - }, - "run": function(element) { - return element.children.map(elementToHtml).join(""); - }, - "text": function(element) { - return element.value; + var tagName = styleForParagraph(element); + return util.format("<%s>%s", tagName, innerHtml, tagName); } -}; + + function styleForParagraph(element) { + return paragraphStyleMap[element.properties.styleName] || "p"; + } + + var elementConverters = { + "paragraph": convertParagraph, + "run": function(element) { + return element.children.map(elementToHtml).join(""); + }, + "text": function(element) { + return element.value; + } + }; + return { + convertToHtml: convertToHtml + } +} function Document(children) { return { @@ -46,10 +62,11 @@ function Document(children) { }; } -function Paragraph(children) { +function Paragraph(children, properties) { return { type: "paragraph", - children: children + children: children, + properties: properties || {} }; } -- cgit v1.2.3