absorbNode method
bool
absorbNode(
- Node? other
)
override
Implementation
@override
bool absorbNode(Node? other) {
if (other == null) return false;
final node = this.node;
if (node == null) return false;
if (node.isA<Text>()) {
if (other.isA<Text>()) {
node.textContent =
((node as Text).textContent ?? '') + (other.textContent ?? '');
other.textContent = '';
return true;
} else if (other.isA<Element>()) {
node.textContent = ((node as Text).textContent ?? '') +
((other as Element).textContent ?? '');
other.clear();
return true;
}
} else if (node.isA<Element>()) {
final element = node as Element;
if (other.isA<Element>()) {
final otherElement = other as Element;
if (otherElement.childNodes.isEmpty) {
return true;
}
element.appendNodes(otherElement.childNodes.toList());
otherElement.clear();
return true;
} else if (other.isA<Text>()) {
other.remove();
element.appendChild(other);
return true;
}
}
return false;
}