예제 #1
0
        /// <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";
        }
예제 #2
0
 /// <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);
 }