Mercurial Hosting > luan
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") |