apply method

  1. @override
Future<String> apply(
  1. String content,
  2. Map<String, dynamic> context
)
override

Implementation

@override
Future<String> apply(String content, Map<String, dynamic> context) async {
  return content.replaceAllMapped(_substrRegex, (match) {
    final strExpr = match.group(1)!.trim();
    final startExpr = match.group(2)!.trim();
    final lengthExpr = match.group(3)?.trim();

    try {
      final str = _evaluate(strExpr, context).toString();
      final start = int.parse(_evaluate(startExpr, context).toString());

      if (lengthExpr != null) {
        final length = int.parse(_evaluate(lengthExpr, context).toString());
        return str.substring(start, start + length);
      } else {
        return str.substring(start);
      }
    } catch (_) {
      return '';
    }
  });
}