mustache function

Future Function(Angel app) mustache(
  1. Directory viewsDirectory,
  2. {String fileExtension = '.mustache',
  3. String partialsPath = './partials'}
)

Implementation

Future Function(Angel app) mustache(Directory viewsDirectory,
    {String fileExtension = '.mustache', String partialsPath = './partials'}) {
  var partialsDirectory = viewsDirectory.fileSystem
      .directory(p.join(p.fromUri(viewsDirectory.uri), partialsPath));

  var context =
      MustacheContext(viewsDirectory, partialsDirectory, fileExtension);

  var cache = MustacheViewCache(context);

  return (Angel app) async {
    app.viewGenerator = (String name, [Map? data]) async {
      //var partialsProvider;
      partialsProvider(String name) {
        var template = cache.getPartialSync(name, app)!;
        //return render(template, data ?? {}, partial: partialsProvider);
        return viewer.Template(template, name: name);
      }

      var viewTemplate = await (cache.getView(name, app));
      //return await render(viewTemplate, data ?? {}, partial: partialsProvider);
      var t = viewer.Template(viewTemplate ?? '',
          partialResolver: partialsProvider);
      return t.renderString(data ?? {});
    };
  };
}