apply method
Implementation
@override
Future<String> apply(String content, Map<String, dynamic> context) async {
return content.replaceAllMapped(_whileRegex, (match) {
final condition = match.group(1)?.trim();
final body = match.group(2);
if (condition == null || body == null) return '';
final buffer = StringBuffer();
var iterations = 0;
const maxIterations = 1000; // Prevent infinite loops
while (iterations < maxIterations) {
try {
final shouldContinue = _evaluate(condition, context);
if (!shouldContinue) break;
buffer.write(body);
iterations++;
} catch (_) {
break;
}
}
return buffer.toString();
});
}