resolveHierarchy function

Future<DocumentHierarchy?> resolveHierarchy(
  1. Document document,
  2. Directory currentDirectory,
  3. void onError(
    1. dynamic e
    )?
)

Resolves the document hierarchy at a given node in the tree.

Implementation

Future<DocumentHierarchy?> resolveHierarchy(Document document, Directory currentDirectory, void onError(e)?) async {
  var extendsTemplates = new Queue<Element>();
  String? parent;

  while (document != null && (parent = getParent(document, onError)) != null) {
    try {
      extendsTemplates.addFirst(document.root);
      var file = currentDirectory.childFile(parent!);
      var parsed = parseDocument(await file.readAsString(), sourceUrl: file.uri, onError: onError)!;
      document = await resolveIncludes(parsed, currentDirectory, onError);
    } on FileSystemException catch (e) {
      onError!(new TwigDartError(TwigDartErrorSeverity.error, e.message, document.root.span));
      return null;
    }
  }

  if (document == null) return null;
  return new DocumentHierarchy(document, extendsTemplates);
}