formatElement function
String
formatElement(
- Element element,
- 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();
}