aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-04-01 15:24:41 +0100
committerMichael Williamson <mike@zwobble.org>2013-04-01 15:25:53 +0100
commit6fdee5a4b57832682e1c43156b2e075a5552f595 (patch)
treea10d7fd5c2a74102a5314678e55f906af8e0c0f5 /lib
parent5c7aa27a92265e0890f3b970ca8102751e0d7e01 (diff)
Move document conversion into document-to-html module
Diffstat (limited to 'lib')
-rw-r--r--lib/document-to-html.js80
-rw-r--r--lib/documents.js78
-rw-r--r--lib/index.js8
3 files changed, 82 insertions, 84 deletions
diff --git a/lib/document-to-html.js b/lib/document-to-html.js
new file mode 100644
index 0000000..caccb6f
--- /dev/null
+++ b/lib/document-to-html.js
@@ -0,0 +1,80 @@
+var q = require("q");
+
+var styles = require("./styles");
+var HtmlGenerator = require("./html-generator").HtmlGenerator;
+
+exports.DocumentConverter = DocumentConverter;
+
+
+function DocumentConverter(options) {
+ options = options || {};
+ var defaultParagraphStyle = options.defaultParagraphStyle || styles.topLevelElement("p");
+
+ var paragraphStyleMap = options.paragraphStyleMap || {};
+ var runStyleMap = options.runStyleMap || {};
+
+ function convertToHtml(document) {
+ var html = new HtmlGenerator();
+ elementToHtml(document, html);
+ html.closeAll();
+
+ return q.when({
+ html: html.asString()
+ });
+ }
+
+ function convertElements(elements, html) {
+ elements.forEach(function(element) {
+ elementToHtml(element, html);
+ });
+ }
+
+ function elementToHtml(element, html) {
+ var handler = elementConverters[element.type];
+ if (handler) {
+ handler(element, html);
+ }
+ }
+
+ function convertParagraph(element, html) {
+ html.style(styleForParagraph(element));
+ convertElements(element.children, html);
+ }
+
+ function styleForParagraph(element) {
+ return paragraphStyleMap[element.properties.styleName] || defaultParagraphStyle;
+ }
+
+ function convertRun(run, html) {
+ var runHtml = new HtmlGenerator();
+ if (run.properties.styleName) {
+ var style = runStyleMap[run.properties.styleName];
+ if (style) {
+ runHtml.style(style);
+ }
+ }
+ if (run.properties.isBold) {
+ runHtml.push(styles.element("strong"));
+ }
+ if (run.properties.isItalic) {
+ runHtml.push(styles.element("em"));
+ }
+ convertElements(run.children, runHtml);
+ runHtml.closeAll();
+ html.append(runHtml);
+ }
+
+ var elementConverters = {
+ "document": function(document, html) {
+ convertElements(document.children, html);
+ },
+ "paragraph": convertParagraph,
+ "run": convertRun,
+ "text": function(element, html) {
+ html.text(element.value);
+ }
+ };
+ return {
+ convertToHtml: convertToHtml
+ }
+}
diff --git a/lib/documents.js b/lib/documents.js
index 88f95ba..27190aa 100644
--- a/lib/documents.js
+++ b/lib/documents.js
@@ -1,86 +1,8 @@
-var q = require("q");
-
-var styles = require("./styles");
-var HtmlGenerator = require("./html-generator").HtmlGenerator;
-
-exports.DocumentConverter = DocumentConverter;
exports.Document = Document;
exports.Paragraph = Paragraph;
exports.Run = Run;
exports.Text = Text;
-function DocumentConverter(options) {
- options = options || {};
- var defaultParagraphStyle = options.defaultParagraphStyle || styles.topLevelElement("p");
-
- var paragraphStyleMap = options.paragraphStyleMap || {};
- var runStyleMap = options.runStyleMap || {};
-
- function convertToHtml(document) {
- var html = new HtmlGenerator();
- elementToHtml(document, html);
- html.closeAll();
-
- return q.when({
- html: html.asString()
- });
- }
-
- function convertElements(elements, html) {
- elements.forEach(function(element) {
- elementToHtml(element, html);
- });
- }
-
- function elementToHtml(element, html) {
- var handler = elementConverters[element.type];
- if (handler) {
- handler(element, html);
- }
- }
-
- function convertParagraph(element, html) {
- html.style(styleForParagraph(element));
- convertElements(element.children, html);
- }
-
- function styleForParagraph(element) {
- return paragraphStyleMap[element.properties.styleName] || defaultParagraphStyle;
- }
-
- function convertRun(run, html) {
- var runHtml = new HtmlGenerator();
- if (run.properties.styleName) {
- var style = runStyleMap[run.properties.styleName];
- if (style) {
- runHtml.style(style);
- }
- }
- if (run.properties.isBold) {
- runHtml.push(styles.element("strong"));
- }
- if (run.properties.isItalic) {
- runHtml.push(styles.element("em"));
- }
- convertElements(run.children, runHtml);
- runHtml.closeAll();
- html.append(runHtml);
- }
-
- var elementConverters = {
- "document": function(document, html) {
- convertElements(document.children, html);
- },
- "paragraph": convertParagraph,
- "run": convertRun,
- "text": function(element, html) {
- html.text(element.value);
- }
- };
- return {
- convertToHtml: convertToHtml
- }
-}
function Document(children) {
return {
diff --git a/lib/index.js b/lib/index.js
index b124b81..146b507 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -1,9 +1,5 @@
-var q = require("q");
-var _ = require("underscore");
-var ZipFile = require("zipfile").ZipFile;
-
var docxReader = require("./docx-reader");
-var documents = require("./documents");
+var DocumentConverter = require("./document-to-html").DocumentConverter;
var styles = require("./styles");
exports.Converter = Converter;
@@ -17,7 +13,7 @@ exports.standardOptions = {
};
function Converter(options) {
- this._documentConverter = new documents.DocumentConverter(options);
+ this._documentConverter = new DocumentConverter(options);
}
Converter.prototype.convertToHtml = function(docxFile) {