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 }