Mercurial Hosting > luan
diff core/src/luan/init.luan @ 171:3dcb0f9bee82
add core component
git-svn-id: https://luan-java.googlecode.com/svn/trunk@172 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Sun, 22 Jun 2014 05:41:22 +0000 |
parents | src/luan/init.luan@4c0131c2b650 |
children | 4edbf3204ca6 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/src/luan/init.luan Sun Jun 22 05:41:22 2014 +0000 @@ -0,0 +1,107 @@ +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") + +function Package.global_import(name) + local mod = require(name) + _G[name] = mod + return mod +end + +local Basic = Package.global_import("Basic","luan.lib.BasicLib.LOADER") +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") +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") + +local String = Package.global_import("String","luan.lib.StringLib.LOADER") + +-- improved global_import +function Package.global_import(name) + local short = name.match("\.([^.]+)$") or name + local mod = require(name) + _G[short] = mod + return mod +end + +local Table = Package.global_import("Table","luan.lib.TableLib.LOADER") +local Io = Package.global_import("Io","luan.lib.IoLib.LOADER") +Package.global_import("Math","luan.lib.MathLib.LOADER") +Package.global_import("Html","luan.lib.HtmlLib.LOADER") +Package.global_import("Thread","luan.lib.ThreadLib.LOADER") +Package.global_import("Binary","luan.lib.BinaryLib.LOADER") + + +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 + + +-- import modules +Package.global_import("Reactionary")