Jump to content

Module:Template test case: Difference between revisions

when doing Template class memoization, return wrapper functions for the values rather than the values themselves
(memoize expensive method calls in the Template objects)
(when doing Template class memoization, return wrapper functions for the values rather than the values themselves)
Line 40: Line 40:


-- Memoize expensive method calls
-- Memoize expensive method calls
local memoizedValues = {}
local memoFuncs = {}
return setmetatable(obj, {
return setmetatable(obj, {
__index = function (t, key)
__index = function (t, key)
if Template.memoizedMethods[key] then
if Template.memoizedMethods[key] then
local val = memoizedValues[key]
local func = memoFuncs[key]
if val then
if not func then
return val
local val = Template[key](t)
else
func = function () return val end
val = Template[key](t)
memoFuncs[key] = func
memoizedValues[key] = val
return val
end
end
return func
else
else
return Template[key]
return Template[key]
Cookies help us deliver our services. By using our services, you agree to our use of cookies.