diff options
Diffstat (limited to 'ast2json/rpyc2json.py')
-rwxr-xr-x | ast2json/rpyc2json.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ast2json/rpyc2json.py b/ast2json/rpyc2json.py index 7c8518b..ec4f4b8 100755 --- a/ast2json/rpyc2json.py +++ b/ast2json/rpyc2json.py @@ -66,16 +66,20 @@ def get_value(attr_value): return attr_value if isinstance(attr_value, (int, str, float, complex, bool)): return attr_value - if isinstance(attr_value, list) or isinstance(attr_value, tuple): + if isinstance(attr_value, (list, tuple)): return [get_value(x) for x in attr_value] if isinstance(attr_value, dict): return attr_value if isinstance(attr_value, renpy.ast.Node): return node2json(attr_value) + if isinstance(attr_value, (renpy.ast.Python, renpy.ast.EarlyPython)): + attr_value.code.mode = 'exec' + if isinstance(attr_value, (renpy.ast.Image, renpy.ast.Define)): + attr_value.code.mode = 'eval' if isinstance(attr_value, renpy.ast.PyCode): return { "source": attr_value.source, - "ast": ast2json.str2json(attr_value.source) + "ast": ast2json.str2json(attr_value.source, attr_value.mode) } if isinstance(attr_value, renpy.ast.ArgumentInfo): return list(map(lambda x: getattr(attr_value, x), ["arguments", "extrapos", "extrakw"])) |