Subgraph.create constructor

Subgraph.create({
  1. String? id,
  2. EdgeOp opType = EdgeOp.directed,
  3. required Map<String, List<String>> data,
})

Create a graph from a mapping of node to connected nodes.

Implementation

factory Subgraph.create({
  String? id,
  EdgeOp opType = EdgeOp.directed,
  required Map<String, List<String>> data,
}) {
  final statements = <Statement>[];

  for (final node in data.keys) {
    statements.add(NodeStatement(NodeId(node)));
  }

  for (final mapping in data.entries) {
    final start = NodeId(mapping.key);
    for (final end in mapping.value) {
      statements.add(
        EdgeStatement(
          start,
          EdgeRhs(opType, NodeId(end)),
        ),
      );
    }
  }

  return Subgraph(id, StmtList(statements));
}