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.
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."""
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()