From 794bbad413933c02750fbb577305c2e59dea8987 Mon Sep 17 00:00:00 2001 From: Henrik Levkowetz Date: Wed, 7 Mar 2012 10:34:45 +0000 Subject: [PATCH] Refine the splitting of flat names into constituent parts. Fixes #769. - Legacy-Id: 4065 --- ietf/person/name.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/ietf/person/name.py b/ietf/person/name.py index 2bcafd478..61c142216 100644 --- a/ietf/person/name.py +++ b/ietf/person/name.py @@ -10,13 +10,22 @@ def name_parts(name): name = name_with_paren_match.group(1) parts = name.split() - if parts[0] in ["Mr", "Mr.", "Mrs", "Mrs.", "Ms", "Ms.", "Miss", "Dr.", "Doctor", "Prof", "Prof.", "Professor", "Sir", "Lady", "Dame"]: + if len(parts) > 2 and parts[0] in ["M", "M.", "Sri", ] and "." not in parts[1]: + prefix = parts[0]; + parts = parts[1:] + if parts[0] in ["Mr", "Mr.", "Mrs", "Mrs.", "Ms", "Ms.", "Miss", "Dr.", "Doctor", "Prof", "Prof.", "Professor", "Sir", "Lady", "Dame", ]: prefix = parts[0]; parts = parts[1:] if len(parts) > 2: if parts[-1] in ["Jr", "Jr.", "II", "2nd", "III", "3rd", "Ph.D."]: suffix = parts[-1] parts = parts[:-1] + if len(parts) > 2: + name = " ".join(parts) + compound = re.search(" (de|hadi|van|ver|von|el|le|st\.?) ", name.lower()) + if compound: + pos = compound.start() + parts = name[:pos].split() + [name[pos+1:]] if len(parts) > 2: first = parts[0] last = parts[-1]