Use the active state prompt as the default prompt
authorJeremy Stanley <fungi@yuggoth.org>
Sun, 5 May 2019 16:44:10 +0000 (16:44 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Sun, 5 May 2019 16:44:10 +0000 (16:44 +0000)
In order to stop hard-coding the default prompt string into the
prompt method, use the prompt string associated with the active
state to provide it. This is intuitive and allows it to be more
easily overridden if desired.

mudpy/misc.py
share/menu.yaml

index b4009c9..dce3ea6 100644 (file)
@@ -663,7 +663,17 @@ class User:
 
     def prompt(self):
         """"Generate and return an input prompt."""
-        return self.account.get("prompt", ">") + " "
+
+        # Start with the user's preference, if one was provided
+        prompt = self.account.get("prompt")
+
+        # If the user has not set a prompt, then immediately return the default
+        # provided for the current state
+        if not prompt:
+            return get_menu_prompt(self.state)
+
+        # Return the cooked prompt
+        return "%s " % prompt
 
     def adjust_echoing(self):
         """Adjust echoing to match state menu requirements."""
index a0b6efb..e2f75e1 100644 (file)
@@ -18,7 +18,7 @@ menu.activate_avatar.description: This is the list of avatars available for you
   to awaken.
 menu.activate_avatar.prompt: Whom would you like to awaken?
 
-menu.active.prompt:
+menu.active.prompt: ">"
 
 menu.checking_new_account_name.action_d: user.account.destroy()
 menu.checking_new_account_name.action_g: user.account.destroy()