From f22f4eed153d7c0181bf7b27d14fe9f0798eb7f7 Mon Sep 17 00:00:00 2001 From: "Mohamed I. Elawadi" Date: Fri, 24 Sep 2021 12:22:44 +0200 Subject: [PATCH 1/2] fix bug when variable name equals Js To reproduce eval_js('(function(Js){1}(5))') --- js2py/translators/friendly_nodes.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/js2py/translators/friendly_nodes.py b/js2py/translators/friendly_nodes.py index 370f85d8..17ad4277 100644 --- a/js2py/translators/friendly_nodes.py +++ b/js2py/translators/friendly_nodes.py @@ -49,6 +49,8 @@ def get_break_label(label): def is_valid_py_name(name): + if name == 'Js': + return False try: compile(name + ' = 11', 'a', 'exec') except: From f28b8e6198d540a91591c296a65d8a1d8b4829a0 Mon Sep 17 00:00:00 2001 From: "Mohamed I. Elawadi" Date: Fri, 1 Oct 2021 00:05:33 +0200 Subject: [PATCH 2/2] add Scope, pyjs.* --- js2py/translators/friendly_nodes.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/js2py/translators/friendly_nodes.py b/js2py/translators/friendly_nodes.py index 17ad4277..1b68f6f1 100644 --- a/js2py/translators/friendly_nodes.py +++ b/js2py/translators/friendly_nodes.py @@ -1,6 +1,7 @@ import binascii from pyjsparser import PyJsParser +from js2py import pyjs import six if six.PY3: basestring = str @@ -10,6 +11,7 @@ REGEXP_CONVERTER = PyJsParser() +RESERVED_INTERNAL = set(pyjs.__all__ + ["Js", "Scope"]) def to_hex(s): return binascii.hexlify(s.encode('utf8')).decode( @@ -49,7 +51,7 @@ def get_break_label(label): def is_valid_py_name(name): - if name == 'Js': + if name in RESERVED_INTERNAL: return False try: compile(name + ' = 11', 'a', 'exec')