pointerAtPath method

Pointer pointerAtPath(
  1. Path path
)

Implementation

Pointer pointerAtPath(Path path) {
  if (path.length == 0) {
    return Pointer.Null;
  }

  Pointer p = Pointer();

  var pathLengthToUse = path.length;

  SearchResult? result;
  if (path.lastComponent!.isIndex) {
    _logger.finest('lastComponent is index');
    pathLengthToUse = path.length - 1;
    result = mainContentContainer.contentAtPath(path,
        partialPathLength: pathLengthToUse);
    p.container = result.container;
    p.index = path.lastComponent!.index;
  } else {
    _logger.finest('lastComponent is not index');
    result = mainContentContainer.contentAtPath(path);
    p.container = result.container;
    p.index = -1;
  }

  if (result.obj == null ||
      result.obj == mainContentContainer && pathLengthToUse > 0) {
    error("Failed to find content at path '$path',"
        ' and no approximation of it was possible.');
  } else if (result.approximate) {
    warning("Failed to find content at path '$path',"
        " so it was approximated to: '${result.obj!.path}'.");
  }

  return p;
}