collapseTextNodes function

List<ASTNode> collapseTextNodes(
  1. List<ASTNode> elements
)

Implementation

List<ASTNode> collapseTextNodes(List<ASTNode> elements) {
  List<ASTNode> result = [];
  TextNode? currentTextNode;

  for (var node in elements) {
    if (node is TextNode) {
      if (currentTextNode == null) {
        currentTextNode = node;
      } else {
        currentTextNode = TextNode(currentTextNode.text + node.text);
      }
    } else {
      if (currentTextNode != null) {
        // Add the combined TextNode to the result
        result.add(currentTextNode);
        currentTextNode = null;
      }
      result.add(node);
    }
  }

  if (currentTextNode != null) {
    result.add(currentTextNode);
  }

  return result;
}