Mercurial Hosting > luan
diff src/luan/lib/BasicLib.java @ 116:1ff1c32417eb
more IoLib work and added init.luan
git-svn-id: https://luan-java.googlecode.com/svn/trunk@117 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 30 May 2014 04:55:37 +0000 |
parents | eacf6ce1b47d |
children | 735708619119 |
line wrap: on
line diff
--- a/src/luan/lib/BasicLib.java Thu May 29 09:26:44 2014 +0000 +++ b/src/luan/lib/BasicLib.java Fri May 30 04:55:37 2014 +0000 @@ -41,7 +41,7 @@ add( global, "load", LuanState.class, String.class, String.class, Boolean.class ); add( global, "load_file", LuanState.class, String.class ); add( global, "pairs", LuanState.class, LuanTable.class ); - add( global, "print", LuanState.class, new Object[0].getClass() ); +// add( global, "print", LuanState.class, new Object[0].getClass() ); add( global, "range", LuanState.class, Double.TYPE, Double.TYPE, Double.class ); add( global, "raw_equal", Object.class, Object.class ); add( global, "raw_get", LuanTable.class, Object.class ); @@ -53,6 +53,7 @@ add( global, "to_string", LuanState.class, Object.class ); add( global, "type", Object.class ); global.put( "_VERSION", Luan.version ); + add( module, "values", new Object[0].getClass() ); } catch(NoSuchMethodException e) { throw new RuntimeException(e); } @@ -63,10 +64,10 @@ private static void add(LuanTable t,String method,Class<?>... parameterTypes) throws NoSuchMethodException { t.put( method, new LuanJavaFunction(BasicLib.class.getMethod(method,parameterTypes),null) ); } - +/* public static void print(LuanState luan,Object... args) throws LuanException { LuanFunction write = (LuanFunction)luan.get("Io.stdout.write"); - List list = new ArrayList(); + List<Object> list = new ArrayList<Object>(); for( int i=0; i<args.length; i++ ) { if( i > 0 ) list.add("\t"); @@ -75,7 +76,7 @@ list.add("\n"); write.call(luan,list.toArray()); } - +*/ public static String type(Object obj) { return Luan.type(obj); } @@ -88,16 +89,34 @@ } - public static LuanFunction load_file(LuanState luan,String fileName) throws LuanException, IOException { - String src = fileName==null ? Utils.readAll(new InputStreamReader(System.in)) : Utils.read(new File(fileName)); - return load(luan,src,fileName,false); + public static LuanFunction load_file(LuanState luan,String fileName) throws LuanException { + try { + String src = fileName==null ? Utils.readAll(new InputStreamReader(System.in)) : Utils.read(new File(fileName)); + return load(luan,src,fileName,false); + } catch(IOException e) { + throw luan.JAVA.exception(e); + } } - public static Object do_file(LuanState luan,String fileName) throws LuanException, IOException { + public static LuanFunction load_java_resource(LuanState luan,String path) throws LuanException { + try { + String src = new IoLib.LuanUrl(IoLib.java_resource_to_url(path)).read_text(); + return load(luan,src,path,false); + } catch(IOException e) { + throw luan.JAVA.exception(e); + } + } + + public static Object do_file(LuanState luan,String fileName) throws LuanException { LuanFunction fn = load_file(luan,fileName); return luan.JAVA.call(fn,null); } + public static Object do_java_resource(LuanState luan,String path) throws LuanException { + LuanFunction fn = load_java_resource(luan,path); + return luan.JAVA.call(fn,null); + } + private static LuanFunction pairs(final Iterator<Map.Entry<Object,Object>> iter) { return new LuanFunction() { @Override public Object[] call(LuanState luan,Object[] args) { @@ -219,4 +238,14 @@ }; } + public static LuanFunction values(final Object... args) throws LuanException { + return new LuanFunction() { + int i = 0; + + @Override public Object call(LuanState luan,Object[] unused) { + return i < args.length ? args[i++] : null; + } + }; + } + }