Module:Animated
Jump to navigation
Jump to search
local p = {}
local HtmlBuilder = require('Module:HtmlBuilder') local TextUtil = require('Module:TextUtil') local getArgs = require('Module:Arguments').getArgs
function p.images(frame)
local args = getArgs(frame, {inherited = true}) return p._images(args)
end
function p.grid(frame)
local args = getArgs(frame, {inherited = true}) return p._grid(args)
end
local function createAnimatedDiv(args)
local size = args.size local background = args.background local border = args.border local padding = args.padding
local div = HtmlBuilder.create('div'):addClass('animated') if size then div:css('width', size) div:css('height', size) end if background then div:css('background-color', background) end if border then div:css('border', border) end if padding then div:css('padding', padding) end
return div
end
local function createImageDiv()
return HtmlBuilder.create('div'):addClass('image')
end
function p._images(args)
local size = args.size or args[2] local animatedDiv = createAnimatedDiv({ size = size, background = args.background, border = args.border, padding = args.padding })
local input = args[1] for name in TextUtil.gsplit(input, '%s*,%s*') do local div = createImageDiv() animatedDiv:node(div)
name = TextUtil.trim(name) if name ~= then div:wikitext('[[File:', name) if size then div:wikitext('|', size) end div:wikitext('|link=File:', name, ']]') end end
return tostring(animatedDiv)
end
function p._grid(args)
local animatedDiv = createAnimatedDiv({ size = '32px', background = '#888', border = '1px solid #333', padding = args.padded and '10px' or nil })
local names = args[1] and TextUtil.split(args[1], '%s*,%s*') or {} local counts = args[2] and TextUtil.split(args[2], '%s*,%s*') or {} for i, name in ipairs(names) do local div = createImageDiv() animatedDiv:node(div)
name = TextUtil.trim(name) if name ~= then div:wikitext('32px')
local count = counts[i] if count then count = string.match(count, '^%s*(.-)%s*$')
div:tag('br') div:tag('span') :css('position', 'relative') :css('top', '-11px') :css('left', '25px') :css('font-weight', 'bold') :css('color', 'white') :css('text-shadow', '1px 1px black') :wikitext(count) end end end
return tostring(animatedDiv)
end
return p