Module:Sprite
Appearance
Documentation for this module may be created at Module:Sprite/doc
local p = {}
local itemData = mw.loadData('Module:Sprite/Item')
local function trim(value)
if value == nil then
return ''
end
return mw.text.trim(tostring(value))
end
local function spriteFor(name, size, link)
local key = trim(name)
local entry = itemData.items[key]
local cell = tonumber(itemData.cell) or 32
local width = tonumber(itemData.width) or cell
local height = tonumber(itemData.height) or cell
local renderedSize = tonumber(size) or cell
local scale = renderedSize / cell
if not entry then
return tostring(mw.html.create('span')
:addClass('sanko-sprite')
:addClass('sanko-sprite-missing')
:attr('data-minetip-title', key ~= '' and key or 'Unknown item')
:css('width', renderedSize .. 'px')
:css('height', renderedSize .. 'px')
:wikitext('?'))
end
local x = math.floor((tonumber(entry.x) or 0) * scale)
local y = math.floor((tonumber(entry.y) or 0) * scale)
local bgWidth = math.floor(width * scale)
local bgHeight = math.floor(height * scale)
local node = mw.html.create('span')
:addClass('sanko-sprite')
:attr('role', 'img')
:attr('aria-label', key)
:attr('data-minetip-title', key)
:css('background-position', '-' .. x .. 'px -' .. y .. 'px')
:css('background-size', bgWidth .. 'px ' .. bgHeight .. 'px')
:css('width', renderedSize .. 'px')
:css('height', renderedSize .. 'px')
if link and link ~= '' then
return tostring(mw.html.create('span')
:addClass('sanko-sprite-link')
:wikitext('[[' .. link .. '|' .. tostring(node) .. ']]'))
end
return tostring(node)
end
function p.item(frame)
local args = frame.args
return spriteFor(args.name or args[1], args.size, args.link)
end
return p