private int GetParseCandidateScrore(AddressEx a)
        {
            //every candidate starts with a perfect score of 100.
            //problems with the parse reduce that value;
            int score = 100;

            if (string.IsNullOrEmpty(a.street_suffix))
            {
                score -= 10;
            }

            if (a.street.Contains(" "))
            {
                var streetNameParts = a.street.Split(_space);
                if (streetNameParts.Length > 1 && _abbr.AllStreetSuffixes.Contains(streetNameParts[streetNameParts.Length - 1].Trim().ToLower()))
                {
                    score -= 20;
                }
            }

            if (_abbr.AllDirectionals.Contains(a.street.ToLower()))
            {
                score -= 20;
            }


            return(score);
        }
        private bool IsPatternMatch(Pattern pattern, string[] tokens, out AddressEx match)
        {
            match = null;

            if (tokens.Length != pattern.NumTokensInPattern)
            {
                return(false);
            }

            var i      = 0;
            var result = new AddressEx();

            foreach (var tokenParser in pattern.PatternItems)
            {
                if (!tokenParser.IsTokenMatch(tokens, result, ref i))
                {
                    return(false);
                }
            }

            if (null != result)
            {
                result.RebuildAddressLine();
            }

            match = result;
            return(true);
        }
Exemplo n.º 3
0
 public AddressEx(AddressEx src)
     : base(src)
 {
     //specific to this derived class
     name           = src.name;
     cross          = (null != src.cross) ? (Address)src.cross.Clone() : null;
     unitDescriptor = src.unitDescriptor;
     unitValue      = src.unitValue;
 }
Exemplo n.º 4
0
        public override Address Clone()
        {
            var result = new AddressEx(this) as Address;

            return(result);
        }