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