view core/src/luan/init.luan @ 179:bf9c7111a371

minor git-svn-id: https://luan-java.googlecode.com/svn/trunk@180 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Tue, 24 Jun 2014 00:05:53 +0000
parents 2c08e7e27a70
children cf939124461a
line wrap: on
line source

function Package.global(module,fn_name)
	local function fn(...)
		return module[fn_name](...)
	end
	_G[fn_name] = fn
	return fn
end

local require = Package.global(Package,"require")

import "Basic"; _G.Basic = Basic
import "String"; _G.String = String
import "Table"; _G.Table = Table
import "Io"; _G.Io = Io
import "Math"; _G.Math = Basic
import "Html"; _G.Html = Html
import "Thread"; _G.Thread = Thread
import "Binary"; _G.Binary = Binary


Package.global(Basic,"assert")
Package.global(Basic,"assert_boolean")
Package.global(Basic,"assert_nil")
Package.global(Basic,"assert_number")
Package.global(Basic,"assert_string")
Package.global(Basic,"assert_table")
local do_file = Package.global(Basic,"do_file")
Package.global(Basic,"error")
Package.global(Basic,"get_metatable")
Package.global(Basic,"ipairs")
local load = Package.global(Basic,"load")
Package.global(Basic,"load_file")
Package.global(Basic,"pairs")
Package.global(Basic,"range")
Package.global(Basic,"raw_equal")
Package.global(Basic,"raw_get")
Package.global(Basic,"raw_len")
Package.global(Basic,"raw_set")
Package.global(Basic,"repr")
Package.global(Basic,"set_metatable")
Package.global(Basic,"to_number")
local to_string = Package.global(Basic,"to_string")
Package.global(Basic,"type")

do_file "java:luan/version.luan"



function Io.print_to(out,...)
	local list = {}
	for _,v in Basic.values(...) do
		list[#list+1] = to_string(v)
		list[#list+1] = '\t'
	end
	if #list == 0 then
		out.write( '\n' )
	else
		list[#list] = '\n'
		out.write( Table.unpack(list) )
	end
end

function Basic.print(...)
	Io.print_to(Io.stdout,...)
end
local print = Package.global(Basic,"print")

local Debug = {}
Package.loaded.Debug = Debug
_G.Debug = Debug

function Debug.print_if_something(...)
	if Table.pack(...).n > 0 then
		print(...)
	end
end

function Debug.debug(prompt)
	prompt = prompt or "luan_debug> "
	local function console()
		return Io.read_console_line(prompt)
	end
	local env = {}
	for line in console do
		try
			local fn = load(line,"stdin",env,true)
			Debug.print_if_something( fn() )
		catch e do
			print(e)
		end
	end
end