Skip to content

Commit 5975363

Browse files
committed
BUG: don't modify case of surnames
1 parent 446735c commit 5975363

3 files changed

Lines changed: 16 additions & 5 deletions

File tree

src/citeable/_keys.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def generate_key(author: list[str], year: int) -> str:
1717
1818
Algorithm:
1919
1. Extract surname from the first author (before comma, or last token).
20-
2. Strip non-ASCII and spaces; title-case.
20+
2. Strip non-ASCII and spaces; preserve original case.
2121
3. Return ``"{surname}.{year}"``.
2222
"""
2323
surname = extract_surname(author[0])

src/citeable/_validate.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ def extract_surname(name: str) -> str:
2727
"""Extract surname from an author name string.
2828
2929
Handles both ``"Last, First"`` and ``"First Last"`` formats.
30-
Returns the surname stripped of non-ASCII characters and title-cased.
30+
Returns the surname stripped of non-ASCII characters, preserving original case.
3131
"""
3232
if "," in name:
3333
surname = name.split(",", maxsplit=1)[0].strip()
3434
else:
3535
surname = name.rsplit(maxsplit=1)[-1].strip()
3636
surname = re.sub(r"[^A-Za-z]", "", surname)
37-
return surname.title()
37+
return surname

tests/test_keys.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from citeable import Article, Misc, Software, assign_unique_keys
66
from citeable._keys import generate_key
7+
from citeable._validate import extract_surname
78

89
# ── generate_key ─────────────────────────────────────────────────────────
910

@@ -20,8 +21,18 @@ def test_generate_key_strips_non_ascii():
2021
assert generate_key(["Müller, Hans"], 2020) == "Mller.2020"
2122

2223

23-
def test_generate_key_title_cases():
24-
assert generate_key(["van der berg, Jan"], 2020) == "Vanderberg.2020"
24+
def test_generate_key_preserves_case():
25+
assert generate_key(["van der berg, Jan"], 2020) == "vanderberg.2020"
26+
27+
28+
def test_generate_key_camel_case_preserved():
29+
assert generate_key(["McArthur, Robert"], 2021) == "McArthur.2021"
30+
assert generate_key(["McDonald, Daniel"], 2022) == "McDonald.2022"
31+
32+
33+
def test_extract_surname_preserves_case():
34+
assert extract_surname("McArthur, Robert") == "McArthur"
35+
assert extract_surname("McDonald, Daniel") == "McDonald"
2536

2637

2738
# ── assign_unique_keys ──────────────────────────────────────────────────

0 commit comments

Comments
 (0)