Software / code / prosody
Annotate
core/objectmanager.lua @ 1765:79c6b23cb56c
Removed legacy mod_muc (replaced by new one).
| author | Waqas Hussain <waqas20@gmail.com> |
|---|---|
| date | Wed, 09 Sep 2009 19:16:41 +0500 |
| parent | 1522:569d58d21612 |
| child | 2102:b5ee3c416609 |
| child | 2923:b7049746bd29 |
| rev | line source |
|---|---|
|
1522
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
889
diff
changeset
|
1 -- Prosody IM |
|
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
889
diff
changeset
|
2 -- Copyright (C) 2008-2009 Matthew Wild |
|
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
889
diff
changeset
|
3 -- Copyright (C) 2008-2009 Waqas Hussain |
|
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
889
diff
changeset
|
4 -- |
|
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
889
diff
changeset
|
5 -- This project is MIT/X11 licensed. Please see the |
|
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
889
diff
changeset
|
6 -- COPYING file in the source package for more information. |
|
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
889
diff
changeset
|
7 -- |
|
569d58d21612
Add copyright header to those files missing one
Matthew Wild <mwild1@gmail.com>
parents:
889
diff
changeset
|
8 |
| 889 | 9 |
| 10 local new_multitable = require "util.multitable".new; | |
| 11 local t_insert = table.insert; | |
| 12 local t_concat = table.concat; | |
| 13 local tostring = tostring; | |
| 14 local unpack = unpack; | |
| 15 local pairs = pairs; | |
| 16 local error = error; | |
| 17 local type = type; | |
| 18 local _G = _G; | |
| 19 | |
| 20 local data = new_multitable(); | |
| 21 | |
| 22 module "objectmanager" | |
| 23 | |
| 24 function set(...) | |
| 25 return data:set(...); | |
| 26 end | |
| 27 function remove(...) | |
| 28 return data:remove(...); | |
| 29 end | |
| 30 function get(...) | |
| 31 return data:get(...); | |
| 32 end | |
| 33 | |
| 34 local function get_path(path) | |
| 35 if type(path) == "table" then return path; end | |
| 36 local s = {}; | |
| 37 for part in tostring(path):gmatch("[%w_]+") do | |
| 38 t_insert(s, part); | |
| 39 end | |
| 40 return s; | |
| 41 end | |
| 42 | |
| 43 function get_object(path) | |
| 44 path = get_path(path) | |
| 45 return data:get(unpack(path)), path; | |
| 46 end | |
| 47 function set_object(path, object) | |
| 48 path = get_path(path); | |
| 49 data:set(unpack(path), object); | |
| 50 end | |
| 51 | |
| 52 data:set("ls", function(_dir) | |
| 53 local obj, dir = get_object(_dir); | |
| 54 if not obj then error("object not found: " .. t_concat(dir, '/')); end | |
| 55 local r = {}; | |
| 56 if type(obj) == "table" then | |
| 57 for key, val in pairs(obj) do | |
| 58 r[key] = type(val); | |
| 59 end | |
| 60 end | |
| 61 return r; | |
| 62 end); | |
| 63 data:set("get", get_object); | |
| 64 data:set("set", set_object); | |
| 65 data:set("echo", function(...) return {...}; end); | |
| 66 data:set("_G", _G); | |
| 67 | |
| 68 return _M; |