Module:GAN link
MyWikiBiz, Author Your Legacy — Monday January 13, 2025
Jump to navigationJump to search-- This module implements {{GAN link}}. local p = {} local function getGANIcon() return require('Module:Icon')._main{'GAN'} end local function makeWikilink(page, display) if display and display ~= page then return string.format('[[%s|%s]]', page, display) else return string.format('[[%s]]', page) end end local function getNominationPage(article, number) return string.format('Talk:%s/GA%d', article, number) end local function makeArticleLink(options) assert(options.article, 'options.article not specified') assert(options.formattedArticle, 'options.formattedArticle not specified') local display if options.isItalic then display = string.format('<i>%s</i>', options.article) elseif options.display then display = options.display else display = options.formattedArticle end return makeWikilink(options.article, display) end local function makeExistingNominationLink(nominationPage) return makeWikilink(nominationPage, 'nom') end local function makeNewNominationLink(nominationPage) local url = mw.uri.fullUrl(nominationPage, { action = 'edit', editintro = 'Template:GAN/editintro', preload = 'Template:GAN/preload', }) return string.format( "'''<span class='plainlinks'>[%s start]</span>'''", tostring(url) ) end local function makeNominationLink(nominationPage) assert(nominationPage, 'no nominationPage argument given to makeNominationLink') local title = mw.title.new(nominationPage) if not title then error(string.format('%s is not a valid title', nominationPage), 2) elseif title.exists then return makeExistingNominationLink(nominationPage) else return makeNewNominationLink(nominationPage) end end function p._main(args) -- Link parameters local formattedArticle = args[1] if not formattedArticle then error('No article specified', 2) end local article = formattedArticle:gsub("'''", ""):gsub("''", "") local display = args[2] -- Number local number if args['#'] then number = tonumber(args['#']) if not number then error("'%s' is not a valid number", args['#']) end else number = 1 end -- Formatting parameters local hasIcon = not not args.icon local isItalic = not not args.i -- Output local ret = {} if hasIcon then ret[#ret + 1] = getGANIcon() end ret[#ret + 1] = makeArticleLink{ article = article, formattedArticle = formattedArticle, display = display, isItalic = isItalic, } ret[#ret + 1] = string.format( '(%s)', makeNominationLink(getNominationPage(article, number)) ) return table.concat(ret, ' ') end function p.main(frame) local args = require('Module:Arguments').getArgs(frame, { wrappers = 'Template:GAN link' }) return p._main(args) end return p