interpolate method
Implementation
String interpolate(Map<String, dynamic> params) {
/// interpolate patterns with {...} with params
var text = this;
final matches = _interpolationPattern.allMatches(text);
for (final match in matches) {
final key = match.group(1);
if (key == null) continue;
/// Key may have a function call
/// eg: balance: {balance:asMoney} should put
/// balance.toRupeeString() in params
final keyParts = key.split(':');
var formatter = _noopFormatter;
var extra = '';
if (keyParts.length > 2) {
extra = keyParts[2];
}
if (keyParts.length > 1) {
final formatterName = keyParts[1];
formatter = _formatters[formatterName] ?? formatter;
}
final accessKey = keyParts.first;
final value = params[accessKey];
if (value == null) continue;
final formattedValue = formatter(accessKey, value, extra);
text = text.replaceAll(match.group(0)!, formattedValue.toString());
}
return text;
}