Module:Video game dab
Jump to navigation
Jump to search
Documentation for this module may be created at Module:Video game dab/doc
local mArguments --initialize lazily
local mAbout = require('Module:About')
local mHatnote = require('Module:Hatnote')
local p = {}
local s = { --localizable strings
aboutForm = 'the %s video game titled "%s"',
missingYear = 'missing year parameter',
missingTitle = 'missing title parameter',
template = 'Template:Video game dab'
}
function err(message, args)
--DRY error messaging
return mHatnote.makeWikitextError(message, s.template, args.category)
end
function isEmpty(arg) return (not arg) or arg == '' end --DRY emptiness testing
function p.videoGameDab (frame)
-- A passthrough that gets args from the frame and all
mArguments = require('Module:Arguments')
args = mArguments.getArgs(frame)
return p._videoGameDab(args)
end
function p._videoGameDab (args)
--Arguments-based version
--Check for missing arguments
if isEmpty(args.year) then return err(s.missingYear, args) end
if isEmpty(args.title) then return err(s.missingTitle, args) end
--Adjust arguments, starting by inserting constructed argument
local adjustedArgs = {string.format(s.aboutForm, args.year, args.title)}
local max = 1
for k, v in ipairs(args) do
max = k + 1
table.insert(adjustedArgs, max, v)
end
for k, v in pairs(args) do
if type(k) ~= 'number' then adjustedArgs[k] = v end
end
--Avoid printing broken stuff on uneven/nonsequential parameter lists
if max % 2 == 0 then
adjustedArgs[max + 1] = string.format('{{{%s}}}', max)
max = max + 1
end
--add disambiguation message if target exists; otherwise it'll fall back to
--the disambiguation form of {{PAGENAME}}
local disambiguated = mHatnote.disambiguate(args.title)
if mw.title.new(disambiguated).exists then
adjustedArgs[max + 2] = disambiguated
end
return mAbout._about(adjustedArgs)
end
return p