trunk: prepare LuCI to handle .lua.gz files
authorJo-Philipp Wich <jow@openwrt.org>
Sat, 4 Apr 2009 22:54:16 +0000 (22:54 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sat, 4 Apr 2009 22:54:16 +0000 (22:54 +0000)
libs/cbi/luasrc/cbi.lua
libs/web/luasrc/dispatcher.lua
libs/web/luasrc/i18n.lua
modules/admin-full/luasrc/model/cbi/admin_index/luci.lua
modules/admin-mini/luasrc/model/cbi/mini/luci.lua

index ebca729..18d84e5 100644 (file)
@@ -59,12 +59,15 @@ function load(cbimap, ...)
        local upldir = "/lib/uci/upload/"
        local cbidir = luci.util.libpath() .. "/model/cbi/"
 
-       assert(luci.fs.stat(cbimap) or luci.fs.stat(cbidir..cbimap..".lua"),
-        "Model not found!")
+       assert(luci.fs.stat(cbimap) or
+               luci.fs.stat(cbidir..cbimap..".lua") or
+               luci.fs.stat(cbidir..cbimap..".lua.gz"),
+                       "Model not found!")
 
        local func, err = loadfile(cbimap)
        if not func then
-               func, err = loadfile(cbidir..cbimap..".lua")
+               func, err = loadfile(cbidir..cbimap..".lua") or
+                       loadfile(cbidir..cbimap..".lua.gz")
        end
        assert(func, err)
 
index 565e995..519473e 100644 (file)
@@ -355,7 +355,7 @@ end
 --- Generate the dispatching index using the best possible strategy.
 function createindex()
        local path = luci.util.libpath() .. "/controller/"
-       local suff = ".lua"
+       local suff = { ".lua", ".lua.gz" }
 
        if luci.util.copcall(require, "luci.fastindex") then
                createindex_fastindex(path, suff)
@@ -366,14 +366,16 @@ end
 
 --- Generate the dispatching index using the fastindex C-indexer.
 -- @param path         Controller base directory
--- @param suffix       Controller file suffix
-function createindex_fastindex(path, suffix)
+-- @param suffixes     Controller file suffixes
+function createindex_fastindex(path, suffixes)
        index = {}
 
        if not fi then
                fi = luci.fastindex.new("index")
-               fi.add(path .. "*" .. suffix)
-               fi.add(path .. "*/*" .. suffix)
+               for _, suffix in ipairs(suffixes) do
+                       fi.add(path .. "*" .. suffix)
+                       fi.add(path .. "*/*" .. suffix)
+               end
        end
        fi.scan()
 
@@ -384,12 +386,16 @@ end
 
 --- Generate the dispatching index using the native file-cache based strategy.
 -- @param path         Controller base directory
--- @param suffix       Controller file suffix
-function createindex_plain(path, suffix)
-       local controllers = util.combine(
-               luci.fs.glob(path .. "*" .. suffix) or {},
-               luci.fs.glob(path .. "*/*" .. suffix) or {}
-       )
+-- @param suffixes     Controller file suffixes
+function createindex_plain(path, suffixes)
+       local controllers = { }
+       for _, suffix in ipairs(suffixes) do
+               util.combine(
+                       controllers,
+                       luci.fs.glob(path .. "*" .. suffix) or {},
+                       luci.fs.glob(path .. "*/*" .. suffix) or {}
+               )
+       end
 
        if indexcache then
                local cachedate = fs.mtime(indexcache)
@@ -416,7 +422,11 @@ function createindex_plain(path, suffix)
        index = {}
 
        for i,c in ipairs(controllers) do
-               local module = "luci.controller." .. c:sub(#path+1, #c-#suffix):gsub("/", ".")
+               local module = "luci.controller." .. c:sub(#path+1, #c):gsub("/", ".")
+               for _, suffix in ipairs(suffixes) do
+                       module = module:gsub(suffix.."$", "")
+               end
+
                local mod = require(module)
                local idx = mod.index
 
index 4b3adf7..4db9c33 100644 (file)
@@ -47,7 +47,9 @@ end
 function load(file, lang, force)
        lang = lang and lang:gsub("_", "-") or ""
        if force or not loaded[lang] or not loaded[lang][file] then
-               local f = loadfile(i18ndir .. file .. "." .. lang .. ".lua")
+               local f = loadfile(i18ndir .. file .. "." .. lang .. ".lua") or
+                       loadfile(i18ndir .. file .. "." .. lang .. ".lua.gz")
+
                if f then
                        table[lang] = table[lang] or {}
                        setfenv(f, table[lang])
index 20d50cc..6ec13b8 100644 (file)
@@ -29,7 +29,11 @@ l:value("auto")
 
 local i18ndir = luci.i18n.i18ndir .. "default."
 for k, v in pairs(luci.config.languages) do
-       if k:sub(1, 1) ~= "." and luci.fs.access(i18ndir .. k:gsub("_", "-") .. ".lua") then
+       local file = i18ndir .. k:gsub("_", "-")
+       if k:sub(1, 1) ~= "." and (
+               luci.fs.access(file .. ".lua") or
+               luci.fs.access(file .. ".lua.gz")
+       ) then
                l:value(k, v)
        end
 end
index 9eea871..d3afd55 100644 (file)
@@ -29,7 +29,11 @@ l:value("auto")
 
 local i18ndir = luci.i18n.i18ndir .. "default."
 for k, v in pairs(luci.config.languages) do
-       if k:sub(1, 1) ~= "." and luci.fs.access(i18ndir .. k:gsub("_", "-") .. ".lua") then
+       local file = i18ndir .. k:gsub("_", "-")
+       if k:sub(1, 1) ~= "." and (
+               luci.fs.access(file .. ".lua") or
+               luci.fs.access(file .. ".lua.gz")
+       ) then
                l:value(k, v)
        end
 end