apply method
Implementation
@override
Future<String> apply(String content, Map<String, dynamic> context) async {
return content.replaceAllMapped(_formatRegex, (match) {
final dateExpr = match.group(1)!.trim();
final format = match.group(2)!.trim();
try {
final date = _evaluate(dateExpr, context);
if (date is DateTime) {
// Remove quotes if present from format
final cleanFormat = format.replaceAll('"', '').replaceAll("'", '');
// Simple date formatting - in a real implementation, use intl package
switch (cleanFormat) {
case 'Y-m-d':
return '${date.year}-${date.month.toString().padLeft(2, '0')}-${date.day.toString().padLeft(2, '0')}';
case 'Y-m-d H:i:s':
return '${date.year}-${date.month.toString().padLeft(2, '0')}-${date.day.toString().padLeft(2, '0')} '
'${date.hour.toString().padLeft(2, '0')}:${date.minute.toString().padLeft(2, '0')}:${date.second.toString().padLeft(2, '0')}';
case 'H:i:s':
return '${date.hour.toString().padLeft(2, '0')}:${date.minute.toString().padLeft(2, '0')}:${date.second.toString().padLeft(2, '0')}';
case 'Y':
return date.year.toString();
case 'm':
return date.month.toString().padLeft(2, '0');
case 'd':
return date.day.toString().padLeft(2, '0');
default:
return date.toIso8601String();
}
}
} catch (_) {
// Ignore errors
}
return '';
});
}