resolveHierarchy function
Future<DocumentHierarchy?>
resolveHierarchy(
- Document document,
- Directory currentDirectory,
- void onError(
- 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);
}