Documentation for this module may be created at Module:Grid/doc
local p = {}
p.cell = function( f )
local args = f.args or f
if f == mw.getCurrentFrame() and args[1] == nil then
args = f:getParent().args
else
f = mw.getCurrentFrame()
end
args = require( [[Module:ProcessArgs]] ).norm( args )
local item = args[1]
local renamed = require( [[Module:Grid/Renames]] )[item]
if renamed and ((args.mod or '') == 'V' or (args.mod or '') == '') then
args[1] = renamed
return [=[[[Category:Pages using a renamed tile]]]=] .. p.cell(args)
end
local body = mw.html.create( 'span' ):addClass( 'grid' ):css{ ['vertical-align'] = args.align }
if args['no-bg'] then
body:addClass( 'grid-plain' )
end
if args.class then
body:addClass( args.class )
end
if args.style then
body:cssText( args.style )
end
if not item then
body:tag( 'br' )
return tostring( body )
end
local mod = require([[Module:Mods]]).getData(string.upper(args.mod or ''))
local mod_abbr = mod.abbr or args.mod
local link = args.link or ''
if link:lower() == 'none' then
link = nil
else
if link == '' then
link = item
-- If args.dis is set, we only disambiguate if it equals exactly
-- 'true' or '1'. Otherwise, disambiguate by default.
local doDisambiguation
if args.dis then
doDisambiguation = args.dis == 'true' or args.dis == '1'
else
doDisambiguation = true
end
if mod.link and doDisambiguation then
link = link .. ' (' .. mod.link .. ')'
end
end
link = link .. require( [[Module:Language]] ).link{}
if not args.animated then
body:wikitext( '[[', link, '|' )
end
end
local icon = mw.html.create( 'span' ):css{ ['padding'] = args.padding }
local lang = require([[Module:Utility_functions]]).pageSuffix():sub(2)
local title = args.title or args.tooltiptext or f:callParserFunction("#iconloc", {item, mod_abbr, "name", lang})
if args.appendtitle then
title = f:callParserFunction("#iconloc", {item, mod_abbr, "name", lang}) .. args.title or args.tooltiptext or ''
end
if not title or title == '' then
title = item
elseif title:lower() == 'none' then
title = ''
elseif title:match( '&' ) then
body:attr( 'data-minetip-title', title )
title = title:gsub( '&[0-9a-fk-or]', '' )
if title == '' then
title = item
end
end
( link and icon or body ):attr{ title = title }
if args['ore-dict-name'] and mod.localized then
local orenamefixed = args['ore-dict-name']:gsub("/", "\\/")
if not args.desc or args.desc == '' then
args.desc = '&7' .. orenamefixed .. '/&o&9' .. mod.localized
else
args.desc = args.desc .. '/&7' .. orenamefixed .. '/&o&9' .. mod.localized
end
end
body:attr{ ['data-minetip-text'] = args.desc or f:callParserFunction("#iconloc", {item, mod_abbr, "description", lang})}
local size = args.size or 32
if args.animated then
local animated
if args.animated == 'true' or args.animated == '1' then
-- Use a default format that outputs in the form 'Icon (mod abbrv) (item name)'
animated = 'Icon ' .. mod_abbr .. ' ' .. item
else
animated = args.animated
end
icon:wikitext( '[[File:', args.animated, '.gif|', size, 'x', size, 'px|center' )
if link then
icon:wikitext( '|link=', link )
end
icon:wikitext( ']]' )
else
icon:wikitext( f:callParserFunction( '#icon', { "", item = item, mod = mod_abbr, size = size } ) )
end
local num = tonumber( args[2] or 1 )
if num and num > 1 and num < 1000 then
local number = icon:tag( 'span' ):addClass( 'grid-number' ):wikitext( num )
if args.numstyle then
number:cssText( args.numstyle )
end
end
body:node( icon )
if link and not args.animated then
body:wikitext( ']]' )
end
return tostring( body )
end
return p