Allow including time in the active state prompt
authorJeremy Stanley <fungi@yuggoth.org>
Sun, 5 May 2019 21:07:26 +0000 (21:07 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Sun, 5 May 2019 21:16:39 +0000 (21:16 +0000)
Occurrences of $(time) in the user's prompt string will be replaced
by the current World clock increment when displayed. Also test this
works as intended.

mudpy/misc.py
mudpy/tests/selftest.py
share/command.yaml

index dce3ea6..50a9456 100644 (file)
@@ -672,8 +672,18 @@ class User:
         if not prompt:
             return get_menu_prompt(self.state)
 
+        # Allow including the World clock state
+        if "$_(time)" in prompt:
+            prompt = prompt.replace(
+                "$_(time)",
+                str(universe.groups["internal"]["counters"].get("elapsed")))
+
+        # Append a single space for clear separation from user input
+        if prompt[-1] != " ":
+            prompt = "%s " % prompt
+
         # Return the cooked prompt
-        return "%s " % prompt
+        return prompt
 
     def adjust_echoing(self):
         """Adjust echoing to match state menu requirements."""
index d98755a..b73c13e 100644 (file)
@@ -167,7 +167,8 @@ test_preferences = (
     (0, "> ", "preferences"),
     (0, r"prompt \x1b\[32m.*> ", "preferences prompt $(foo)"),
     (0, r"\$\(foo\) ", "preferences prompt"),
-    (0, r"\$\(foo\).*\$\(foo\) ", "preferences prompt >"),
+    (0, r"\$\(foo\).*\$\(foo\) ", "preferences prompt $(time)>"),
+    (0, "[0-9]> ", "preferences prompt >"),
     (2, "> ", "preferences loglevel 0"),
     (2, "> ", "preferences"),
     (2, r"loglevel \x1b\[32m0\x1b\[0m.*> ", "preferences loglevel zero"),
index 6d009b2..cf3abec 100644 (file)
@@ -62,7 +62,7 @@ command.preferences.help: If invoked with no parameters, all your current
     parameter is supplied, the first must be the name of a preference and the
     remainder is the value to which you wish to change it.
     Examples:$(eol)$(eol)   preferences$(eol)   preferences
-    prompt$(eol)   preferences prompt $
+    prompt$(eol)   preferences prompt $_(time)>
 
 command.quit.action: mudpy.command.quit(actor)
 command.quit.description: Leave the World.