aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-03-29 20:42:38 +0000
committerMichael Williamson <mike@zwobble.org>2013-03-29 20:42:38 +0000
commite3891290bd3034d0ce8034387ffab1e5a9793a70 (patch)
tree3e9ba68c93ac030c34aaee66a5929815cf037c21 /lib
parent59421d9ef6d1521f19b83a8409934682592ccae6 (diff)
Add basic style mappings for paragraphs
Diffstat (limited to 'lib')
-rw-r--r--lib/documents.js75
1 files changed, 46 insertions, 29 deletions
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 "<p>" + innerHtml + "</p>";
- },
- "run": function(element) {
- return element.children.map(elementToHtml).join("");
- },
- "text": function(element) {
- return element.value;
+ var tagName = styleForParagraph(element);
+ return util.format("<%s>%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 || {}
};
}