Add is_restricted boolean check for commands
authorJeremy Stanley <fungi@yuggoth.org>
Fri, 2 Oct 2020 19:59:45 +0000 (19:59 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Fri, 2 Oct 2020 19:59:45 +0000 (19:59 +0000)
In preparation for adding additional command restriction indicators,
add a simple Element class method to return whether a command
element is flagged as administrative.

mudpy/command.py
mudpy/misc.py

index bd473e5..279da78 100644 (file)
@@ -171,7 +171,7 @@ def help(actor, parameters):
             description = command.get("description")
             if not description:
                 description = "(no short description provided)"
-            if command.get("administrative"):
+            if command.is_restricted():
                 output = "$(red)"
             else:
                 output = "$(grn)"
@@ -194,7 +194,7 @@ def help(actor, parameters):
                         if actor.can_run(command):
                             if really_see_also:
                                 really_see_also += ", "
-                            if command.get("administrative"):
+                            if command.is_restricted():
                                 really_see_also += "$(red)"
                             else:
                                 really_see_also += "$(grn)"
@@ -244,7 +244,7 @@ def help(actor, parameters):
                     "description", "(no short description provided)")
 
                 # administrative command names are in red, others in green
-                if command.get("administrative"):
+                if command.is_restricted():
                     color = "red"
                 else:
                     color = "grn"
index e737a28..babd42f 100644 (file)
@@ -184,6 +184,10 @@ class Element:
                 prepend_padding
             )
 
+    def is_restricted(self):
+        """Boolean check whether command is administrative or debugging."""
+        return(self.get("administrative", False))
+
     def is_admin(self):
         """Boolean check whether an actor is controlled by an admin owner."""
         return(self.owner and self.owner.is_admin())
@@ -200,7 +204,7 @@ class Element:
             return(True)
 
         # everyone can run non-administrative commands
-        if not command.get("administrative"):
+        if not command.is_restricted():
             return(True)
 
         # otherwise the command cannot be run by this actor
@@ -1506,7 +1510,7 @@ def find_command(command_name):
     else:
         for candidate in sorted(universe.groups["command"]):
             if candidate.startswith(command_name) and not universe.groups[
-                    "command"][candidate].get("administrative"):
+                    "command"][candidate].is_restricted():
                 # the command matches the start of a command word and is not
                 # restricted to administrators
                 command = universe.groups["command"][candidate]