Mercurial Hosting > luan
comparison src/luan/lib/init.luan @ 163:3c95a2291d64
make all module fns non-global and make global fns call module fns
git-svn-id: https://luan-java.googlecode.com/svn/trunk@164 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 20 Jun 2014 09:32:36 +0000 |
parents | d310ebf4d6e7 |
children | 78ba371ea1e9 |
comparison
equal
deleted
inserted
replaced
162:01e9707a2fb0 | 163:3c95a2291d64 |
---|---|
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 | |
1 function Package.global_import(name) | 11 function Package.global_import(name) |
2 local mod = require(name) | 12 local mod = require(name) |
3 _G[name] = mod | 13 _G[name] = mod |
4 return mod | 14 return mod |
5 end | 15 end |
6 | 16 |
7 local Basic = Package.global_import("Basic","luan.lib.BasicLib.LOADER") | 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 | |
8 local String = Package.global_import("String","luan.lib.StringLib.LOADER") | 42 local String = Package.global_import("String","luan.lib.StringLib.LOADER") |
9 | 43 |
10 -- improved global_import | 44 -- improved global_import |
11 function Package.global_import(name) | 45 function Package.global_import(name) |
12 local short = name.match("\.([^.]+)$") or name | 46 local short = name.match("\.([^.]+)$") or name |
25 | 59 |
26 | 60 |
27 function Io.print_to(out,...) | 61 function Io.print_to(out,...) |
28 local list = {} | 62 local list = {} |
29 for _,v in Basic.values(...) do | 63 for _,v in Basic.values(...) do |
30 list[#list+1] = _G.to_string(v) | 64 list[#list+1] = to_string(v) |
31 list[#list+1] = '\t' | 65 list[#list+1] = '\t' |
32 end | 66 end |
33 if #list == 0 then | 67 if #list == 0 then |
34 out.write( '\n' ) | 68 out.write( '\n' ) |
35 else | 69 else |
36 list[#list] = '\n' | 70 list[#list] = '\n' |
37 out.write( Table.unpack(list) ) | 71 out.write( Table.unpack(list) ) |
38 end | 72 end |
39 end | 73 end |
40 | 74 |
41 function _G.print(...) | 75 function Basic.print(...) |
42 Io.print_to(Io.stdout,...) | 76 Io.print_to(Io.stdout,...) |
43 end | 77 end |
78 local print = Package.global(Basic,"print") | |
44 | 79 |
45 local Debug = {} | 80 local Debug = {} |
46 Package.loaded.Debug = Debug | 81 Package.loaded.Debug = Debug |
47 _G.Debug = Debug | 82 _G.Debug = Debug |
48 | 83 |
49 function Debug.print_if_something(...) | 84 function Debug.print_if_something(...) |
50 if Table.pack(...).n > 0 then | 85 if Table.pack(...).n > 0 then |
51 _G.print(...) | 86 print(...) |
52 end | 87 end |
53 end | 88 end |
54 | 89 |
55 function Debug.debug(prompt) | 90 function Debug.debug(prompt) |
56 prompt = prompt or "luan_debug> " | 91 prompt = prompt or "luan_debug> " |
58 return Io.read_console_line(prompt) | 93 return Io.read_console_line(prompt) |
59 end | 94 end |
60 local env = {} | 95 local env = {} |
61 for line in console do | 96 for line in console do |
62 try | 97 try |
63 local fn = _G.load(line,"stdin",env,true) | 98 local fn = load(line,"stdin",env,true) |
64 Debug.print_if_something( fn() ) | 99 Debug.print_if_something( fn() ) |
65 catch e do | 100 catch e do |
66 _G.print(e) | 101 print(e) |
67 end | 102 end |
68 end | 103 end |
69 end | 104 end |
70 | 105 |
71 | 106 |
72 -- import modules | 107 -- import modules |
73 _G.Reactionary = require "Reactionary" | 108 Package.global_import("Reactionary") |