deleteRepeatInstance method

void deleteRepeatInstance(
  1. TreeReference deleteRef
)

Removes the repeat instance at deleteRef, renumbers the following instances and re-evaluates what depended on it.

The reference-based core of JavaRosa's deleteRepeat(FormIndex).

Implementation

void deleteRepeatInstance(TreeReference deleteRef) {
  final deleteElement = mainInstance.resolveReference(deleteRef)!;
  final parentElement = mainInstance.resolveReference(deleteRef.parentRef!)!;
  final childMult = deleteElement.multiplicity;
  parentElement.removeChild(deleteElement);
  for (final child in parentElement.children) {
    if (child.name == deleteElement.name && child.multiplicity > childMult) {
      child
        ..multiplicity = child.multiplicity - 1
        ..clearChildrenCaches();
    }
  }
  _dag.deleteRepeatInstance(
    mainInstance,
    evaluationContext,
    deleteRef,
    deleteElement,
  );
}