getPathData function
Implementation
PathData getPathData(List<String> keys, TTGraphData graph) {
final lastKey = keys[keys.length - 1];
if (keys.length == 1) {
return PathData(
souls: keys,
complete: graph.containsKey(lastKey),
value: graph[lastKey]);
}
PathData getPathDataParent =
getPathData(keys.sublist(0, keys.length - 1), graph);
if (!isObject(getPathDataParent.value)) {
return PathData(
souls: getPathDataParent.souls,
complete:
getPathDataParent.complete || !isNull(getPathDataParent.value),
value: null);
}
final value = getPathDataParent.value[lastKey];
if (isNull(value)) {
return PathData(
souls: getPathDataParent.souls, complete: true, value: value);
}
String? edgeSoul;
if (isObject(value)) {
edgeSoul = value['#'];
}
if (!isNull(edgeSoul)) {
return PathData(
souls: [...getPathDataParent.souls, edgeSoul!],
complete: graph.containsKey(edgeSoul),
value: graph[edgeSoul]);
}
return PathData(souls: getPathDataParent.souls, complete: true, value: value);
}