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); }
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; }
public override Address Clone() { var result = new AddressEx(this) as Address; return(result); }