indexedValidFrom method

Map<IndexedEdgeId<V>, Edge<V>> indexedValidFrom(
  1. Map<V, Vertex<V>> vertices
)

Implementation

Map<IndexedEdgeId<V>, Edge<V>> indexedValidFrom(Map<V, Vertex<V>> vertices) {
  final validEdges = where((edge) =>
      vertices.containsKey(edge.endpoint1) &&
      vertices.containsKey(edge.endpoint2)).toList();
  final edgeIndeces = <EdgeId, int>{};
  return validEdges.fold({}, (a, c) {
    final id = c.id;
    final index = (edgeIndeces[id] ?? -1) + 1;
    edgeIndeces.addAll({id: index});

    final (ep1, ep2) = id;
    return {...a, (ep1, ep2, index): c};
  });
}