diff src/luan/lib/PackageLib.java @ 141:c2ee8a717b73

move loading of standard modules to luan git-svn-id: https://luan-java.googlecode.com/svn/trunk@142 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Fri, 13 Jun 2014 16:37:49 +0000
parents 06159094b802
children 05f8c21160ef
line wrap: on
line diff
--- a/src/luan/lib/PackageLib.java	Fri Jun 13 15:04:29 2014 +0000
+++ b/src/luan/lib/PackageLib.java	Fri Jun 13 16:37:49 2014 +0000
@@ -28,6 +28,7 @@
 			module.put("path","?.luan");
 			try {
 				add( global, "require", LuanState.class, String.class );
+				add( module, "get_loader", String.class );
 				add( module, "search_path", String.class, String.class );
 			} catch(NoSuchMethodException e) {
 				throw new RuntimeException(e);
@@ -153,4 +154,15 @@
 		}
 	};
 
+
+	public static LuanFunction get_loader(String path)
+		throws ClassNotFoundException, NoSuchFieldException, IllegalAccessException
+	{
+		int i = path.lastIndexOf('.');
+		String clsPath = path.substring(0,i);
+		String fld = path.substring(i+1);
+		Class cls = Class.forName(clsPath);
+		return (LuanFunction)cls.getField(fld).get(null);
+	}
+
 }