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(_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 '';
  });
}