42 lines
859 B
Lua
42 lines
859 B
Lua
|
|
return function(chunk)
|
||
|
|
local addMetaData = AddMetaData
|
||
|
|
|
||
|
|
setmetatable(_G, {
|
||
|
|
__index = function(t, k)
|
||
|
|
local raw = rawget(t, k)
|
||
|
|
|
||
|
|
if raw then
|
||
|
|
return raw
|
||
|
|
end
|
||
|
|
|
||
|
|
return function(value)
|
||
|
|
local newK = k
|
||
|
|
|
||
|
|
if type(value) == 'table' then
|
||
|
|
-- remove any 's' at the end (client_scripts, ...)
|
||
|
|
if k:sub(-1) == 's' then
|
||
|
|
newK = k:sub(1, -2)
|
||
|
|
end
|
||
|
|
|
||
|
|
-- add metadata for each table entry
|
||
|
|
for _, v in ipairs(value) do
|
||
|
|
addMetaData(newK, v)
|
||
|
|
end
|
||
|
|
else
|
||
|
|
addMetaData(k, value)
|
||
|
|
end
|
||
|
|
|
||
|
|
-- for compatibility with legacy things
|
||
|
|
return function(v2)
|
||
|
|
addMetaData(newK .. '_extra', json.encode(v2))
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
})
|
||
|
|
|
||
|
|
-- execute the chunk
|
||
|
|
chunk()
|
||
|
|
|
||
|
|
-- and reset the metatable
|
||
|
|
setmetatable(_G, nil)
|
||
|
|
end
|