findRoot method

String? findRoot(
  1. String? name
)

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.isEmpty) 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;
}