findRoot method
Implementation
String? findRoot(String? name)
{
String? root;
if (_list.isNotEmpty)
{
// find first repeat instance in the tree
if (name == null)
{
bool done = false;
dynamic node = _list.first;
while (!done)
{
if (node is Map)
{
if (node.entries.length == 0) done = true;
if (node.entries.length > 1) done = true;
if (node.entries.length == 1)
{
var name = node.keys.first;
root = (root == null) ? name : "$root.$name";
node = node.values.first;
if ((node is Map) && (node.entries.isNotEmpty) && (node.values.first is String)) done = true;
}
}
else done = true;
}
return root;
}
// find named map entry
else
{
bool done = false;
dynamic node = _list.first;
while (!done)
{
if (node is Map)
{
var nodename = node.keys.first;
root = (root == null) ? nodename : "$root.$nodename";
if (node.containsKey(name)) done = true;
node = node.values.first;
}
else done = true;
}
return root;
}
}
return null;
}