21 lines
618 B
Dart
21 lines
618 B
Dart
![]() |
import 'node.dart';
|
||
|
import 'node_builder.dart';
|
||
|
|
||
|
/// Returns a function that rebuilds an arbitrary [Node] by applying the [transform] to it.
|
||
|
Node Function(Node) rebuild(NodeBuilder Function(NodeBuilder) transform,
|
||
|
{bool selfClosing: false}) {
|
||
|
return (node) =>
|
||
|
transform(NodeBuilder.from(node)).build(selfClosing: selfClosing);
|
||
|
}
|
||
|
|
||
|
/// Applies [f] to all children of this node, recursively.
|
||
|
///
|
||
|
/// Use this alongside [rebuild].
|
||
|
Node Function(Node) rebuildRecursive(Node Function(Node) f) {
|
||
|
Node _build(Node node) {
|
||
|
return NodeBuilder.from(f(node)).mapChildren(_build).build();
|
||
|
}
|
||
|
|
||
|
return _build;
|
||
|
}
|