![]() |
VOOZH | about |
This module implements {{SpriteGrid}}.
localp={} localtext=require([[Module:Text]]) localsprite=require([[Module:SpriteFile]]) functionp.grid(f) localargs=f iff==mw.getCurrentFrame()then args=f:getParent().args end localrows={} localscale=args.scale localsize=16*(scaleor1) localcategories={} localkeys=args.keysorargs localbaseSheet=args.sheetor'BlockSprite' fork,vinipairs(args)do localrow={} forv2intext.gsplit(v:gsub('^%s-\n+',''):gsub('\n+%s-$',''),'')do localspriteName=keys[v2] iftext.trim(v2)==''orspriteName=='air'then row[#row+1]=' style="width:'..size..'px;height:'..size..'px" | ' else localsheet=baseSheet localcss locallink=nil ifspriteNamethen -- Custom link locallinkPart=text.split(spriteName,'?',true) spriteName=linkPart[1] link=linkPart[2]-- Might be nil -- Rotation localspritePart=text.split(spriteName,'-rot') spriteName=spritePart[1] ifspritePart[2]then css='transform:rotate('..spritePart[2]..'deg)' end -- Alternate sheet ifspriteName:find(':')then localsheetSplit=text.split(spriteName,':') sheet=sheetSplit[1] spriteName=sheetSplit[2] end end localincludeLink=true ifspriteNameandspriteName:sub(1,1)=='+'then includeLink=false spriteName=spriteName:sub(2) end localimage,spriteCat localspriteData={ name=sheet, spriteName, link=link, scale=scale, notext=1, nocat=args.nocat, css=css } ifincludeLinkthen image,spriteCat=sprite.link(spriteData) else image,spriteCat=sprite.sprite(spriteData) end row[#row+1]=image categories[#categories+1]=spriteCat end end rows[k]=table.concat(row,' || ') end localspacing=tonumber(args.spacingor'')or0 return'{| cellspacing="'..spacing..'" cellpadding="0" role="presentation" style="margin:0; line-height:0"\n| '.. table.concat(rows,'\n|-\n| ').. '\n|}'..table.concat(categories) end returnp