getInsertionAnchor method
Determines the insertion anchor point for the given insert operation.
Returns a tuple of (anchor index, indent string).
Implementation
(int, String) getInsertionAnchor(XmlInsertElementEdit insert) {
final range = _getElementScope(insert.path);
if (range == null) {
return (-1, _defaultIndent);
}
int anchor = -1;
if (insert.insertAfter != null) {
for (var i = range.start; i <= range.end; i++) {
final event = _events[i];
if (event is XmlStartElementEvent) {
final content = (i + 1 <= range.end && _events[i + 1] is XmlTextEvent)
? _events[i + 1] as XmlTextEvent
: null;
if (insert.insertAfter!(event.name, content?.value)) {
anchor = i + 1;
}
}
// Stop at the end of the range
if (i == range.end) break;
}
}
if (anchor != -1) {
return (anchor, _getPreviousElementIndent(max(anchor - 1, 0)));
}
// Default to inserting at the start of the range
return (range.start, _getNextElementIndent(range.start));
}