Module:Animated
From Minetest
local p = {}
local HtmlBuilder = require('Module:HtmlBuilder')
local TextUtil = require('Module:TextUtil')
local makeInvokeFunc = require('Module:Arguments').makeInvokeFunc
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('[[File:', name, '.png|32px|link=', name, ']]')
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
p.images = makeInvokeFunc(p._images, {inherited = true})
p.grid = makeInvokeFunc(p._grid, {inherited = true})
return p