comparison 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
comparison
equal deleted inserted replaced
170:7c792a328a83 171:3dcb0f9bee82
1 function Package.global(module,fn_name)
2 local function fn(...)
3 return module[fn_name](...)
4 end
5 _G[fn_name] = fn
6 return fn
7 end
8
9 local require = Package.global(Package,"require")
10
11 function Package.global_import(name)
12 local mod = require(name)
13 _G[name] = mod
14 return mod
15 end
16
17 local Basic = Package.global_import("Basic","luan.lib.BasicLib.LOADER")
18 Package.global(Basic,"assert")
19 Package.global(Basic,"assert_boolean")
20 Package.global(Basic,"assert_nil")
21 Package.global(Basic,"assert_number")
22 Package.global(Basic,"assert_string")
23 Package.global(Basic,"assert_table")
24 Package.global(Basic,"do_file")
25 Package.global(Basic,"error")
26 Package.global(Basic,"get_metatable")
27 Package.global(Basic,"ipairs")
28 local load = Package.global(Basic,"load")
29 Package.global(Basic,"load_file")
30 Package.global(Basic,"pairs")
31 Package.global(Basic,"range")
32 Package.global(Basic,"raw_equal")
33 Package.global(Basic,"raw_get")
34 Package.global(Basic,"raw_len")
35 Package.global(Basic,"raw_set")
36 Package.global(Basic,"repr")
37 Package.global(Basic,"set_metatable")
38 Package.global(Basic,"to_number")
39 local to_string = Package.global(Basic,"to_string")
40 Package.global(Basic,"type")
41
42 local String = Package.global_import("String","luan.lib.StringLib.LOADER")
43
44 -- improved global_import
45 function Package.global_import(name)
46 local short = name.match("\.([^.]+)$") or name
47 local mod = require(name)
48 _G[short] = mod
49 return mod
50 end
51
52 local Table = Package.global_import("Table","luan.lib.TableLib.LOADER")
53 local Io = Package.global_import("Io","luan.lib.IoLib.LOADER")
54 Package.global_import("Math","luan.lib.MathLib.LOADER")
55 Package.global_import("Html","luan.lib.HtmlLib.LOADER")
56 Package.global_import("Thread","luan.lib.ThreadLib.LOADER")
57 Package.global_import("Binary","luan.lib.BinaryLib.LOADER")
58
59
60 function Io.print_to(out,...)
61 local list = {}
62 for _,v in Basic.values(...) do
63 list[#list+1] = to_string(v)
64 list[#list+1] = '\t'
65 end
66 if #list == 0 then
67 out.write( '\n' )
68 else
69 list[#list] = '\n'
70 out.write( Table.unpack(list) )
71 end
72 end
73
74 function Basic.print(...)
75 Io.print_to(Io.stdout,...)
76 end
77 local print = Package.global(Basic,"print")
78
79 local Debug = {}
80 Package.loaded.Debug = Debug
81 _G.Debug = Debug
82
83 function Debug.print_if_something(...)
84 if Table.pack(...).n > 0 then
85 print(...)
86 end
87 end
88
89 function Debug.debug(prompt)
90 prompt = prompt or "luan_debug> "
91 local function console()
92 return Io.read_console_line(prompt)
93 end
94 local env = {}
95 for line in console do
96 try
97 local fn = load(line,"stdin",env,true)
98 Debug.print_if_something( fn() )
99 catch e do
100 print(e)
101 end
102 end
103 end
104
105
106 -- import modules
107 Package.global_import("Reactionary")