From bb089c182de209d220f73dffda37b292f4784bbd Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Sat, 17 Jun 2017 15:12:54 +0000 Subject: [PATCH] Improved the handling of surname particles, (prompted by failure to handle the name of Niels ten Oever correctly) - Legacy-Id: 13663 --- ietf/person/name.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/ietf/person/name.py b/ietf/person/name.py index 14fba0a56..1c8b20a44 100644 --- a/ietf/person/name.py +++ b/ietf/person/name.py @@ -1,5 +1,7 @@ import re +import debug # pyflakes:ignore + def name_parts(name): prefix, first, middle, last, suffix = u"", u"", u"", u"", u"" @@ -28,11 +30,16 @@ def name_parts(name): suffix = parts[-1] parts = parts[:-1] if len(parts) > 2: - name = u" ".join(parts) - compound = re.search(r" (de|hadi|van|ver|von|el|le|st\.?) ", name.lower()) - if compound: - pos = compound.start() - parts = name[:pos].split() + [name[pos+1:]] + # Check if we have a surname with nobiliary particle + full = u" ".join(parts) + if full.upper() == full: + full = full.lower() # adjust case for all-uppercase input + # This is an incomplete list. Adjust as needed to handle known ietf + # participant names correctly: + particle = re.search(r" (af|de|der|di|Di|du|el|hadi|st\.?|ten|ter|van|van der|Van|von|von der|Von|zu) ", full) + if particle: + pos = particle.start() + parts = full[:pos].split() + [full[pos+1:]] if len(parts) > 2: first = parts[0] last = parts[-1]