processName method

String? processName(
  1. String text
)

Attempts to extract the cardholder name from the given text.

Returns the extracted cardholder name, or null if no name is found.

Implementation

String? processName(String text) {
  if (!checkCreditCardName) {
    return null;
  }

  if (text.contains(RegExp(r'[a-zA-Z\.]'))) {
    final hasSpace = text.contains(' ');
    final hasNumber = text.contains(RegExp(r'[0-9]'));
    if (hasSpace) {
      final lines = text.split('\n');
      final validLines =
          lines.where((line) => line.trim().isNotEmpty && line.contains(' '));

      if (validLines.isNotEmpty) {
        if (hasNumber) {
          cardName = validLines.firstWhere(
            (line) => !line.contains(RegExp(r'[0-9]')),
            orElse: () => '',
          );
        } else {
          cardName = validLines.first;
        }
      }
    }
  }
  return cardName.isEmpty ? null : cardName;
}