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