Mercurial Hosting > luan
diff src/luan/modules/PackageLuan.java @ 1335:e0cf0d108a77
major cleanup
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 14 Feb 2019 03:10:45 -0700 |
parents | 25746915a241 |
children | 8d95711f6615 |
line wrap: on
line diff
--- a/src/luan/modules/PackageLuan.java Tue Feb 12 22:53:57 2019 -0700 +++ b/src/luan/modules/PackageLuan.java Thu Feb 14 03:10:45 2019 -0700 @@ -15,13 +15,17 @@ public final class PackageLuan { - public static final LuanFunction requireFn; - static { - try { - requireFn = new LuanJavaFunction(PackageLuan.class.getMethod("require",Luan.class,String.class),null); - } catch(NoSuchMethodException e) { - throw new RuntimeException(e); + public static LuanFunction requireFn(Luan luan) { + LuanFunction fn = (LuanFunction)luan.registry().get("Package.require"); + if( fn == null ) { + try { + fn = new LuanJavaFunction(luan,PackageLuan.class.getMethod("require",Luan.class,String.class),null); + } catch(NoSuchMethodException e) { + throw new RuntimeException(e); + } + luan.registry().put("Package.require",fn); } + return fn; } public static LuanTable loaded(Luan luan) { @@ -53,9 +57,9 @@ } catch(IOException e) { throw new RuntimeException(e); } - LuanFunction loader = Luan.load(src,modName); + LuanFunction loader = luan.load(src,modName); mod = Luan.first( - loader.call(luan,new Object[]{modName}) + loader.call(modName) ); if( mod == null ) throw new RuntimeException(); @@ -68,9 +72,9 @@ if( src == null ) { mod = Boolean.FALSE; } else { - LuanFunction loader = Luan.load(src,modName); + LuanFunction loader = luan.load(src,modName); mod = Luan.first( - loader.call(luan,new Object[]{modName}) + loader.call(modName) ); if( mod == null ) { mod = loaded.rawGet(modName); @@ -94,7 +98,7 @@ } Luan.Security security = Luan.setSecurity(luan,null); try { - return (String)Luan.first(boot.call("read",uri)); + return (String)Luan.first(boot.fn("read").call(uri)); } catch(LuanException e) { return null; } finally { @@ -103,17 +107,4 @@ } } - public static void enableLoad(Luan luan,String... mods) throws LuanException { - if( !luan.isLocked ) - return; - LuanTable loaded = loaded(luan); - for( String mod : mods ) { - if( loaded.rawGet(mod) == null ) { - luan.isLocked = false; - luan.deepenClone(luan,new LuanCloner(LuanCloner.Type.COMPLETE)); - break; - } - } - } - }