Software /
code /
prosody
Comparison
util/pluginloader.lua @ 3410:32b018eeeb3b
util.pluginloader: Fix loading of plugins, plugin libraries and resources in subfolders (e.g., when loading 'a/b', load 'a/mod_b.lua', and not 'mod_a/b.lua').
author | Waqas Hussain <waqas20@gmail.com> |
---|---|
date | Sat, 31 Jul 2010 12:32:34 +0500 |
parent | 3233:8f78e8164032 |
child | 3411:7170aaeb582d |
comparison
equal
deleted
inserted
replaced
3409:b2a112720cae | 3410:32b018eeeb3b |
---|---|
23 file:close(); | 23 file:close(); |
24 return content, name; | 24 return content, name; |
25 end | 25 end |
26 | 26 |
27 function load_resource(plugin, resource, loader) | 27 function load_resource(plugin, resource, loader) |
28 if not resource then | 28 local path, name = plugin:match("([^/]*)/?(.*)"); |
29 resource = "mod_"..plugin..".lua"; | 29 if name == "" then |
30 if not resource then | |
31 resource = "mod_"..plugin..".lua"; | |
32 end | |
33 loader = loader or load_file; | |
34 | |
35 local content, err = loader(plugin.."/"..resource); | |
36 if not content then content, err = loader(resource); end | |
37 -- TODO add support for packed plugins | |
38 | |
39 return content, err; | |
40 else | |
41 if not resource then | |
42 resource = "mod_"..name..".lua"; | |
43 end | |
44 loader = loader or load_file; | |
45 | |
46 local content, err = loader(plugin.."/"..resource); | |
47 if not content then content, err = loader(path.."/"..resource); end | |
48 -- TODO add support for packed plugins | |
49 | |
50 return content, err; | |
30 end | 51 end |
31 loader = loader or load_file; | |
32 | |
33 local content, err = loader(plugin.."/"..resource); | |
34 if not content then content, err = loader(resource); end | |
35 -- TODO add support for packed plugins | |
36 | |
37 return content, err; | |
38 end | 52 end |
39 | 53 |
40 function load_code(plugin, resource) | 54 function load_code(plugin, resource) |
41 local content, err = load_resource(plugin, resource); | 55 local content, err = load_resource(plugin, resource); |
42 if not content then return content, err; end | 56 if not content then return content, err; end |