processDate method

String? processDate(
  1. String text
)

Attempts to extract the expiry date from the given text.

Returns the extracted expiry date in MM/YY format, or null if no date is found.

Implementation

String? processDate(String text) {
  if (text.contains(RegExp(r'\/')) &&
      text.length > 4 &&
      text.length < 10 &&
      checkCreditCardExpiryDate) {
    if (text.contains('/')) {
      // remove everything that is not a digit and not /

      String cardExpirationMonthT = removeNonDigits(text.split('/').first);
      String cardExpirationYearT = removeNonDigits(text.split('/').last);

      if (cardExpirationMonthT.length == 1) {
        cardExpirationMonthT = '0$cardExpirationMonth';
      }

      if (cardExpirationYearT.length >= 4) {
        cardExpirationYearT = cardExpirationYearT.substring(2);
      }

      final fullText = '$cardExpirationMonthT/$cardExpirationYearT';

      final x = _ccValidator.validateExpDate(fullText);
      if (x.isValid) {
        final pdate = parseDate(fullText);

        if (pdate.length >= 2) {
          cardExpirationMonth = pdate[0];
          cardExpirationYear = pdate[1];
        }
        return fullExpiryDate;
      }

      // if (cardExpirationYearT.length == 2 &&
      //     cardExpirationMonthT.length == 2) {
      //   if (int.tryParse(cardExpirationYearT) != null &&
      //       int.tryParse(cardExpirationMonthT) != null) {
      //     cardExpirationMonth = cardExpirationMonthT;
      //     cardExpirationYear = cardExpirationYearT;
      //   }
      // }
    }
  }

  return fullExpiryDate.length > 4 ? fullExpiryDate : null;
}