Source code for ged2doc.name

"""Methods for manipulating/formatting names.
"""

import enum


[docs]class NameFormat(enum.Flag): """Names can be rendered in different formats, this enum defines different types of presentations that can also be combined with logical OR (``|``). """ SURNAME_FIRST = 0x1 """Bit flag for surname-first format (e.g. ``Smith Jane``). """ COMMA = 0x2 """Bit flag for adding comma in surname-first format (e.g. ``Smith, Jane``). """ MAIDEN = 0x4 """Bit flag for adding maiden name (e.g. ``Jane Smith (Sawyer)``). """ MAIDEN_ONLY = 0x8 """Bit flag for using maiden name only (e.g. ``Jane Sawyer``). """ CAPITAL = 0x10 """Bit flag for rendering surname in capital (e.g. ``Jane SMITH``). """
[docs]def name_fmt(name, fmt=NameFormat(0)): """Format name for output. Parameters ---------- name : `ged4py.model.Name` Person name. fmt : `NameFormat`, optional Bitmask combination of `NameFormat` flags. Returns ------- name : `str` Formatted name representation. """ surname = name.surname if fmt & NameFormat.MAIDEN_ONLY: surname = name.maiden or name.surname elif fmt & NameFormat.MAIDEN: surname = name.surname if name.maiden: if surname: surname += ' ' surname += "(" + name.maiden + ")" if fmt & NameFormat.CAPITAL and surname: surname = surname.upper() if fmt & NameFormat.SURNAME_FIRST: if surname and name.given and fmt & NameFormat.COMMA: return surname + ', ' + name.given if surname and name.given: return surname + ' ' + name.given else: return name.given or surname else: if surname and name.given: return name.given + ' ' + surname else: return name.given or surname