from __future__ import annotations
import re
from .base import amount, norm

def find(pattern,text,group=1,flags=re.I|re.M):
    m=re.search(pattern,text,flags)
    return norm(m.group(group)) if m else ''

def date_iso(s):
    import pandas as pd
    x=pd.to_datetime(s,errors='coerce',dayfirst=True)
    return '' if pd.isna(x) else x.strftime('%Y-%m-%d')

def split_pages(text): return text.split('\f')

def infer_mode(n):
    u=(n or '').upper()
    for k,v in [('UPI','UPI'),('NEFT','NEFT'),('IMPS','IMPS'),('RTGS','RTGS'),('CASH DEPOSIT','Cash Deposit'),('CASH WITHDRAWAL','Cash Withdrawal'),('ATM','ATM'),('CHEQUE','Cheque'),('CHQ','Cheque'),('POS','POS'),('EDC','Card Settlement'),('ACH','ACH')]:
        if k in u:return v
    return 'Other'
