Difference between revisions of "Module:Grid"

From Industrial-Craft-Wiki
Jump to navigation Jump to search
m (Hah, best work around ever)
m (Second issue maybe?)
Line 11: Line 11:
     if tooltip ~= nil then
     if tooltip ~= nil then
     local leng = string.match(item, ',%s*(%d+)') or 5
     local leng = string.match(item, ',%s*(%d+)') or 5
     iName = string.sub(iName, string.len(tooltip)+1, -(string.len(leng)+1))
     iName = string.sub(iName, string.len(tooltip)+1, -(string.len(leng)))
     end
     end
   
   

Revision as of 14:21, 8 March 2015

Template-info.png Documentation

This module is a WIP (work in progress), but is still being called by {{Grid/Crafting Table}}, so any changes should be tested to avoid inconvenience.

Related Links[edit]

The above documentation is transcluded from Module:Grid/doc. (edit | history)


local p = {}
-- Individual cell
function p.grid(item)
 
    if (item == nil) then return { } end
 
    local iLink = nil
    local iNum= math.floor( string.match(item, ',%s*(%d+)' ) or 0 )
    local iName = string.sub(string.match(item, '.+,') or item..' ', 1, -2)
    local tooltip = string.match(item, '%[.+%]')
    if tooltip ~= nil then
    	local leng = string.match(item, ',%s*(%d+)') or 5
    	iName = string.sub(iName, string.len(tooltip)+1, -(string.len(leng)))
    end
 
    local hasPercentage = string.match(item, "[%%]")
 
    if(iName:find("~")) then
        iLink = string.match(iName, '~([%a%s-]+)')
        iName = string.match(iName, '([%a%s-]+)~')
    end
 
    paras = { }
 
    paras["name"] = iName
 
    if(iLink ~= nil) then paras["link"]=iLink end
    if(iNum > 1 or hasPercentage) then paras["number"]=iNum end
    if(hasPercentage) then paras["percent"]="x" end
    if(tooltip ~= nil) then paras["tooltip"]=string.sub(tooltip,2,-2) end
    
    return paras
 
end


-- Gets a cell or animated cell
function p.cell(f, item) 
 
    if (item == nil) then return '' end
 
    if (item:find(';')) then
        local text = '<div class=\"animated-grids\">'
 
 
        for frame in mw.text.gsplit( item, '%s*;%s*' ) do
 
            text = text .. '<span class=\"animated-grid\">'
            if frame == 'Blank' or frame == 'blank' then
               text = text .. ''
            else
               text = text .. f:expandTemplate{ title='Grid', args = p.grid(frame) }
            end
            text = text .. '</span>'
 
        end
 
        text = text .. '</div>'
 
        return text
    end
 
    return f:expandTemplate{ title='Grid', args = p.grid(item) }
end


function p.liquid(f, item) 
 
    if (item == nil) then return '' end
 
    local text = ''
 
    for i=1,3,1 do
        text = text .. f:expandTemplate{ title='Grid', args = p.grid(item) }
    end
 
    return text
end
 
 
function p.gc ( f )

   local args = f

   if f == mw.getCurrentFrame() then
      args = f:getParent().args
   end

   return p.cell(f, (args[1] or args.name))
end


function p.craftingTable( f )
 
    local args = f
 
	if f == mw.getCurrentFrame() then
		args = f:getParent().args
	end
 
    local gridArgs = { 
 
        A1=p.cell(f, args.A1),
        A2=p.cell(f, args.A2),
        A3=p.cell(f, args.A3),
 
        B1=p.cell(f, args.B1),
        B2=p.cell(f, args.B2),
        B3=p.cell(f, args.B3),
 
        C1=p.cell(f, args.C1),
        C2=p.cell(f, args.C2),
        C3=p.cell(f, args.C3),
 
        Output=p.cell(f, args.Output),
 
        Break=args.Break
    }

   return f:expandTemplate{ title='Crafting', args= gridArgs}
 
end

--[=[
function p.carpenter( f )
 
    local args = f
 
    if f == mw.getCurrentFrame() then
		args = f:getParent().args
	end
 
    local gridArgs = { 
 
        Liquid=p.liquid(f, args.Liquid),
 
        A1=p.cell(f, args.A1),
        A2=p.cell(f, args.A2),
        A3=p.cell(f, args.A3),
 
        B1=p.cell(f, args.B1),
        B2=p.cell(f, args.B2),
        B3=p.cell(f, args.B3),
 
        C1=p.cell(f, args.C1),
        C2=p.cell(f, args.C2),
        C3=p.cell(f, args.C3),
 
        Output=p.cell(f, args.Output),
 
    }
 
   return f:expandTemplate{ title='CraftingCarpenter', args= gridArgs}
 
end
 
function p.centrifuge( f )
 
    local args = f
 
    if f == mw.getCurrentFrame() then
    	args = f:getParent().args
	end
 
    local gridArgs = { 
 
        Input=p.cell(f, args.Input),
 
        Output1=p.cell(f, args.Output1),
        Output2=p.cell(f, args.Output2),
        Output3=p.cell(f, args.Output3)
    }
 
   return f:expandTemplate{ title='CraftingCentrifuge', args= gridArgs}
 
end
 --]=]

function p.furnace( f )
 
    local args = f
 
    if f == mw.getCurrentFrame() then
		args = f:getParent().args
	end
 
    local gridArgs = { 
        Input=p.cell(f, (args.Input or args.Top)),
        Fuel=p.cell(f, (args.Fuel or args.Bottom)),
        Output=p.cell(f, args.Output),
        Break=args.Break
    }
 
   return f:expandTemplate{ title='Crafting/Furnace', args= gridArgs}
 
end
 
 
return p