summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2009-04-04 22:54:16 +0000
committerJo-Philipp Wich <jow@openwrt.org>2009-04-04 22:54:16 +0000
commit9835296ba2623b5c87624da3a8ba5f43595297d0 (patch)
tree71ab8933e418c25f4b283ff630d643154c168c21
parentf3deef9ec570d49795346516d34c1b42fb416fde (diff)
trunk: prepare LuCI to handle .lua.gz files
-rw-r--r--libs/cbi/luasrc/cbi.lua9
-rw-r--r--libs/web/luasrc/dispatcher.lua34
-rw-r--r--libs/web/luasrc/i18n.lua4
-rw-r--r--modules/admin-full/luasrc/model/cbi/admin_index/luci.lua6
-rw-r--r--modules/admin-mini/luasrc/model/cbi/mini/luci.lua6
5 files changed, 41 insertions, 18 deletions
diff --git a/libs/cbi/luasrc/cbi.lua b/libs/cbi/luasrc/cbi.lua
index ebca729bb..18d84e52f 100644
--- a/libs/cbi/luasrc/cbi.lua
+++ b/libs/cbi/luasrc/cbi.lua
@@ -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)
diff --git a/libs/web/luasrc/dispatcher.lua b/libs/web/luasrc/dispatcher.lua
index 565e995d1..519473ea4 100644
--- a/libs/web/luasrc/dispatcher.lua
+++ b/libs/web/luasrc/dispatcher.lua
@@ -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
diff --git a/libs/web/luasrc/i18n.lua b/libs/web/luasrc/i18n.lua
index 4b3adf7eb..4db9c3343 100644
--- a/libs/web/luasrc/i18n.lua
+++ b/libs/web/luasrc/i18n.lua
@@ -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])
diff --git a/modules/admin-full/luasrc/model/cbi/admin_index/luci.lua b/modules/admin-full/luasrc/model/cbi/admin_index/luci.lua
index 20d50cceb..6ec13b84e 100644
--- a/modules/admin-full/luasrc/model/cbi/admin_index/luci.lua
+++ b/modules/admin-full/luasrc/model/cbi/admin_index/luci.lua
@@ -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
diff --git a/modules/admin-mini/luasrc/model/cbi/mini/luci.lua b/modules/admin-mini/luasrc/model/cbi/mini/luci.lua
index 9eea8715e..d3afd5537 100644
--- a/modules/admin-mini/luasrc/model/cbi/mini/luci.lua
+++ b/modules/admin-mini/luasrc/model/cbi/mini/luci.lua
@@ -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