diff options
| author | Michael Williamson <mike@zwobble.org> | 2017-04-13 21:57:00 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2017-04-13 21:57:00 +0100 |
| commit | b2bccab123b94b53b4789974ce41125e8e7735fa (patch) | |
| tree | b645fe9cf71a59bb43b88ec7188a48c2b3b2ef75 | |
| parent | 96b8496dc47880693b646f81cfd440de8aa5f9ae (diff) | |
Add transforms.run
| -rw-r--r-- | NEWS | 4 | ||||
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | lib/documents.js | 2 | ||||
| -rw-r--r-- | lib/transforms.js | 6 | ||||
| -rw-r--r-- | test/transforms.tests.js | 75 |
5 files changed, 92 insertions, 1 deletions
@@ -1,3 +1,7 @@ +# 1.3.5 + +* Add transforms.run. + # 1.3.4 * Read children of w:object elements. @@ -571,6 +571,12 @@ Returns a function that can be used as the `transformDocument` option. This will apply the function `transformParagraph` to each paragraph element. `transformParagraph` should return the new paragraph. +#### `mammoth.transforms.run(transformRun)` + +Returns a function that can be used as the `transformDocument` option. +This will apply the function `transformRun` to each run element. +`transformRun` should return the new run. + #### `mammoth.transforms.getDescendants(element)` Gets all descendants of an element. diff --git a/lib/documents.js b/lib/documents.js index cf56174..d4f4e3c 100644 --- a/lib/documents.js +++ b/lib/documents.js @@ -188,7 +188,7 @@ exports.document = exports.Document = Document; exports.paragraph = exports.Paragraph = Paragraph; exports.run = exports.Run = Run; exports.Text = Text; -exports.Tab = Tab; +exports.tab = exports.Tab = Tab; exports.Hyperlink = Hyperlink; exports.noteReference = exports.NoteReference = NoteReference; exports.Notes = Notes; diff --git a/lib/transforms.js b/lib/transforms.js index 5d45153..01ba0d8 100644 --- a/lib/transforms.js +++ b/lib/transforms.js @@ -1,6 +1,8 @@ var _ = require("underscore"); exports.paragraph = paragraph; +exports.run = run; +exports._elements = elements; exports.getDescendantsOfType = getDescendantsOfType; exports.getDescendants = getDescendants; @@ -8,6 +10,10 @@ function paragraph(transform) { return elementsOfType("paragraph", transform); } +function run(transform) { + return elementsOfType("run", transform); +} + function elementsOfType(elementType, transform) { return elements(function(element) { if (element.type === elementType) { diff --git a/test/transforms.tests.js b/test/transforms.tests.js index c6656dd..d9112b2 100644 --- a/test/transforms.tests.js +++ b/test/transforms.tests.js @@ -1,9 +1,84 @@ var assert = require("assert"); +var _ = require("underscore"); + +var documents = require("../lib/documents"); var transforms = require("../lib/transforms"); var test = require("./test")(module); +test("paragraph()", { + "paragraph is transformed": function() { + var paragraph = documents.paragraph([]); + var result = transforms.paragraph(function() { + return documents.tab(); + })(paragraph); + assert.deepEqual(result, documents.tab()); + }, + + "non-paragraph elements are not transformed": function() { + var run = documents.run([]); + var result = transforms.paragraph(function() { + return documents.tab(); + })(run); + assert.deepEqual(result, documents.run([])); + } +}); + + +test("run()", { + "run is transformed": function() { + var run = documents.run([]); + var result = transforms.run(function() { + return documents.tab(); + })(run); + assert.deepEqual(result, documents.tab()); + }, + + "non-run elements are not transformed": function() { + var paragraph = documents.paragraph([]); + var result = transforms.run(function() { + return documents.tab(); + })(paragraph); + assert.deepEqual(result, documents.paragraph([])); + } +}); + + +test("elements()", { + "all descendants are transformed": function() { + var root = { + children: [ + { + children: [ + {} + ] + } + ] + }; + var currentCount = 0; + function setCount(node) { + currentCount++; + return _.extend(node, {count: currentCount}); + } + + var result = transforms._elements(setCount)(root); + + assert.deepEqual(result, { + count: 3, + children: [ + { + count: 2, + children: [ + {count: 1} + ] + } + ] + }); + } +}); + + test("getDescendants()", { "returns nothing if element has no children property": function() { assert.deepEqual(transforms.getDescendants({}), []); |
