formatElement function

String formatElement(
  1. Element element,
  2. int indent
)

Implementation

String formatElement(html.Element element, int indent) {
  final buffer = StringBuffer();
  final indentStr = '  ' * indent;
  final tagName = element.localName;

  // Opening tag
  buffer.write('$indentStr<$tagName');

  // Attributes
  if (element.attributes.isNotEmpty) {
    element.attributes.forEach((key, value) {
      buffer.write(' $key="${escapeHtml(value)}"');
    });
  }

  // Self-closing tags
  if (element.nodes.isEmpty) {
    buffer.writeln(' />');
    return buffer.toString();
  }

  buffer.write('>');

  // Check if element has only text content (inline)
  final hasOnlyText = element.nodes.length == 1 &&
      element.nodes.first.nodeType == html.Node.TEXT_NODE;

  if (hasOnlyText) {
    final text = element.text.trim();
    if (text.isNotEmpty && text.length < 80) {
      buffer.write(escapeHtml(text));
      buffer.writeln('</$tagName>');
      return buffer.toString();
    }
  }

  buffer.writeln();

  // Children
  for (final node in element.nodes) {
    if (node.nodeType == html.Node.ELEMENT_NODE) {
      buffer.write(formatElement(node as html.Element, indent + 1));
    } else if (node.nodeType == html.Node.TEXT_NODE) {
      final text = node.text?.trim() ?? '';
      if (text.isNotEmpty) {
        buffer.writeln('$indentStr  ${escapeHtml(text)}');
      }
    }
  }

  // Closing tag
  buffer.writeln('$indentStr</$tagName>');

  return buffer.toString();
}