/// <summary> /// Processa un singolo record, applicando le regole in successione: /// 1)AcceptanceRules, 2)CorrectionRules, 3)AllOtherRules /// Nel caso tutte le regole falliscano, l'esito sarà "Non riconosciuto" /// </summary> /// <param name="record"></param> /// <param name="acceptanceRules"></param> /// <param name="correctionRules"></param> /// <param name="allOthers"></param> internal static void Parse(PhoneRecord record, Dictionary <string, string> acceptanceRules, Dictionary <string, string> correctionRules, Dictionary <string, string> allOthers) { string id = string.Empty; string phone = string.Empty; foreach (var rule in acceptanceRules) { if (CheckForAcceptance(record.Input, rule.Key, ref id, ref phone)) { record.Id = id; record.Phone = phone; record.Result = rule.Value; return; } } foreach (var ruleSubtitution in correctionRules) { if (CheckForCorrection(record.Input, ruleSubtitution.Key, acceptanceRules, ref id, ref phone)) { record.Id = id; record.Phone = phone; record.Result = ruleSubtitution.Value; return; } } foreach (var rule in allOthers) { if (CheckForAcceptance(record.Input, rule.Key, ref id, ref phone)) { record.Id = id; record.Phone = phone; record.Result = rule.Value; return; } } record.Result = "Unrecognized"; }
/// <summary> /// Processa un singolo record, applicando le regole in successione: /// 1)AcceptanceRules, 2)CorrectionRules, 3)AllOtherRules /// Nel caso tutte le regole falliscano, l'esito sarà "Non riconosciuto" /// </summary> /// <returns></returns> public PhoneRecord DigestRecord(PhoneRecord record) { PhoneParser.Parse(record, AcceptanceRules, CorrectionRules, AllOtherRules); return(record); }