interpolate method

String interpolate(
  1. Map<String, dynamic> params
)

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;
}