Heavy memory/performance optimizations #1
authorSteven Barth <steven@midlink.org>
Fri, 5 Sep 2008 18:34:46 +0000 (18:34 +0000)
committerSteven Barth <steven@midlink.org>
Fri, 5 Sep 2008 18:34:46 +0000 (18:34 +0000)
libs/cbi/luasrc/cbi.lua

index 3a6c6d7aa36f73e6b76f9a2c6888a0093e8e49ab..ac8d8b5b3ac33c20840b641afb338f726e0f0da2 100644 (file)
@@ -47,7 +47,7 @@ REMOVE_PREFIX = "cbi.rts."
 -- Loads a CBI map from given file, creating an environment and returns it
 function load(cbimap, ...)
        require("luci.fs")
-       require("luci.i18n")
+       local i18n = require "luci.i18n"
        require("luci.config")
        require("luci.util")
 
@@ -57,11 +57,16 @@ function load(cbimap, ...)
 
        luci.i18n.loadc("cbi")
 
-       luci.util.resfenv(func)
-       luci.util.updfenv(func, luci.cbi)
-       luci.util.extfenv(func, "translate", luci.i18n.translate)
-       luci.util.extfenv(func, "translatef", luci.i18n.translatef)
-       luci.util.extfenv(func, "arg", {...})
+       local env = {
+               translate=i18n.translate,
+               translatef=i18n.translatef,
+               arg={...}
+       }
+       
+       setfenv(func, setmetatable(env, {__index =
+               function(tbl, key)
+                       return rawget(tbl, key) or _M[key] or _G[key]
+               end}))
 
        local maps = {func()}