diff src/luan/lib/BasicLib.java @ 21:c93d8c781853

add functions git-svn-id: https://luan-java.googlecode.com/svn/trunk@22 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Tue, 04 Dec 2012 09:16:03 +0000
parents a7c13c6017f7
children 9de9be530625
line wrap: on
line diff
--- a/src/luan/lib/BasicLib.java	Sun Dec 02 10:51:18 2012 +0000
+++ b/src/luan/lib/BasicLib.java	Tue Dec 04 09:16:03 2012 +0000
@@ -19,7 +19,7 @@
 import luan.LuaException;
 import luan.interp.LuaParser;
 import luan.interp.Expressions;
-import luan.interp.Stmt;
+import luan.interp.Chunk;
 
 
 public class BasicLib {
@@ -28,8 +28,8 @@
 		LuaTable t = lua.env();
 		add( t, "print", new Object[0].getClass() );
 		add( t, "type", Object.class );
-		add( t, "load", String.class );
-		add( t, "loadFile", String.class );
+		add( t, "load", LuaState.class, String.class );
+		add( t, "loadFile", LuaState.class, String.class );
 		add( t, "pairs", LuaTable.class );
 		add( t, "ipairs", LuaTable.class );
 	}
@@ -55,7 +55,7 @@
 		return Lua.type(obj);
 	}
 
-	public static LuaFunction load(String ld) throws LuaException {
+	public static LuaFunction load(LuaState lua,String ld) throws LuaException {
 		LuaParser parser = Parboiled.createParser(LuaParser.class);
 		ParsingResult<?> result = new ReportingParseRunner(parser.Target()).run(ld);
 //		ParsingResult<?> result = new TracingParseRunner(parser.Target()).run(ld);
@@ -70,13 +70,8 @@
 				}
 			};
 		}
-		final Stmt stmt = (Stmt)resultValue;
-		return new LuaFunction() {
-			public Object[] call(LuaState lua,Object... args) throws LuaException {
-				stmt.eval(lua);
-				return LuaFunction.EMPTY_RTN;
-			}
-		};
+		Chunk chunk = (Chunk)resultValue;
+		return chunk.newClosure(lua);
 	}
 
 	public static String readFile(String fileName) throws IOException {
@@ -90,8 +85,8 @@
 		return sb.toString();
 	}
 
-	public static LuaFunction loadFile(String fileName) throws LuaException,IOException {
-		return load(readFile(fileName));
+	public static LuaFunction loadFile(LuaState lua,String fileName) throws LuaException,IOException {
+		return load(lua,readFile(fileName));
 	}
 
 	private static class TableIter {