From dd28d971d67ce558b86ac12f01d38e9ff21c91b7 Mon Sep 17 00:00:00 2001 From: Craig Leinoff Date: Fri, 3 Jan 2014 12:42:31 -0500 Subject: Adding fixed "p.CenteredHeading" in the event of a centered heading, which will, by default, create an h2.centered tag. --- lib/document-xml-reader.js | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'lib/document-xml-reader.js') diff --git a/lib/document-xml-reader.js b/lib/document-xml-reader.js index f4ab760..418c45e 100644 --- a/lib/document-xml-reader.js +++ b/lib/document-xml-reader.js @@ -65,6 +65,11 @@ function DocumentXmlReader(relationships, contentTypes, docxFile, numbering) { if (styleElement) { properties.styleName = styleElement.attributes["w:val"]; } + var alignElement = element.first("w:jc"); + if (alignElement) { + properties.alignment = alignElement.attributes["w:val"]; + properties.styleName = "CenteredHeading"; + } var numberingPropertiesElement = element.first("w:numPr"); if (numberingPropertiesElement) { var levelElement = numberingPropertiesElement.first("w:ilvl"); -- cgit v1.2.3 From 0e8c64944707701480ff154187a70457a2253349 Mon Sep 17 00:00:00 2001 From: Craig Leinoff Date: Fri, 3 Jan 2014 12:47:27 -0500 Subject: Only applying CenteredHeading style if the element was actually centered. --- lib/document-xml-reader.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib/document-xml-reader.js') diff --git a/lib/document-xml-reader.js b/lib/document-xml-reader.js index 418c45e..764dc11 100644 --- a/lib/document-xml-reader.js +++ b/lib/document-xml-reader.js @@ -68,7 +68,9 @@ function DocumentXmlReader(relationships, contentTypes, docxFile, numbering) { var alignElement = element.first("w:jc"); if (alignElement) { properties.alignment = alignElement.attributes["w:val"]; - properties.styleName = "CenteredHeading"; + if (properties.alignment == 'center') { + properties.styleName = "CenteredHeading"; + } } var numberingPropertiesElement = element.first("w:numPr"); if (numberingPropertiesElement) { -- cgit v1.2.3 From e03ab48068c2850b852462581f5be23aada68bd7 Mon Sep 17 00:00:00 2001 From: Craig Leinoff Date: Fri, 3 Jan 2014 12:51:33 -0500 Subject: Don't set styleName from alignment if already set. --- lib/document-xml-reader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/document-xml-reader.js') diff --git a/lib/document-xml-reader.js b/lib/document-xml-reader.js index 764dc11..1f32597 100644 --- a/lib/document-xml-reader.js +++ b/lib/document-xml-reader.js @@ -68,7 +68,7 @@ function DocumentXmlReader(relationships, contentTypes, docxFile, numbering) { var alignElement = element.first("w:jc"); if (alignElement) { properties.alignment = alignElement.attributes["w:val"]; - if (properties.alignment == 'center') { + if (properties.alignment == 'center' && !properties.styleName) { properties.styleName = "CenteredHeading"; } } -- cgit v1.2.3 From d9fbde9f0b200da41888df0189e0b83f983ed46a Mon Sep 17 00:00:00 2001 From: Craig Leinoff Date: Mon, 6 Jan 2014 18:11:33 -0500 Subject: Adding heuristicis processing as separate step. --- lib/document-xml-reader.js | 3 --- lib/heuristics-processor.js | 28 ++++++++++++++++++++++++++++ lib/index.js | 9 +++++++++ 3 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 lib/heuristics-processor.js (limited to 'lib/document-xml-reader.js') diff --git a/lib/document-xml-reader.js b/lib/document-xml-reader.js index 1f32597..0dcd624 100644 --- a/lib/document-xml-reader.js +++ b/lib/document-xml-reader.js @@ -68,9 +68,6 @@ function DocumentXmlReader(relationships, contentTypes, docxFile, numbering) { var alignElement = element.first("w:jc"); if (alignElement) { properties.alignment = alignElement.attributes["w:val"]; - if (properties.alignment == 'center' && !properties.styleName) { - properties.styleName = "CenteredHeading"; - } } var numberingPropertiesElement = element.first("w:numPr"); if (numberingPropertiesElement) { diff --git a/lib/heuristics-processor.js b/lib/heuristics-processor.js new file mode 100644 index 0000000..1c49f9d --- /dev/null +++ b/lib/heuristics-processor.js @@ -0,0 +1,28 @@ +exports.HeuristicsProcessor = HeuristicsProcessor; + +var q = require("q"); + +function HeuristicsProcessor() { + function processHeuristics(document) { + for (var i = 0; i < document.value.children.length; i++) { + var element = document.value.children[i]; + switch (element.type) { + case 'paragraph': + document.value.children[i] = processParagraph(document.value.children[i]); + break; + } + } + return document; + } + + function processParagraph(element) { + if (element.alignment == 'center' && !element.styleName) { + element.styleName = "CenteredHeading"; + } + return element; + } + + return { + processHeuristics: processHeuristics + } +} \ No newline at end of file diff --git a/lib/index.js b/lib/index.js index 4c35f31..65ec467 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,4 +1,5 @@ var docxReader = require("./docx-reader"); +var HeuristicsProcessor = require("./heuristics-processor").HeuristicsProcessor; var DocumentConverter = require("./document-to-html").DocumentConverter; var htmlPaths = require("./html-paths"); var documentMatchers = require("./document-matchers"); @@ -37,6 +38,9 @@ function Converter(options) { Converter.prototype.convertToHtml = function(inputOptions) { var options = this._options; return read(inputOptions) + .then(function(documentResult) { + return processHeuristics(documentResult); + }) .then(function(documentResult) { return convertDocumentToHtml(documentResult, options); }); @@ -51,6 +55,11 @@ function read(inputOptions) { return docxReader.read(inputOptions); } +function processHeuristics(documentResult) { + var heuristicsProcessor = new HeuristicsProcessor(); + return heuristicsProcessor.processHeuristics(documentResult); +} + function convertDocumentToHtml(documentResult, options) { var documentConverter = new DocumentConverter(options); return documentResult.flatMapThen(function(document) { -- cgit v1.2.3