in phonenumbers.go [528:569]
func (l Leniency) Verify(number *PhoneNumber, candidate string) bool {
switch l {
case POSSIBLE:
return IsPossibleNumber(number)
case VALID:
if !IsValidNumber(number) ||
!ContainsOnlyValidXChars(number, candidate) {
return false
}
return IsNationalPrefixPresentIfRequired(number)
case STRICT_GROUPING:
if !IsValidNumber(number) ||
!ContainsOnlyValidXChars(number, candidate) ||
ContainsMoreThanOneSlashInNationalNumber(number, candidate) ||
!IsNationalPrefixPresentIfRequired(number) {
return false
}
return CheckNumberGroupingIsValid(number, candidate,
func(number *PhoneNumber,
normalizedCandidate string,
expectedNumberGroups []string) bool {
return AllNumberGroupsRemainGrouped(
number, normalizedCandidate, expectedNumberGroups)
})
case EXACT_GROUPING:
if !IsValidNumber(number) ||
!ContainsOnlyValidXChars(number, candidate) ||
ContainsMoreThanOneSlashInNationalNumber(number, candidate) ||
!IsNationalPrefixPresentIfRequired(number) {
return false
}
return CheckNumberGroupingIsValid(number, candidate,
func(number *PhoneNumber,
normalizedCandidate string,
expectedNumberGroups []string) bool {
return AllNumberGroupsAreExactlyPresent(
number, normalizedCandidate, expectedNumberGroups)
})
}
return false
}