in phonenumbers.go [3251:3290]
func IsNumberMatchWithOneNumber(
firstNumber *PhoneNumber, secondNumber string) MatchType {
// First see if the second number has an implicit country calling
// code, by attempting to parse it.
secondNumberAsProto, err := Parse(secondNumber, UNKNOWN_REGION)
if err == nil {
return IsNumberMatchWithNumbers(firstNumber, secondNumberAsProto)
}
if err != ErrInvalidCountryCode {
return NOT_A_NUMBER
}
// The second number has no country calling code. EXACT_MATCH is no
// longer possible. We parse it as if the region was the same as that
// for the first number, and if EXACT_MATCH is returned, we replace
// this with NSN_MATCH.
firstNumberRegion := GetRegionCodeForCountryCode(int(firstNumber.GetCountryCode()))
if firstNumberRegion != UNKNOWN_REGION {
secondNumberWithFirstNumberRegion, err :=
Parse(secondNumber, firstNumberRegion)
if err != nil {
return NOT_A_NUMBER
}
match := IsNumberMatchWithNumbers(
firstNumber, secondNumberWithFirstNumberRegion)
if match == EXACT_MATCH {
return NSN_MATCH
}
return match
} else {
// If the first number didn't have a valid country calling
// code, then we parse the second number without one as well.
var secondNumberProto *PhoneNumber
err := parseHelper(secondNumber, "", false, false, secondNumberProto)
if err != nil {
return NOT_A_NUMBER
}
return IsNumberMatchWithNumbers(firstNumber, secondNumberProto)
}
}