Module:Portal image banner

local p = {} local randomModule = require('Module:Random')

p.main = function(frame) local parent = frame.getParent(frame) local parentArgs = parent.args local args = cleanupArgs(parentArgs) local output = p._main(args) return frame:preprocess(output) end

function cleanupArgs(argsTable) local cleanArgs = {} for key, val in pairs(argsTable) do		if type(val) == 'string' then val = val:match('^%s*(.-)%s*$') if val ~= '' then cleanArgs[key] = val end else cleanArgs[key] = val end end return cleanArgs end

p._main = function(args) if not args[1] then return error('No page specified', 0) end local lines=makeGalleryLinesTable(args) return makeOutput(lines, args.overflow, args.maxheight, args.mode, args.croptop) end

function makeGalleryLine(file, caption, link) local title = mw.title.new(file, "File" ) local linktext = ( link and '|link=' .. link or '' ) local maxImageWidth = '|800px' return ..caption or ).. maxImageWidth .. linktext ..'' .. (caption and '\n ' .. caption ..' ' or '\n') end

function makeGalleryLineSlideshow(file, caption) local title = mw.title.new(file, "File" ) local captiontext= ' '..(caption or '')..' ' return title.prefixedText .. '|' .. captiontext end

function makeGalleryLinesTable(args) local galleryLinesTable = {} local i = 1 while args[i] do		if not args.mode then table.insert(galleryLinesTable, makeGalleryLine(args[i], args[i+1],args.link)) elseif args.mode == 'slideshow' then table.insert(galleryLinesTable, makeGalleryLineSlideshow(args[i], args[i+1], args.link)) else error('Mode not supported') end i = i + 2 end return galleryLinesTable end

function makeOutput(imageLines, overflow, maxHeight, mode, croptop) local randomiseArgs = {	['t'] = imageLines } local randomisedLines = randomModule.main('array', randomiseArgs ) local output, galleryContent if not mode then galleryContent = table.concat(randomisedLines, '\n',1,1) seperate=mw.text.split(galleryContent,'\n') output = ''..seperate[1]..' '..seperate[2] elseif mode == 'slideshow' then galleryContent = table.concat(randomisedLines, '\n') output=''..''..' ' else error('Mode not supported') end return output end

return p