Fix recursion, if module requires itself

This commit is contained in:
Fierelier 2024-01-19 02:29:53 +01:00
parent b3853e5157
commit 17009172b7
1 changed files with 6 additions and 5 deletions

View File

@ -24,9 +24,9 @@ g = Bunch()
paths = [] paths = []
loaded = Bunch() loaded = Bunch()
def docode(st,name = "Unknown"): def docode(st,name = "Unknown",glb = False):
code = compile(st,name,"exec") code = compile(st,name,"exec")
glb = Bunch() if glb == False: glb = Bunch()
glb[distro] = me glb[distro] = me
glb[distro + "l"] = Bunch() glb[distro + "l"] = Bunch()
glb[distro + "l"].s = name glb[distro + "l"].s = name
@ -38,8 +38,8 @@ def docode(st,name = "Unknown"):
exec(code,glb) exec(code,glb)
return glb return glb
def dofile(path): def dofile(path,*args,**kwargs):
return docode(open(path,"rb").read(),path) return docode(open(path,"rb").read(),path,*args,**kwargs)
def dorequire(name,*args,**kwargs): def dorequire(name,*args,**kwargs):
name = name.replace("/",".").replace("\\",".") name = name.replace("/",".").replace("\\",".")
@ -53,7 +53,8 @@ def require(name,env=False,*args,**kwargs):
if env == False: env = loaded if env == False: env = loaded
if type(env) != Bunch: raise Exception("require: env is not of type " +distro+ ".Bunch") if type(env) != Bunch: raise Exception("require: env is not of type " +distro+ ".Bunch")
if not name in env: if not name in env:
env[name] = dorequire(name,*args,**kwargs) env[name] = Bunch()
env[name] = dorequire(name,*args,glb=env[name],**kwargs)
return env[name] return env[name]
# PROGRAM # PROGRAM