Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/windirstat.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOliver Schneider <oliver@assarbad.net>2012-11-08 06:29:12 +0400
committerOliver Schneider <oliver@assarbad.net>2012-11-08 06:29:12 +0400
commit18dedb3e652f900fdefe7fd02cabfd44c32b21f1 (patch)
treedd5407fe6061311bc0fcbb370b0367fa42c2a192 /sandbox
parent4767aea30f1383e4dac752e3629fceac4f233255 (diff)
- Still experimenting with loaders
Diffstat (limited to 'sandbox')
-rw-r--r--sandbox/luaconf/lua_conf.cpp3
-rw-r--r--sandbox/luaconf/lua_conf.lua32
2 files changed, 34 insertions, 1 deletions
diff --git a/sandbox/luaconf/lua_conf.cpp b/sandbox/luaconf/lua_conf.cpp
index 12e1ad9..a385a14 100644
--- a/sandbox/luaconf/lua_conf.cpp
+++ b/sandbox/luaconf/lua_conf.cpp
@@ -83,6 +83,7 @@ int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
end\n\
\n\
dumptable('package', package)\n\
+ dumptable('package.preload', package.preload)\n\
dumptable('package.loaded', package.loaded)\n\
dumptable('package.loaders', package.loaders)\n\
dumptable('package.loaded._G', package.loaded._G)\n\
@@ -91,7 +92,7 @@ int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
print('package.loaded._G = ', package.loaded._G)\n\
";
dostring(L, _dostring);
- fprintf(stderr, "---------------------------\n");
+ fprintf(stderr, "--------------------------\n");
int ret = luaL_dofile(L, "..\\lua_conf.lua");
if(ret)
{
diff --git a/sandbox/luaconf/lua_conf.lua b/sandbox/luaconf/lua_conf.lua
index 8da9cfd..c35e3cd 100644
--- a/sandbox/luaconf/lua_conf.lua
+++ b/sandbox/luaconf/lua_conf.lua
@@ -11,3 +11,35 @@ if os.iswow64() then
else
print "I'm NOT a WOW64 process"
end
+
+print "-----------------"
+
+function test_loader(...)
+ print(...)
+ local mod = {}
+ package.loaded[...] = mod
+ return mod
+end
+
+
+package.preload["mytest"] = test_loader
+require "mytest"
+
+for k,v in pairs(package.loaded)do print(k,v) end
+--[[
+local function load(modulename)
+ local errmsg = ""
+ -- Find source
+ local modulepath = string.gsub(modulename, "%.", "/")
+ for path in string.gmatch(package.path, "([^;]+)") do
+ local filename = string.gsub(path, "%?", modulepath)
+ local file = io.open(filename, "rb")
+ if file then
+ -- Compile and return the module
+ return assert(loadstring(assert(file:read("*a")), filename))
+ end
+ errmsg = errmsg.."\n\tno file '"..filename.."' (checked with custom loader)"
+ end
+ return errmsg
+end
+]] \ No newline at end of file