diff options
Diffstat (limited to 'MAFH2/fortuneengine/fortuneengine/GameInspect.py')
-rw-r--r-- | MAFH2/fortuneengine/fortuneengine/GameInspect.py | 231 |
1 files changed, 0 insertions, 231 deletions
diff --git a/MAFH2/fortuneengine/fortuneengine/GameInspect.py b/MAFH2/fortuneengine/fortuneengine/GameInspect.py deleted file mode 100644 index 33a9938..0000000 --- a/MAFH2/fortuneengine/fortuneengine/GameInspect.py +++ /dev/null @@ -1,231 +0,0 @@ -# FortuneEngine is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# FortuneEngine is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with the FortuneEngine. If not, see <http://www.gnu.org/licenses/>. -# -# Author: Justin Lewis <jlew.blackout@gmail.com> - -import inspect - - -class GameInspect(object): - """ - GameInspect is a class that can inspect and modify object trees. - - The top most object must be a dictionary - """ - - def __init__(self, object_root): - """ - Init function of the GameInspect class. - - @param object_root: The root dictionary of the tree - """ - self.root = object_root - - def drilldown_object(self, objectname): - """ - Takes the objectname string and tries to find the object that it is - representing and returns that object. - - Example: battle.enemy_list[1].sprite._images[1] - - @param objectname: The string that represents the object's path. - @return: Returns the object requested - @raise Exception: Throws an Exception with the string being the - path error. - """ - last = "empt" - obj = "empt" - last_token = "" - - # Objects are separated by the period (".") symbol - object_tokens = objectname.split(".") - - # Check if the first part of the name is registered with the - # game engine as that is our starting point - try: - obj = self.root[object_tokens[0]] - last = obj - last_token = object_tokens[0] - - except KeyError: - raise Exception("%s is not registered with the game engine" % - object_tokens[0]) - - # Handles dot notation for sub modules by looping through the tokens - for token in object_tokens[1:]: - - # Splits the dictionary/list token ("[") - dict_token = token.split('[') - try: - last = obj - obj = getattr(obj, dict_token[0]) - last_token = dict_token[0] - - except: - raise Exception("Error finding member element: %s" % token) - - # Handles dictionaries - for d_token in dict_token[1:]: - if d_token[-1] == "]": - d_token = d_token[:-1] - # Try list notation first then try dictionary notation - try: - key = int(d_token) - except: - key = d_token - - try: - last = obj - obj = obj[key] - last_token = key - except: - raise Exception("Unable to find %s" % key) - - else: - raise Exception("Invalid Syntax, expected ] at end of %s" % - d_token) - - return obj, last, last_token - - def set_eval(self, objectname, statement): - """ - Sets the object referenced by objectname to a value returned by - passing the string stored in the val parameter to an eval statement. - - @param objectname: A string representation of the location - of the object being inspected in relation - to the game engine registered object. - @param statement: A string to be evaluated and set to the object. - """ - try: - obj, last, last_token = self.drilldown_object(objectname) - except Exception, detail: - return str(detail) - - try: - setattr(last, last_token, eval(str(statement))) - except Exception, detail: - return str(detail) - - def set_str(self, objectname, val): - """ - Sets the object referenced by objectname to a string passed into the - val parameter. - - @param objectname: A string representation of the location - of the object being inspected in relation - to the game engine registered object. - @param val: A string to be set as the value of the object. - """ - try: - obj, last, last_token = self.drilldown_object(objectname) - except Exception, detail: - return str(detail) - - setattr(last, last_token, val) - - def set_int(self, objectname, val): - """ - Sets the object referenced by objectname to an integer passed into the - val parameter. It may be a string that holds the int as it will be - type casted. - - @param objectname: A string representation of the location - of the object being inspected in relation - to the game engine registered object. - @param val: An int/string containing an int to be set as - the value of the object. - """ - try: - obj, last, last_token = self.drilldown_object(objectname) - except Exception, detail: - return str(detail) - - try: - setattr(last, last_token, int(val)) - except: - return str(detail) - - def inspect_object(self, objectname): - """ - Displays information about the object path it is passed - - @param objectname: A string representation of the location - of the object being inspected in relation - to the game engine registered object. - """ - try: - obj, last, last_token = self.drilldown_object(objectname) - - except Exception, detail: - return str(detail) - - classname = obj.__class__.__name__ - - # If it has the __dict__ attribute, it is an object we can inspect - if hasattr(obj, "__dict__"): - attribute_list = "Attributes:" - attributes = obj.__dict__ - for attribute_key in attributes.keys(): - attribute_list = "%s\n\t%s:%s" % (attribute_list, - attribute_key, str(attributes[attribute_key])) - - # Inspect the object for all its methods - method_list = inspect.getmembers(obj, inspect.ismethod) - if method_list != []: - - # Loop through the methods in the object and print them - # to the console - attribute_list = "%s\n\nMethods:" % attribute_list - for method in method_list: - attribute_list = "%s\n\t%s" % (attribute_list, method[0]) - - # Inspect the arguments to the current method - args, vargs, kwargs, local = inspect.getargspec(method[1]) - - # Display function arguments - attribute_list = "%s\n\t\tArgs: %s" % \ - (attribute_list, ",".join(args)) - - # Display * and ** arguments if they were found - if vargs: - attribute_list = "%s\n\t\tVArgs: %s" % \ - (attribute_list, ",".join(vargs)) - - # Display KW Arguments if they were found - if kwargs: - attribute_list = "%s\n\t\tKWArgs: %s" % \ - (attribute_list, ",".join(kwargs)) - - # If dictionary, show keys - elif hasattr(obj, "keys"): - attribute_list = "Dictionary Items:" - - for d_obj in obj.keys(): - attribute_list = "%s\n\t%s:%s" % (attribute_list, d_obj, - str(obj[d_obj])) - - # If list, iterate over the list and show its values - elif type(obj).__name__ == 'list': - i = 0 - attribute_list = "List Items:" - for item in obj: - attribute_list = "%s\n\t%d:%s" % (attribute_list, i, str(item)) - i = i + 1 - - # We don't know what it is, so just display string representation - # of the object in question - else: - attribute_list = str(obj) - - return "Class: %s\n%s" % (classname, attribute_list) |