mergeConsecutiveListsInContainer function

void mergeConsecutiveListsInContainer(
  1. FNode container,
  2. Root root
)

Merges consecutive lists with the same listType inside a specific container.

Implementation

void mergeConsecutiveListsInContainer(FNode container, Root root) {
  final children = childrenOf(container);
  final listsToMerge = <FluentList>[];

  for (var i = 0; i < children.length; i++) {
    final child = children[i];
    if (child is FluentList) {
      if (listsToMerge.isEmpty || child.listType == listsToMerge.first.listType) {
        listsToMerge.add(child);
      } else {
        if (listsToMerge.length > 1) {
          _mergeLists(root, listsToMerge);
        }
        listsToMerge.clear();
        listsToMerge.add(child);
      }
    } else {
      if (listsToMerge.length > 1) {
        _mergeLists(root, listsToMerge);
      }
      listsToMerge.clear();
    }
  }

  if (listsToMerge.length > 1) {
    _mergeLists(root, listsToMerge);
  }
}