Module:DatasetLoader: Difference between revisions
Appearance
// via Wikitext Extension for VSCode Tag: Reverted |
// via Wikitext Extension for VSCode Tag: Manual revert |
||
| Line 19: | Line 19: | ||
local data | local data | ||
-- Try JsonConfig extension (mw.ext.data.get) | -- Try JsonConfig extension (mw.ext.data.get) | ||
| Line 27: | Line 26: | ||
if success and type(result) == 'table' then | if success and type(result) == 'table' then | ||
data = result | data = result | ||
else | else | ||
-- Fallback to mw.loadData from Data: namespace | -- Fallback to mw.loadData from Data: namespace | ||
| Line 35: | Line 33: | ||
if success and type(result) == 'table' then | if success and type(result) == 'table' then | ||
data = result | data = result | ||
end | end | ||
end | end | ||
| Line 42: | Line 39: | ||
if not data or type(data) ~= 'table' then | if not data or type(data) ~= 'table' then | ||
data = {} | data = {} | ||
end | end | ||
Revision as of 02:23, 2 August 2025
Documentation for this module may be created at Module:DatasetLoader/doc
-- Module:DatasetLoader
-- Central loader for Data: JSON assets via JsonConfig or mw.loadData, cached per render
local DatasetLoader = {}
local cache = {}
-- Retrieve a dataset by name (without extension). Returns a Lua table or {}.
function DatasetLoader.get(name)
-- Return cached if available
if cache[name] then
return cache[name]
end
-- Ensure filename has .json extension
local fullName = name
if not fullName:match('%.%w+$') then
fullName = fullName .. '.json'
end
local data
-- Try JsonConfig extension (mw.ext.data.get)
local success, result = pcall(function()
return mw.ext.data.get(fullName)
end)
if success and type(result) == 'table' then
data = result
else
-- Fallback to mw.loadData from Data: namespace
success, result = pcall(function()
return mw.loadData('Data:' .. fullName)
end)
if success and type(result) == 'table' then
data = result
end
end
-- Default to empty table on any failure
if not data or type(data) ~= 'table' then
data = {}
end
-- Cache and return
cache[name] = data
return data
end
return DatasetLoader