Mercurial Hosting > luan
comparison core/src/luan/modules/PackageLuan.java @ 503:92c3d22745b8
make _ENV optional
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Wed, 20 May 2015 23:24:46 -0600 |
parents | 2e79b47d02a2 |
children | f1601a4ce1aa |
comparison
equal
deleted
inserted
replaced
502:d3183a330ff5 | 503:92c3d22745b8 |
---|---|
47 mod = JavaLuan.load(luan,modName.substring(5)); | 47 mod = JavaLuan.load(luan,modName.substring(5)); |
48 } else { | 48 } else { |
49 String src = read(luan,modName,true); | 49 String src = read(luan,modName,true); |
50 if( src == null ) | 50 if( src == null ) |
51 return null; | 51 return null; |
52 LuanTable env = new LuanTable(); | 52 LuanFunction loader = BasicLuan.load(luan,src,modName,null,false); |
53 LuanFunction loader = BasicLuan.load(luan,src,modName,env,false); | 53 mod = Luan.first( |
54 Object result = Luan.first( | |
55 luan.call(loader,"<require \""+modName+"\">",new Object[]{modName}) | 54 luan.call(loader,"<require \""+modName+"\">",new Object[]{modName}) |
56 ); | 55 ); |
57 mod = result!=null ? result : env; | 56 if( mod == null ) { |
57 mod = loaded.rawGet(modName); | |
58 if( mod != null ) | |
59 return mod; | |
60 throw luan.exception( "module '"+modName+"' returned nil" ); | |
61 } | |
58 } | 62 } |
59 loaded.rawPut(modName,mod); | 63 loaded.rawPut(modName,mod); |
60 } | 64 } |
61 return mod; | 65 return mod; |
62 } | 66 } |