From ae4d3b69ef049469cf597680de76c9a6c531b892 Mon Sep 17 00:00:00 2001 From: Howard Abrams Date: Wed, 14 May 2025 16:09:20 -0700 Subject: [PATCH] Fix capitalization when more than one character in a room --- typeclasses/rooms.py | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/typeclasses/rooms.py b/typeclasses/rooms.py index bf030e1..8bf107e 100644 --- a/typeclasses/rooms.py +++ b/typeclasses/rooms.py @@ -22,6 +22,32 @@ from .objects import ObjectParent _SEARCH_AT_RESULT = utils.object_from_module(settings.SEARCH_AT_RESULT) +def articlize_character(character, capitalize=False): + """ + Return a simple character with article prefix. + """ + if capitalize: + article = "A" + else: + article = "a" + + if character == "" or match(r"^\|b[A-Z]", character): + return character + elif match(r"^\|b*[aeiou]", character): + return f"{article}n " + character + else: + return f"{article} " + character + +def captialize_characters(characters): + """ + Capitalizes and prefixes an article on string of characters. + Assuming one per line. + """ + char_list = characters.split("\n") + updated = [articlize_character(ch, True) for ch in char_list] + return "\n".join(updated) + + class Room(ObjectParent, ExtendedRoom, ContribRPRoom): """ Rooms are like any Object, except their location is None @@ -70,7 +96,9 @@ class Room(ObjectParent, ExtendedRoom, ContribRPRoom): also = '' if num_chars > 2: - return f"You {also}see the following characters:\n" + char_list + return f"You {also}see the following characters:" + \ + captialize_characters(char_list) + if num_chars > 1: character = char_list.strip() if character.startswith('|'):