Editing Module:Navbox
The edit can be undone.
Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
| Latest revision | Your text | ||
| Line 163: | Line 163: | ||
return h.render(dataTree) | return h.render(dataTree) | ||
end | end | ||
end | |||
-- Expand automatic group markers | |||
function h.expandAutomaticGroups(args) | |||
local PREFIX = '__NAVBOX_AUTO_GROUPS__' | |||
local value = args.automatic_groups | |||
if type(value) ~= 'string' or value:sub(1, #PREFIX) ~= PREFIX then | |||
return args | |||
end | |||
local payload = value:sub(#PREFIX + 1) | |||
local ok, data = pcall(mw.text.jsonDecode, payload) | |||
if not ok or type(data) ~= 'table' or type(data.rows) ~= 'table' then | |||
error('Invalid Navbox Automatic Groups data.') | |||
end | |||
local index = tonumber(data.start) or 1 | |||
if index < 1 or index % 1 ~= 0 then | |||
error('Invalid Navbox Automatic Groups start index.') | |||
end | |||
for _, row in ipairs(data.rows) do | |||
local groupKey = index .. ':group' | |||
local listKey = index .. ':list' | |||
if args[groupKey] ~= nil or args[listKey] ~= nil then | |||
error('Navbox Automatic Groups overlaps an existing row at index ' .. index .. '.') | |||
end | |||
if row.group ~= nil and row.group ~= '' then | |||
args[groupKey] = row.group | |||
end | |||
if row.list ~= nil then | |||
args[listKey] = row.list | |||
end | |||
index = index + 1 | |||
end | |||
args.automatic_groups = nil | |||
return args | |||
end | end | ||
| Line 296: | Line 343: | ||
-- parse arguments, convert them to structured data tree | -- parse arguments, convert them to structured data tree | ||
function h.buildDataTree(args) | function h.buildDataTree(args) | ||
-- parse args to a tree | -- parse args to a tree | ||