Mercurial Hosting > luan
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); + } + }