Difference between revisions of "Module:Grid"

From Feed The Beast Wiki
Jump to: navigation, search
(Attempt to center animated gifs and add ".gif" by default)
m
Line 89: Line 89:
 
local size = args.size or 32
 
local size = args.size or 32
 
if args.animated then
 
if args.animated then
icon:wikitext( '[[File:', args.animated, '|', size, 'x', size, 'px|center' )
+
icon:wikitext( '[[File:', args.animated, '.gif|', size, 'x', size, 'px|center' )
 
if link then
 
if link then
icon:wikitext( '|link=', link, '.gif' )
+
icon:wikitext( '|link=', link )
 
end
 
end
 
icon:wikitext( ']]' )
 
icon:wikitext( ']]' )

Revision as of 05:02, 23 January 2021

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 '')) or { abbr="", mod="", name="", localized="" }
        
        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
        	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