Difference between revisions of "Module:Animated"
Jump to navigation
Jump to search
m |
(FnControlOption changed the content model of the page Module:Animated from "plain text" to "Scribunto") Tag: content model change |
||
(9 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
local HtmlBuilder = require('Module:HtmlBuilder') | local HtmlBuilder = require('Module:HtmlBuilder') | ||
− | local | + | local TextUtil = require('Module:TextUtil') |
+ | local makeInvokeFunc = require('Module:Arguments').makeInvokeFunc | ||
− | function | + | local function createAnimatedDiv(args) |
− | local 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 | end | ||
− | function | + | local function createImageDiv() |
− | + | return HtmlBuilder.create('div'):addClass('image') | |
− | |||
end | end | ||
Line 24: | Line 43: | ||
local input = args[1] | local input = args[1] | ||
− | for name in | + | for name in TextUtil.gsplit(input, '%s*,%s*') do |
local div = createImageDiv() | local div = createImageDiv() | ||
animatedDiv:node(div) | animatedDiv:node(div) | ||
− | name = | + | name = TextUtil.trim(name) |
if name ~= '' then | if name ~= '' then | ||
div:wikitext('[[File:', name) | div:wikitext('[[File:', name) | ||
Line 49: | Line 68: | ||
}) | }) | ||
− | local names = | + | 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 | for i, name in ipairs(names) do | ||
local div = createImageDiv() | local div = createImageDiv() | ||
animatedDiv:node(div) | animatedDiv:node(div) | ||
− | name = | + | name = TextUtil.trim(name) |
if name ~= '' then | if name ~= '' then | ||
div:wikitext('[[File:', name, '.png|32px|link=', name, ']]') | div:wikitext('[[File:', name, '.png|32px|link=', name, ']]') | ||
Line 69: | Line 82: | ||
count = string.match(count, '^%s*(.-)%s*$') | count = string.match(count, '^%s*(.-)%s*$') | ||
− | div: | + | 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 | end | ||
Line 85: | Line 98: | ||
end | end | ||
− | + | p.images = makeInvokeFunc(p._images, {inherited = true}) | |
− | + | p.grid = makeInvokeFunc(p._grid, {inherited = true}) | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
return p | return p |
Latest revision as of 17:36, 7 June 2022
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