Example #1
0
    def func(self):
        "hook function"

        caller = self.caller
        pycode = self.args

        if not pycode:
            string = "Usage: @py <code>"
            self.msg(string)
            return

        # check if caller is a player

        # import useful variables
        import ev

        available_vars = {
            "self": caller,
            "me": caller,
            "here": hasattr(caller, "location") and caller.location or None,
            "ev": ev,
            "inherits_from": utils.inherits_from,
        }

        try:
            self.msg(">>> %s" % pycode, raw=True, sessid=self.sessid)
        except TypeError:
            self.msg(">>> %s" % pycode, raw=True)

        mode = "eval"
        try:
            try:
                pycode_compiled = compile(pycode, "", mode)
            except Exception:
                mode = "exec"
                pycode_compiled = compile(pycode, "", mode)

            duration = ""
            if "time" in self.switches:
                t0 = timemeasure()
                ret = eval(pycode_compiled, {}, available_vars)
                t1 = timemeasure()
                duration = " (%.4f ms)" % ((t1 - t0) * 1000)
            else:
                ret = eval(pycode_compiled, {}, available_vars)
            if mode == "eval":
                ret = "{n<<< %s%s" % (str(ret), duration)
            else:
                ret = "{n<<< Done.%s" % duration
        except Exception:
            errlist = traceback.format_exc().split("\n")
            if len(errlist) > 4:
                errlist = errlist[4:]
            ret = "\n".join("{n<<< %s" % line for line in errlist if line)

        if ret is not None:
            try:
                self.msg(ret, sessid=self.sessid)
            except TypeError:
                self.msg(ret)
Example #2
0
    def func(self):
        "hook function"

        caller = self.caller
        pycode = self.args

        if not pycode:
            string = "Usage: @py <code>"
            self.msg(string)
            return

        # check if caller is a player

        # import useful variables
        import evennia
        available_vars = {
            'self': caller,
            'me': caller,
            'here': hasattr(caller, "location") and caller.location or None,
            'evennia': evennia,
            'ev': evennia,
            'inherits_from': utils.inherits_from
        }

        try:
            self.msg(">>> %s" % pycode, raw=True, session=self.session)
        except TypeError:
            self.msg(">>> %s" % pycode, raw=True)

        mode = "eval"
        try:
            try:
                pycode_compiled = compile(pycode, "", mode)
            except Exception:
                mode = "exec"
                pycode_compiled = compile(pycode, "", mode)

            duration = ""
            if "time" in self.switches:
                t0 = timemeasure()
                ret = eval(pycode_compiled, {}, available_vars)
                t1 = timemeasure()
                duration = " (runtime ~ %.4f ms)" % ((t1 - t0) * 1000)
            else:
                ret = eval(pycode_compiled, {}, available_vars)
            if mode == "eval":
                ret = "<<< %s%s" % (str(ret), duration)
            else:
                ret = "<<< Done (use self.msg() if you want to catch output)%s" % duration
        except Exception:
            errlist = traceback.format_exc().split('\n')
            if len(errlist) > 4:
                errlist = errlist[4:]
            ret = "\n".join("<<< %s" % line for line in errlist if line)

        try:
            self.msg(ret, session=self.session, raw=True)
        except TypeError:
            self.msg(ret, raw=True)
Example #3
0
    def func(self):
        "hook function"

        caller = self.caller
        pycode = self.args

        if not pycode:
            string = "Usage: @py <code>"
            self.msg(string)
            return

        # check if caller is a player

        # import useful variables
        import evennia
        available_vars = {'self': caller,
                          'me': caller,
                          'here': hasattr(caller, "location") and caller.location or None,
                          'evennia': evennia,
                          'ev': evennia,
                          'inherits_from': utils.inherits_from}

        try:
            self.msg(">>> %s" % pycode, raw=True, session=self.session)
        except TypeError:
            self.msg(">>> %s" % pycode, raw=True)

        mode = "eval"
        try:
            try:
                pycode_compiled = compile(pycode, "", mode)
            except Exception:
                mode = "exec"
                pycode_compiled = compile(pycode, "", mode)

            duration = ""
            if "time" in self.switches:
                t0 = timemeasure()
                ret = eval(pycode_compiled, {}, available_vars)
                t1 = timemeasure()
                duration = " (runtime ~ %.4f ms)" % ((t1 - t0) * 1000)
            else:
                ret = eval(pycode_compiled, {}, available_vars)
            if mode == "eval":
                ret = "%s%s" % (str(ret), duration)
            else:
                ret = " Done (use self.msg() if you want to catch output)%s" % duration
        except Exception:
            errlist = traceback.format_exc().split('\n')
            if len(errlist) > 4:
                errlist = errlist[4:]
            ret = "\n".join("%s" % line for line in errlist if line)

        try:
            self.msg(ret, session=self.session, raw=True)
        except TypeError:
            self.msg(ret, raw=True)
Example #4
0
    def func(self):
        "hook function"

        caller = self.caller
        pycode = self.args

        if not pycode:
            string = "Usage: @py <code>"
            caller.msg(string)
            return

        # import useful variables
        import ev
        available_vars = {'self':caller,
                          'me':caller,
                          'here':caller.location,
                          'ev':ev,
                          'inherits_from':utils.inherits_from}

        caller.msg(">>> %s" % pycode, data={"raw":True})

        mode = "eval"
        try:
            try:
                pycode_compiled = compile(pycode, "", mode)
            except Exception:
                mode = "exec"
                pycode_compiled = compile(pycode, "", mode)

            duration = ""
            if "time" in self.switches:
                t0 = timemeasure()
                ret = eval(pycode_compiled, {}, available_vars)
                t1 = timemeasure()
                duration = " (%.4f ms)" % ((t1 - t0) * 1000)
            else:
                ret = eval(pycode_compiled, {}, available_vars)
            if mode == "eval":
                ret = "{n<<< %s%s" % (str(ret), duration)
            else:
                ret = "{n<<< Done.%s" % duration
        except Exception:
            errlist = traceback.format_exc().split('\n')
            if len(errlist) > 4:
                errlist = errlist[4:]
            ret = "\n".join("{n<<< %s" % line for line in errlist if line)

        if ret != None:
            caller.msg(ret)