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;
-			}
-		}
-	}
-
 }