render function

String render(
  1. String template,
  2. Map<String, String> values
)

Implementation

String render(String template, Map<String, String> values) {
  final re = RegExp(r'@([_a-zA-Z][_a-zA-Z0-9]*)');
  var keys = re.allMatches(template).map((m) => m[1]!).toSet().toList();
  keys.sort();
  keys = keys.reversed.toList();
  var result = template;
  for (final key in keys) {
    if (values.containsKey(key)) {
      final value = values[key]!;
      result = result.replaceAll('@$key', value);
    }
  }

  return result;
}