comparison core/src/luan/modules/JavaLuan.java @ 264:9e0d4452e649

implement URL style module names git-svn-id: https://luan-java.googlecode.com/svn/trunk@265 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Wed, 29 Oct 2014 03:50:59 +0000
parents 2a54cb7d1cf4
children 8ac3eaf8ecd9
comparison
equal deleted inserted replaced
263:54873a389f80 264:9e0d4452e649
42 return module; 42 return module;
43 } 43 }
44 }; 44 };
45 45
46 private static boolean isLoaded(LuanState luan) { 46 private static boolean isLoaded(LuanState luan) {
47 return PackageLuan.loaded(luan).get("Java") != null; 47 return PackageLuan.loaded(luan).get("luan:Java") != null;
48 } 48 }
49 49
50 public static final LuanFunction javaSearcher = new LuanFunction() { 50 static LuanFunction javaLoader(LuanState luan,String modName) throws LuanException {
51 @Override public Object call(LuanState luan,Object[] args) throws LuanException { 51 if( !isLoaded(luan) )
52 if( !isLoaded(luan) ) 52 return null;
53 return LuanFunction.NOTHING; 53 final Static s = JavaLuan.getClass(luan,modName);
54 String modName = (String)args[0]; 54 if( s==null )
55 final Static s = JavaLuan.getClass(luan,modName); 55 return null;
56 if( s==null ) 56 LuanFunction loader = new LuanFunction() {
57 return null; 57 @Override public Object call(LuanState luan,Object[] args) {
58 LuanFunction loader = new LuanFunction() { 58 return s;
59 @Override public Object call(LuanState luan,Object[] args) { 59 }
60 return s; 60 };
61 } 61 return loader;
62 }; 62 }
63 return loader;
64 }
65 };
66 63
67 private static void add(LuanTable t,String method,Class<?>... parameterTypes) { 64 private static void add(LuanTable t,String method,Class<?>... parameterTypes) {
68 try { 65 try {
69 t.put( method, new LuanJavaFunction(JavaLuan.class.getMethod(method,parameterTypes),null) ); 66 t.put( method, new LuanJavaFunction(JavaLuan.class.getMethod(method,parameterTypes),null) );
70 } catch(NoSuchMethodException e) { 67 } catch(NoSuchMethodException e) {