Skip to content

Commit f0f8c14

Browse files
committed
Merge code changes from upstream r664
1 parent 7f6fa88 commit f0f8c14

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

python/phonenumbers/phonenumberutil.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2555,8 +2555,13 @@ def _build_national_number_for_parsing(number):
25552555
national_number = U_EMPTY_STRING
25562556
# Now append everything between the "tel:" prefix and the
25572557
# phone-context. This should include the national number, an optional
2558-
# extension or isdn-subaddress component.
2559-
national_number += number[number.find(_RFC3966_PREFIX) + len(_RFC3966_PREFIX):index_of_phone_context]
2558+
# extension or isdn-subaddress component. Note we also handle the case
2559+
# when "tel:" is missing, as we have seen in some of the phone number
2560+
# inputs. In that case we append everything from the beginning.
2561+
index_of_rfc3996_prefix = number.find(_RFC3966_PREFIX)
2562+
index_of_national_number = ((index_of_rfc3996_prefix + len(_RFC3966_PREFIX))
2563+
if (index_of_rfc3996_prefix >= 0) else 0);
2564+
national_number += number[index_of_national_number:index_of_phone_context]
25602565
else:
25612566
# Extract a possible number from the string passed in (this strips leading characters that
25622567
# could not be the start of a phone number.)

python/tests/phonenumberutiltest.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1608,12 +1608,15 @@ def testParseNationalNumber(self):
16081608
self.assertEqual(NZ_NUMBER, phonenumbers.parse("tel:03-331-6005;phone-context=+64", "NZ"))
16091609
self.assertEqual(NZ_NUMBER, phonenumbers.parse("tel:331-6005;phone-context=+64-3", "NZ"))
16101610
self.assertEqual(NZ_NUMBER, phonenumbers.parse("tel:331-6005;phone-context=+64-3", "US"))
1611+
self.assertEqual(NZ_NUMBER, phonenumbers.parse("My number is tel:03-331-6005;phone-context=+64", "NZ"))
16111612
# Test parsing RFC3966 format with optional user-defined
16121613
# parameters. The parameters will appear after the context if present.
16131614
self.assertEqual(NZ_NUMBER, phonenumbers.parse("tel:03-331-6005;phone-context=+64;a=%A1", "NZ"))
16141615
# Test parsing RFC3966 with an ISDN subaddress.
16151616
self.assertEqual(NZ_NUMBER, phonenumbers.parse("tel:03-331-6005;isub=12345;phone-context=+64", "NZ"))
16161617
self.assertEqual(NZ_NUMBER, phonenumbers.parse("tel:+64-3-331-6005;isub=12345", "NZ"))
1618+
# Test parsing RFC3966 with "tel:" missing.
1619+
self.assertEqual(NZ_NUMBER, phonenumbers.parse("03-331-6005;phone-context=+64", "NZ"))
16171620
# Testing international prefixes.
16181621
# Should strip country calling code.
16191622
self.assertEqual(NZ_NUMBER, phonenumbers.parse("0064 3 331 6005", "NZ"))

0 commit comments

Comments
 (0)