render method

Future<RenderResult> render(
  1. ParseResult parseResults, [
  2. VariableMap? variables
])

Render the parser tree to a string (and write it as files when needed)

Implementation

Future<RenderResult> render(
  ParseResult parseResults, [
  VariableMap? variables,
]) async {
  var results = TemplatesRenderResult([]);
  for (var parseResult in [...parseResults.children]) {
    var template = parseResult.template;
    var renderContext = RenderContext(
      engine: this,
      templateBeingRendered: template,
      variables: variables,
      parsedTemplates: parseResults.children,
    );
    var renderResult = await parseResult.render(renderContext);
    var result = TemplateRenderResult(
      template: template,
      text: renderResult.text,
      errors: [...parseResult.errors, ...renderResult.errors],
    );
    results = results.add(result);
    for (var parseResult in renderContext.parsedTemplates.where(
      (parseResult) => parseResult.template is ImportedTemplate,
    )) {
      var result = ImportedTemplateParseErrors(
        parseResult.template,
        parseResult.errorMessage,
      );
      results = results.add(result);
    }
  }

  return results;
}