From: Jeremy Stanley Date: Mon, 30 Dec 2019 15:18:52 +0000 (+0000) Subject: Use call_hook_function() in handler_active() X-Git-Tag: 0.1.0~1 X-Git-Url: https://mudpy.org/gitweb?p=mudpy.git;a=commitdiff_plain;h=c4245fbcb7129049f24512f21fba727e620246dc Use call_hook_function() in handler_active() Simplify mudpy.misc.handler_active() by making it a wrapper around the more general mudpy.misc.call_hook_function() which was originally derived from it. --- diff --git a/mudpy/misc.py b/mudpy/misc.py index ec331a4..ecab471 100644 --- a/mudpy/misc.py +++ b/mudpy/misc.py @@ -1918,33 +1918,14 @@ def handler_active(user): command = find_command(command_name) # if it's allowed, do it - ran = False + result = None if actor.can_run(command): - # dereference the relative object path for the requested function - # TODO(fungi) use call_hook_function() here instead - action = mudpy action_fname = command.get("action", command.key) - for component in action_fname.split("."): - try: - action = getattr(action, component) - ran = True - except AttributeError: - log('Could not find action function "%s" for command "%s"' - % (action_fname, command_name)) - action = None - break - if action: - try: - action(actor, parameters) - except Exception: - log('Command string "%s" from user %s raised an ' - 'exception...\n%s' % ( - input_data, actor.owner.account.get("name"), - traceback.format_exc())) - mudpy.command.error(actor, input_data) + if action_fname: + result = call_hook_function(action_fname, (actor, parameters)) # if the command was not run, give an error - if not ran: + if not result: mudpy.command.error(actor, input_data) # if no input, just idle back with a prompt