delegateTemplate function

String delegateTemplate({
  1. required Iterable<ExportNode> nodes,
  2. required Set<String> locales,
  3. String className = 'Locales',
  4. String defaultLocale = 'en',
})

Implementation

String delegateTemplate({
  required Iterable<ExportNode> nodes,
  required Set<String> locales,
  String className = 'Locales',
  String defaultLocale = 'en',
}) {
  final template = Template(_template, htmlEscapeValues: false);
  final List<String> allLocales = locales.toList();
  final Set<String> copyLocales = Set.from(locales)..remove(defaultLocale);
  final List<String> localesWitOutMain = copyLocales.toList();

  final rootNode = nodes.firstWhere((element) => element.root);
  final nonRootNodes = nodes.where((element) => !element.root);

  return template.renderString({
    'className': className,
    'allLocales': allLocales,
    'locales': localesWitOutMain,
    'defaultLocale': defaultLocale,
    'pascalCase': (LambdaContext value) {
      return StringUtils.toPascalCase(value.renderString());
    },
    'rootNode': (LambdaContext value) {
      return nodeRefRender(node: rootNode, header: false);
    },
    'nonRootNodes': _nonRootNodes(nonRootNodes),
    'nodeImplements': _nodeImplements(nodes),
  });
}