view src/luan/CmdLine.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 409871b33355
line wrap: on
line source

package luan;

import java.util.Scanner;
import luan.lib.BasicLib;


public class CmdLine {

	public static void main(String[] args) throws Exception {
		LuaState lua = new LuaState();
		BasicLib.register(lua);
		boolean interactive = false;
		int i = 0;
		while( i < args.length ) {
			String arg = args[i];
			if( !arg.startsWith("-") )
				break;
			if( arg.equals("-i") ) {
				interactive = true;
			} else {
				throw new RuntimeException("invalid option: "+arg);
			}
			i++;
		}
		if( i == args.length ) {
			interactive = true;
		} else {
			String file = args[i++];
			try {
				LuaFunction fn = BasicLib.loadFile(lua,file);
				fn.call(lua);
			} catch(LuaException e) {
//				System.out.println(e.getMessage());
				e.printStackTrace();
				return;
			}
		}
		if( interactive )
			interactive(lua);
	}

	static void interactive(LuaState lua) {
		while( true ) {
			System.out.print("> ");
			String input = new Scanner(System.in).nextLine();
			try {
				LuaFunction fn = BasicLib.load(lua,input);
				Object[] rtn = fn.call(lua);
				if( rtn.length > 0 )
					BasicLib.print(rtn);
			} catch(LuaException e) {
				System.out.println(e.getMessage());
			}
		}
	}
}