Mercurial > prosody-hg
comparison plugins/mod_console.lua @ 3407:15f633285755
mod_console: Override dofile() in the console environment (this lets print() print to the console session for example).
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Mon, 26 Jul 2010 01:52:04 +0500 |
| parents | 33c81ee280e3 |
| children | 2d1a5d8893c2 |
comparison
equal
deleted
inserted
replaced
| 3406:748246005893 | 3407:15f633285755 |
|---|---|
| 25 local default_env_mt = { __index = def_env }; | 25 local default_env_mt = { __index = def_env }; |
| 26 | 26 |
| 27 prosody.console = { commands = commands, env = def_env }; | 27 prosody.console = { commands = commands, env = def_env }; |
| 28 | 28 |
| 29 local function redirect_output(_G, session) | 29 local function redirect_output(_G, session) |
| 30 return setmetatable({ print = session.print }, { __index = function (t, k) return rawget(_G, k); end, __newindex = function (t, k, v) rawset(_G, k, v); end }); | 30 local env = setmetatable({ print = session.print }, { __index = function (t, k) return rawget(_G, k); end, __newindex = function (t, k, v) rawset(_G, k, v); end }); |
| 31 env.dofile = function(name) | |
| 32 local f, err = loadfile(name); | |
| 33 if not f then return f, err; end | |
| 34 return setfenv(f, env)(); | |
| 35 end; | |
| 36 return env; | |
| 31 end | 37 end |
| 32 | 38 |
| 33 console = {}; | 39 console = {}; |
| 34 | 40 |
| 35 function console:new_session(conn) | 41 function console:new_session(conn) |
