Module:Grid/editcopy

From Feed The Beast Wiki
Jump to: navigation, search

Documentation for this module may be created at Module:Grid/editcopy/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 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 mods = require( [[Module:Mods]] )
        local mod = mods.getData(args.mod) or { abbr="", mod="", name="", localised="" }
        
        local link = args.link or ''
        if link:lower() == 'none' then
                link = nil
        else
                if link == '' then
                        link = item
                        if mod.link and ( args.dis or '' ) == '' then
                                link = link .. ' (' .. mod.link .. ')'
                        end
                end
                body:wikitext( '[[', link, require( [[Module:Language]] ).link(), '|' )
        end
        
        local icon = body:tag( 'span' )
        local title = args.title or args.tooltiptext
        if not 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 }
        body:attr{ ['data-minetip-text'] = args.desc }
        
        icon:wikitext( f:callParserFunction( '#icon', { item = item, mod = mod.abbr } ) )
        
        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