77from purescripto .rts import META_ENV , RTS_TEMPLATE
88import marshal
99import zipfile
10+ import ast
1011import io
11- import sys
12+
1213
1314class LoadPureScriptImplCode (LoaderForBetterLife [CodeType ]):
1415 def source_to_prog (self , src : bytes , path : Path ) -> CodeType :
15- sys .setrecursionlimit (3000 )
1616 filename = str (path .absolute ())
1717 if path .name .endswith (".raw.py" ):
18- meta_code = compile (src , filename , "eval" )
18+ expr = ast .Expression (ast .parse (src ).body [0 ].value )
19+ src_path , meta_code = compile (expr , filename , "eval" )
1920 sexpr = eval (meta_code , META_ENV )
2021 else :
2122 assert path .name .endswith (".zip.py" )
2223 zip = zipfile .ZipFile (filename )
24+ src_path = zip .read ("srcpath" ).decode ('utf8' )
2325 file = io .StringIO (zip .read ("source" ).decode ("utf8" ))
2426 sexpr = load_topdown (file , META_ENV )
2527
26- code = module_code (sexpr , name = self .qualified_name + "$" , filename = filename )
28+ code = module_code (sexpr , name = self .qualified_name + "$" , filename = src_path )
2729 return code
2830
2931 def load_program (self , b : bytes ) -> CodeType :
@@ -33,7 +35,7 @@ def dump_program(self, prog: CodeType) -> bytes:
3335 return marshal .dumps (prog )
3436
3537 def suffix (self ) -> Union [str , Tuple [str , ...]]:
36- return ".raw .py" , ".zip .py"
38+ return ".zip .py" , ".raw .py"
3739
3840
3941def LoadPureScript (file : str , name : str ):
0 commit comments