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(_nowRegex, (match) {
    final format = match.group(1)!.trim();

    // Remove quotes if present
    final cleanFormat = format.replaceAll('"', '').replaceAll("'", '');

    try {
      final now = DateTime.now();

      // Simple date formatting - in a real implementation, use intl package
      // For now, provide basic formatting
      switch (cleanFormat) {
        case 'Y-m-d':
          return '${now.year}-${now.month.toString().padLeft(2, '0')}-${now.day.toString().padLeft(2, '0')}';
        case 'Y-m-d H:i:s':
          return '${now.year}-${now.month.toString().padLeft(2, '0')}-${now.day.toString().padLeft(2, '0')} '
              '${now.hour.toString().padLeft(2, '0')}:${now.minute.toString().padLeft(2, '0')}:${now.second.toString().padLeft(2, '0')}';
        case 'H:i:s':
          return '${now.hour.toString().padLeft(2, '0')}:${now.minute.toString().padLeft(2, '0')}:${now.second.toString().padLeft(2, '0')}';
        case 'Y':
          return now.year.toString();
        case 'm':
          return now.month.toString().padLeft(2, '0');
        case 'd':
          return now.day.toString().padLeft(2, '0');
        default:
          return now.toIso8601String();
      }
    } catch (_) {
      return DateTime.now().toIso8601String();
    }
  });
}