visitElementAfter method

  1. @override
void visitElementAfter(
  1. PrettyElement element
)

Called when an Element has been reached, after its children have been visited.

Will not be called if visitElementBefore returns false.

Implementation

@override
void visitElementAfter(PrettyElement element) {
  const backslash = r'$';
  final current = _tree.removeLast();
  final parent = _tree.last;
  final builder = _builders[current.type]!;
  final isBlock = builder.isBlock(element);

  final node = PrettyElement(
    element.type,
    attributes: element.attributes,
    markers: [
      ...builder.prettyMarkers(
        element.markers.where((e) => e.text != backslash).toList(),
        element,
        parent.element,
      ),
      ...element.markers.where((e) => e.text == backslash),
    ],
    children: current.children,
    start: element.start,
    end: element.end,
    isBlock: element.isBlock,
    position: element.position,
  );

  if (isBlock && parent.children.isNotEmpty) {
    parent.children.last.writeln();
  }

  parent.children.add(node);
  builder.visitElementAfter(node, parent.type, parent.children);
}