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;
+			}
+		};
+	}
+
 }