Skip to content

Commit 4610381

Browse files
committed
Add an name utility function to return a name's initials. Handle names with an uppercase surname to the left of the given name correctly.
- Legacy-Id: 4951
1 parent 4558595 commit 4610381

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

ietf/person/name.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,27 @@ def name_parts(name):
2929
if len(parts) > 2:
3030
first = parts[0]
3131
last = parts[-1]
32+
# Handle reverse-order names with uppercase surname correctly
33+
if re.search("^[A-Z-]+$", first):
34+
first, last = last, first
3235
middle = " ".join(parts[1:-1])
3336
elif len(parts) == 2:
3437
first, last = parts
3538
else:
3639
last = parts[0]
3740
return prefix, first, middle, last, suffix
3841

42+
def initials(name):
43+
prefix, first, middle, last, suffix = name_parts(name)
44+
given = first
45+
if middle:
46+
given += " "+middle
47+
initials = " ".join([ n[0]+'.' for n in given.split() ])
48+
return initials
3949

4050
if __name__ == "__main__":
4151
import sys
42-
43-
print name_parts(" ".join(sys.argv[1:]))
52+
name = " ".join(sys.argv[1:])
53+
print name_parts(name)
54+
print initials(name)
55+

0 commit comments

Comments
 (0)