aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md23
-rw-r--r--lib/transforms.js14
-rw-r--r--tests/mammoth.tests.js4
3 files changed, 26 insertions, 15 deletions
diff --git a/README.md b/README.md
index a079e04..bd81b84 100644
--- a/README.md
+++ b/README.md
@@ -461,16 +461,25 @@ You can use the `transformDocument` argument to modify the document appropriatel
```javascript
function transformElement(element) {
if (element.children) {
- element.children.forEach(transformElement);
+ var children = _.map(element.children, transformElement);
+ element = extend(element, {children: children});
}
+
if (element.type === "paragraph") {
- if (element.alignment === "center" && !element.styleId) {
- element.styleId = "Heading2";
- }
+ element = transformParagraph(element);
}
+
return element;
}
+function transformParagraph(element) {
+ if (element.alignment === "center" && !element.styleId) {
+ return extend(element, {styleId: "Heading2"});
+ } else {
+ return element;
+ }
+}
+
var options = {
transformDocument: transformElement
};
@@ -481,12 +490,12 @@ The return value of `transformDocument` is used during HTML generation.
The above can be written more succinctly using the helper `mammoth.transforms.paragraph`:
```javascript
-
function transformParagraph(element) {
if (element.alignment === "center" && !element.styleId) {
- element.styleId = "Heading2";
+ return extend(element, {styleId: "Heading2"});
+ } else {
+ return element;
}
- return element;
}
var options = {
diff --git a/lib/transforms.js b/lib/transforms.js
index 988b456..5078387 100644
--- a/lib/transforms.js
+++ b/lib/transforms.js
@@ -1,15 +1,17 @@
+var _ = require("underscore");
+
exports.paragraph = function(transform) {
function transformElement(element) {
if (element.children) {
- for (var i = 0; i < element.children.length; i++) {
- element.children[i] = transformElement(element.children[i]);
- }
+ var children = _.map(element.children, transformElement);
+ element = _.extend(element, {children: children});
}
+
if (element.type === "paragraph") {
- return transform(element);
- } else {
- return element;
+ element = transform(element);
}
+
+ return element;
}
return transformElement;
};
diff --git a/tests/mammoth.tests.js b/tests/mammoth.tests.js
index 801bb02..ad71539 100644
--- a/tests/mammoth.tests.js
+++ b/tests/mammoth.tests.js
@@ -1,6 +1,7 @@
var assert = require("assert");
var path = require("path");
var fs = require("fs");
+var _ = require("underscore");
var mammoth = require("../");
var promises = require("../lib/promises");
@@ -156,8 +157,7 @@ describe('mammoth', function() {
});
var options = {
transformDocument: mammoth.transforms.paragraph(function(paragraph) {
- paragraph.styleId = "Heading1";
- return paragraph;
+ return _.extend(paragraph, {styleId: "Heading1"});
})
};
return mammoth.convertToHtml({file: docxFile}, options).then(function(result) {