diff options
Diffstat (limited to 'lib/transforms.js')
| -rw-r--r-- | lib/transforms.js | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/lib/transforms.js b/lib/transforms.js index 22be1af..5d45153 100644 --- a/lib/transforms.js +++ b/lib/transforms.js @@ -5,19 +5,27 @@ exports.getDescendantsOfType = getDescendantsOfType; exports.getDescendants = getDescendants; function paragraph(transform) { - function transformElement(element) { + return elementsOfType("paragraph", transform); +} + +function elementsOfType(elementType, transform) { + return elements(function(element) { + if (element.type === elementType) { + return transform(element); + } else { + return element; + } + }); +} + +function elements(transform) { + return function transformElement(element) { if (element.children) { var children = _.map(element.children, transformElement); element = _.extend(element, {children: children}); } - - if (element.type === "paragraph") { - element = transform(element); - } - - return element; - } - return transformElement; + return transform(element); + }; } |
