Software /
code /
prosody
Comparison
core/modulemanager.lua @ 3620:bfc47564aaef
modulemanager: Inside plugins, have global _M as a reference to the module's environment
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 13 Nov 2010 04:09:14 +0000 |
parent | 3608:ae0f83feaff4 |
child | 3623:6f4db418a9cc |
comparison
equal
deleted
inserted
replaced
3619:291ae816d800 | 3620:bfc47564aaef |
---|---|
115 local _log = logger.init(host..":"..module_name); | 115 local _log = logger.init(host..":"..module_name); |
116 local api_instance = setmetatable({ name = module_name, host = host, config = config, _log = _log, log = function (self, ...) return _log(...); end }, { __index = api }); | 116 local api_instance = setmetatable({ name = module_name, host = host, config = config, _log = _log, log = function (self, ...) return _log(...); end }, { __index = api }); |
117 | 117 |
118 local pluginenv = setmetatable({ module = api_instance }, { __index = _G }); | 118 local pluginenv = setmetatable({ module = api_instance }, { __index = _G }); |
119 api_instance.environment = pluginenv; | 119 api_instance.environment = pluginenv; |
120 pluginenv._M = pluginenv; | |
120 | 121 |
121 setfenv(mod, pluginenv); | 122 setfenv(mod, pluginenv); |
122 hosts[host].modules = modulemap[host]; | 123 hosts[host].modules = modulemap[host]; |
123 modulemap[host][module_name] = pluginenv; | 124 modulemap[host][module_name] = pluginenv; |
124 | 125 |