Feed The Beast Wiki

Follow the Feed The Beast Wiki on Discord or Mastodon!

READ MORE

Feed The Beast Wiki
Register
m (Protected "Module:Grid": High traffic page ([Edit=Staff and administrators] (indefinite) [Move=Staff and administrators] (indefinite)))
m (cleanup because it looked ugly)
(22 intermediate revisions by 5 users not shown)
Line 10: Line 10:
 
 
 
local item = args[1]
 
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 }
 
local body = mw.html.create( 'span' ):addClass( 'grid' ):css{ ['vertical-align'] = args.align }
Line 27: Line 32:
 
end
 
end
 
 
local mods = require( [[Module:Mods]] )
+
local mod = require([[Module:Mods]]).getData(string.upper(args.mod or '')) or { abbr="", mod="", name="", localized="" }
local mod = mods.getData(string.upper(args.mod or '')) or { abbr="", mod="", name="", localised="" }
 
 
 
 
local link = args.link or ''
 
local link = args.link or ''
Line 36: Line 40:
 
if link == '' then
 
if link == '' then
 
link = item
 
link = item
if mod.link and ( args.dis or '' ) == '' then
+
-- If args.dis is set, this means the user doesn't want to disambiguate,
  +
-- so we want to invert the input!
  +
local doDisambiguation = not args.dis
  +
if mod.link and doDisambiguation then
 
link = link .. ' (' .. mod.link .. ')'
 
link = link .. ' (' .. mod.link .. ')'
 
end
 
end
Line 43: Line 50:
 
end
 
end
 
 
local icon = body:tag( 'span' )
+
local icon = body:tag( 'span' ):css{ ['padding'] = args.padding }
local title = args.title or args.tooltiptext
+
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 not title then
 
title = item
+
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
 
elseif title:lower() == 'none' then
 
title = ''
 
title = ''
Line 58: Line 69:
 
end
 
end
 
( link and icon or body ):attr{ title = title }
 
( link and icon or body ):attr{ title = title }
body:attr{ ['data-minetip-text'] = args.desc }
+
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})}
 
 
icon:wikitext( f:callParserFunction( '#icon', { "", item = item, mod = mod.abbr } ) )
+
icon:wikitext( f:callParserFunction( '#icon', { "", item = item, mod = mod.abbr, size = args.size or 32 } ) )
 
 
 
local num = tonumber( args[2] or 1 )
 
local num = tonumber( args[2] or 1 )

Revision as of 23:56, 8 November 2020

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, this means the user doesn't want to disambiguate,
                        -- so we want to invert the input!
                        local doDisambiguation = not args.dis
                        if mod.link and doDisambiguation then
                                link = link .. ' (' .. mod.link .. ')'
                        end
                end
                body:wikitext( '[[', link, require( [[Module:Language]] ).link(), '|' )
        end
        
        local icon = body:tag( '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})}
        
        icon:wikitext( f:callParserFunction( '#icon', { "", item = item, mod = mod.abbr, size = args.size or 32 } ) )
        
        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
        
        if link then
                body:wikitext( ']]' )
        end
        
        return tostring( body )
end
return p