Module:Shortcut: Difference between revisions

calculate the number of list items based on a table of list items, rather than doing it ad hoc from the shortcuts plus whatever else we want to add
(use wikilinks rather than URLs, as it would change the redlink behaviour, and that's better done after it is discussed)
(calculate the number of list items based on a table of list items, rather than doing it ad hoc from the shortcuts plus whatever else we want to add)
Line 15: Line 15:
frame = frame or mw.getCurrentFrame()
frame = frame or mw.getCurrentFrame()
cfg = cfg or mw.loadData(CONFIG_MODULE)
cfg = cfg or mw.loadData(CONFIG_MODULE)
local nShortcuts = #shortcuts
-- Check that we have something to display
if nShortcuts < 1 and not options.msg then
return nil
end


-- Validate shortcuts
-- Validate shortcuts
Line 30: Line 24:
), 2)
), 2)
end
end
end
-- Make the list items. These are the shortcuts plus any extra lines such
-- as options.msg.
local listItems = {}
for i, shortcut in ipairs(shortcuts) do
listItems[i] = string.format('[[%s]]', shortcut)
end
table.insert(listItems, options.msg)
local nListItems = #listItems
-- Exit if we have nothing to display
if nListItems < 1 then
return nil
end
end


Line 49: Line 57:
local shortcutHeading = mw.message.newRawMessage(
local shortcutHeading = mw.message.newRawMessage(
cfg['shortcut-heading'],
cfg['shortcut-heading'],
nShortcuts
nListItems
):plain()
):plain()
shortcutHeading = frame:preprocess(shortcutHeading)
shortcutHeading = frame:preprocess(shortcutHeading)
Line 72: Line 80:
:newline()
:newline()
:tag('ul')
:tag('ul')
for i, shortcut in ipairs(shortcuts) do
for i, item in ipairs(listItems) do
shortcutList:tag('li'):wikitext(string.format(
shortcutList:tag('li'):wikitext(item)
'[[%s]]',
shortcut
))
end
if options.msg then
shortcutList:tag('li'):wikitext(options.msg)
end
end