File tree Expand file tree Collapse file tree 4 files changed +12
-2
lines changed
Expand file tree Collapse file tree 4 files changed +12
-2
lines changed Original file line number Diff line number Diff line change @@ -60,7 +60,9 @@ def _cast_personal_name(value: str) -> types.PersonalName:
6060 match = _match (value , grammar .personalname , "PersonalName" )
6161 return types .PersonalName (
6262 fullname = value .replace ("/" , "" ),
63- surname = match .group ("surname" ),
63+ surname = match .group ("surname" ).strip () if match .group ("surname" ) else None ,
64+ given = match .group ("given" ).strip () if match .group ("given" ) else None ,
65+ suffix = match .group ("suffix" ).strip () if match .group ("suffix" ) else None ,
6466 )
6567
6668
Original file line number Diff line number Diff line change 110110minute = '[012345][0-9]'
111111namechar = '[ -.0-\\ U0010ffff]'
112112namestr = f'({ namechar } )+'
113- personalname = f'({ namestr } |({ namestr } )?/(?P<surname>{ namestr } )?/({ namestr } )?)'
113+ personalname = f'({ namestr } |(?P<given> { namestr } )?/(?P<surname>{ namestr } )?/(?P<suffix> { namestr } )?)'
114114second = '[012345][0-9]'
115115text = f'({ anychar } )*'
116116special = f'{ text } '
Original file line number Diff line number Diff line change @@ -39,7 +39,9 @@ class PersonalName:
3939 """Personal name type."""
4040
4141 fullname : str
42+ given : str | None = None
4243 surname : str | None = None
44+ suffix : str | None = None
4345
4446
4547@dataclass
Original file line number Diff line number Diff line change @@ -37,10 +37,13 @@ def test_cast_personal_name():
3737 assert cast ._cast_personal_name ("John /Doe/" ) == types .PersonalName (
3838 fullname = "John Doe" ,
3939 surname = "Doe" ,
40+ given = "John" ,
4041 )
4142 assert cast ._cast_personal_name ("John /Doe/ Smith" ) == types .PersonalName (
4243 fullname = "John Doe Smith" ,
4344 surname = "Doe" ,
45+ given = "John" ,
46+ suffix = "Smith" ,
4447 )
4548 with pytest .raises (ValueError ):
4649 cast ._cast_personal_name ("John /Doe/ Smith /Smith/" )
@@ -51,14 +54,17 @@ def test_cast_personal_name():
5154 assert cast ._cast_personal_name ("José /O'Malley/" ) == types .PersonalName (
5255 fullname = "José O'Malley" ,
5356 surname = "O'Malley" ,
57+ given = "José" ,
5458 )
5559 assert cast ._cast_personal_name ("María-José /García-López/" ) == types .PersonalName (
5660 fullname = "María-José García-López" ,
5761 surname = "García-López" ,
62+ given = "María-José" ,
5863 )
5964 assert cast ._cast_personal_name ("Søren /Ødegård/" ) == types .PersonalName (
6065 fullname = "Søren Ødegård" ,
6166 surname = "Ødegård" ,
67+ given = "Søren" ,
6268 )
6369
6470
You can’t perform that action at this time.
0 commit comments