Module:DYK nompage links/sandbox

local p = {} local horizontal = require('Module:List').horizontal

local function makeWikitextError(msg) return string.format(' Error: %s ', msg) end

local function makeFullUrl(page, query, display) local url = mw.uri.fullUrl(page, query) if not url then url = makeWikitextError(string.format( '"%s" is not a valid page name', tostring(page) ))	end return string.format(		'[%s %s]',		tostring(url),		display	) end

local function make_nomination_link(nominationPage) local currentPage = mw.title.getCurrentTitle.prefixedText local dykSubpage = 'Template:Did you know nominations/' .. nominationPage if currentPage == dykSubpage then return string.format(			'Back to T:TDYK',			nominationPage		) else return makeFullUrl(			dykSubpage,			{action = 'edit'},			'View'		) .. string.format(" or comment",dykSubpage) end end

function p._main(nominationPage, historyPages) -- Deal with bad input. if not nominationPage then return makeWikitextError('no nomination page specified') end if not historyPages or not historyPages[1] then return makeWikitextError('no articles specified') end

-- Find out whether we are dealing with multiple history pages. local isMulti = #historyPages > 1

local nominationLink = make_nomination_link(nominationPage)

if isMulti then local list_args = { class = 'inline', }		for _, page in ipairs(historyPages) do			table.insert(list_args, makeFullUrl( page, {action = 'history'}, page ))		end local multi_root = mw.html.create('div') multi_root:addClass('dyk-nompage-links plainlinks') :wikitext(string.format('( %s )', nominationLink)) local list_root = mw.html.create('div') list_root:wikitext(string.format( '( Article history links: %s )', horizontal(list_args) ))		return tostring(multi_root:node(list_root)) else local historyLink = makeFullUrl(			historyPages[1],			{action = 'history'},			'Article history'		) local single_root = mw.html.create('div') single_root:addClass('dyk-nompage-links plainlinks') :wikitext(string.format( '( %s )', horizontal({					class = 'inline',					nominationLink,					historyLink				}) ))		return tostring(single_root) end end

function p.main(frame) local args = require('Module:Arguments').getArgs(frame, {		wrappers = 'Template:DYK nompage links'	}) local nominationPage = args.nompage local historyPages = require('Module:TableTools').compressSparseArray(args) return p._main(nominationPage, historyPages) end

return p