Update reverse compilation to eliminate getattr() calls

This commit is contained in:
Thomas Krijnen
2023-02-14 10:02:58 +01:00
parent dffa90bd5d
commit c634bffa10
@@ -1,4 +1,5 @@
import os
import re
import ast
import collections
import ifcopenshell
@@ -7,7 +8,24 @@ from codegen import indent
def reverse_compile(s):
return s.strip().replace("len(", "SIZEOF(").replace("assert ", "").replace(" is not False", "")
return re.sub(
"\s*\-\s*EXPRESS_ONE_BASED_INDEXING",
"",
re.sub(
", )?+.(, INDETERMINATE)\\"[::-1],
"]\\1[",
re.sub(
r", '(\w+)', INDETERMINATE\)",
".\\1",
s.strip()
.replace("len(", "SIZEOF(")
.replace("assert ", "")
.replace(" is not False", "")
.replace("getattr(", "")
.replace("express_getitem(", ""),
)[::-1],
)[::-1],
)
@dataclass