12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- var _ = require("underscore");
- exports.paragraph = paragraph;
- exports.run = run;
- exports._elements = elements;
- exports.getDescendantsOfType = getDescendantsOfType;
- exports.getDescendants = getDescendants;
- 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) {
- 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});
- }
- return transform(element);
- };
- }
- function getDescendantsOfType(element, type) {
- return getDescendants(element).filter(function(descendant) {
- return descendant.type === type;
- });
- }
- function getDescendants(element) {
- var descendants = [];
- visitDescendants(element, function(descendant) {
- descendants.push(descendant);
- });
- return descendants;
- }
- function visitDescendants(element, visit) {
- if (element.children) {
- element.children.forEach(function(child) {
- visitDescendants(child, visit);
- visit(child);
- });
- }
- }
|