comparison src/luan/lib/PackageLib.java @ 90:b1e87f1bcc13

make module names uppercase; WebServlet improvements; git-svn-id: https://luan-java.googlecode.com/svn/trunk@91 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Sat, 02 Mar 2013 05:02:56 +0000
parents 6ca02b188dba
children 1f8b6edc2b08
comparison
equal deleted inserted replaced
89:8ef2d6701541 90:b1e87f1bcc13
15 import luan.LuanException; 15 import luan.LuanException;
16 16
17 17
18 public final class PackageLib { 18 public final class PackageLib {
19 19
20 public static final String NAME = "package"; 20 public static final String NAME = "Package";
21 21
22 public static final LuanLoader LOADER = new LuanLoader() { 22 public static final LuanLoader LOADER = new LuanLoader() {
23 @Override protected void load(LuanState luan) { 23 @Override protected void load(LuanState luan) {
24 LuanTable module = new LuanTable(); 24 LuanTable module = new LuanTable();
25 LuanTable global = new LuanTable(); 25 LuanTable global = new LuanTable();
54 } 54 }
55 55
56 public static void require(LuanState luan,String modName,LuanTable env) throws LuanException { 56 public static void require(LuanState luan,String modName,LuanTable env) throws LuanException {
57 LuanTable mod = (LuanTable)luan.loaded().get(modName); 57 LuanTable mod = (LuanTable)luan.loaded().get(modName);
58 if( mod == null ) { 58 if( mod == null ) {
59 LuanTable searchers = (LuanTable)luan.get("package.searchers"); 59 LuanTable searchers = (LuanTable)luan.get("Package.searchers");
60 if( searchers == null ) 60 if( searchers == null )
61 searchers = new LuanTable(Collections.<Object>singletonList(preloadSearcher)); 61 searchers = new LuanTable(Collections.<Object>singletonList(preloadSearcher));
62 for( Object s : searchers.asList() ) { 62 for( Object s : searchers.asList() ) {
63 LuanFunction searcher = (LuanFunction)s; 63 LuanFunction searcher = (LuanFunction)s;
64 Object[] a = luan.JAVA.call(searcher,"<searcher>",modName); 64 Object[] a = luan.JAVA.call(searcher,"<searcher>",modName);
101 }; 101 };
102 102
103 public static final LuanFunction fileSearcher = new LuanFunction() { 103 public static final LuanFunction fileSearcher = new LuanFunction() {
104 public Object[] call(LuanState luan,Object[] args) throws LuanException { 104 public Object[] call(LuanState luan,Object[] args) throws LuanException {
105 String modName = (String)args[0]; 105 String modName = (String)args[0];
106 String path = (String)luan.get("package.path"); 106 String path = (String)luan.get("Package.path");
107 if( path==null ) 107 if( path==null )
108 return LuanFunction.EMPTY; 108 return LuanFunction.EMPTY;
109 String file = search_path(modName,path); 109 String file = search_path(modName,path);
110 return file==null ? LuanFunction.EMPTY : new Object[]{new FileLoader(file)}; 110 return file==null ? LuanFunction.EMPTY : new Object[]{new FileLoader(file)};
111 } 111 }
141 }; 141 };
142 142
143 public static final LuanFunction javaFileSearcher = new LuanFunction() { 143 public static final LuanFunction javaFileSearcher = new LuanFunction() {
144 public Object[] call(LuanState luan,Object[] args) throws LuanException { 144 public Object[] call(LuanState luan,Object[] args) throws LuanException {
145 String modName = (String)args[0]; 145 String modName = (String)args[0];
146 String path = (String)luan.get("package.jpath"); 146 String path = (String)luan.get("Package.jpath");
147 if( path==null ) 147 if( path==null )
148 return LuanFunction.EMPTY; 148 return LuanFunction.EMPTY;
149 for( String s : path.split(";") ) { 149 for( String s : path.split(";") ) {
150 String file = s.replaceAll("\\?",modName); 150 String file = s.replaceAll("\\?",modName);
151 URL url = ClassLoader.getSystemResource(file); 151 URL url = ClassLoader.getSystemResource(file);