Diferencia entre revisiones de «Módulo:Crafting»
Sin resumen de edición |
Sin resumen de edición |
||
| Línea 55: | Línea 55: | ||
header = table.concat( { | header = table.concat( { | ||
' {| class="wikitable ' .. class .. '"', | ' {| class="wikitable ' .. class .. '"', | ||
'! ' .. | '! ' .. Nombre .. 'Ingredientes !! ' .. recipeClass .. ' Entrada » Salida' .. Descripcion, | ||
'|-' | '|-' | ||
}, '\n' ) | }, '\n' ) | ||
Revisión del 20:19 23 abr 2014
local p = {} function p.table( f ) local args = f if f == mw.getCurrentFrame() then args = require( 'Module:ProcessArgs' ).merge() else f = mw.getCurrentFrame() end local grid = require( 'Module:Grid' )
-- Start table when appropriate local multirow = f:callParserFunction( '#dplvar', 'multirow' ) if multirow ~= '1' then multirow = nil end local head = args.head or if multirow then head = elseif head ~= then multirow = 1 f:callParserFunction( '#dplvar:set', 'multirow', '1' ) else head = 1 end
-- End table when appropriate local foot = args.foot or if multirow then if foot ~= then multirow = nil f:callParserFunction( '#dplvar:set', 'multirow', '0' ) end else foot = 1 end
local header = if head ~= then local name = local description = if args.showname == '1' or multirow and args.showname ~= '0' then name = 'Name !! ' f:callParserFunction( '#dplvar:set', 'craftingname', '1' ) end if args.showdescription == '1' then description = ' !! class="unsortable" | Description' f:callParserFunction( '#dplvar:set', 'craftingdescription', '1' ) end local class = args.class or local recipeClass = if multirow then class = 'sortable collapsible ' .. class recipeClass = 'class="unsortable collapse-button" |' end header = table.concat( { ' {| class="wikitable ' .. class .. '"', '! ' .. Nombre .. 'Ingredientes !! ' .. recipeClass .. ' Entrada » Salida' .. Descripcion, '|-' }, '\n' ) end
-- Name cell local nameCell if f:callParserFunction( '#dplvar', 'craftingname' ) == '1' then if args.name or ~= then nameCell = args.name else local names = {} local links = {} for v in mw.text.gsplit( args.Output or , '%s*;%s*' ) do parts = grid.getParts( v, args.Mod ) parts.mod = parts.mod or if not names[parts.mod .. ':' .. parts.name] then local link = if parts.mod ~= then link = 'Mods/' .. parts.mod .. '/' .. parts.name .. '|' end
if parts.name:find( '^Any ' ) then table.insert( links, 'Any ' .. link .. parts.name:sub( 4 ) .. '' ) else table.insert( links, '' .. link .. parts.name .. '' ) end names[parts.mod .. ':' .. parts.name] = 1 end end
nameCell = table.concat( links, ' o
' )
end
end
if nameCell and args.upcoming then
nameCell = nameCell .. '
(' .. args.upcoming .. ')'
end
-- Create ingredient list local ingredients = {} local ingredientKeys = {} local animatedIngredients = {} local animatedKeys = {} for k, v in pairs( args ) do v = mw.text.trim( v ) if v ~= and tostring( k ):find( '^%u?%d%d?$' ) then if v:find( ';' ) then table.insert( animatedKeys, v ) else local parts = grid.getParts( v, args.Mod ) parts.mod = parts.mod or local fullName = parts.mod .. ':' .. parts.name if not ingredients[fullName] then table.insert( ingredientKeys, fullName ) ingredients[fullName] = { mod = parts.mod, name = parts.name } end end end end for k, v in ipairs( animatedKeys ) do local frames = mw.text.split( v, '%s*;%s*' ) local length = #frames for k2, v2 in ipairs( frames ) do local parts = grid.getParts( v2, args.Mod ) parts.mod = parts.mod or local fullName = parts.mod .. ':' .. parts.name if v2 ~= and not ingredients[fullName] and not animatedIngredients[fullName] then table.insert( ingredientKeys, fullName ) animatedIngredients[fullName] = { mod = parts.mod, name = parts.name, final = k2 == length } end end end
-- Ingredients cell local ingredientsCell if args.ingredients or ~= then ingredientsCell = args.ingredients else ingredientsCell = {} for k, v in ipairs( ingredientKeys ) do local link = local separator = ' +' if k == #ingredientKeys then separator = elseif animatedIngredients[v] and not animatedIngredients[v].final then separator = ' o' end local mod = ( ingredients[v] or animatedIngredients[v] ).mod local name = ( ingredients[v] or animatedIngredients[v] ).name if mod ~= then link = 'Mods/'.. mod .. '/' .. name .. '|' end
if name:find( '^Any ' ) then table.insert( ingredientsCell, 'Any ' .. link .. name:sub( 5 ) .. '' .. separator ) else table.insert( ingredientsCell, '' .. link .. name .. '' .. separator ) end end
ingredientsCell = table.concat( ingredientsCell, '
\n' )
end
-- Automatic shapeless positioning local newArgs = {} if args[1] then newArgs.shapeless = 1 if args[7] then newArgs.A1 = args[1] newArgs.B1 = args[2] newArgs.C1 = args[3] newArgs.A2 = args[4] newArgs.B2 = args[5] newArgs.C2 = args[6] if args[8] then -- ◼◼◼ ◼◼◼ -- ◼◼◼ O ◼◼◼ -- ◼◼◼ ◼◼◻ newArgs.A3 = args[7] newArgs.B3 = args[8] newArgs.C3 = args[9] else -- ◼◼◼ -- ◼◼◼ -- ◻◼◻ newArgs.B3 = args[7] end elseif args[2] then newArgs.A2 = args[1] newArgs.B2 = args[2] if args[5] then -- ◻◻◻ ◻◻◻ -- ◼◼◼ O ◼◼◼ -- ◼◼◼ ◼◼◻ newArgs.C2 = args[3] newArgs.A3 = args[4] newArgs.B3 = args[5] newArgs.C3 = args[6] elseif args[4] then -- ◻◻◻ -- ◼◼◻ -- ◼◼◻ newArgs.A3 = args[3] newArgs.B3 = args[4] else -- ◻◻◻ ◻◻◻ -- ◼◼◻ O ◼◼◻ -- ◻◼◻ ◻◻◻ newArgs.B3 = args[3] end else -- ◻◻◻ -- ◻◼◻ -- ◻◻◻ newArgs.B2 = args[1] end else newArgs.A1 = args.A1 newArgs.B1 = args.B1 newArgs.C1 = args.C1 newArgs.A2 = args.A2 newArgs.B2 = args.B2 newArgs.C2 = args.C2 newArgs.A3 = args.A3 newArgs.B3 = args.B3 newArgs.C3 = args.C3 end
-- Any other args we want to pass along newArgs.Mod = args.Mod newArgs.Output = args.Output newArgs.Otitle = args.Otitle
-- Recipe cell local recipeCell = grid.craftingTable( newArgs )
local row = { ingredientsCell, recipeCell } if nameCell then table.insert( row, 1, nameCell ) end if ( args.description or ) ~= and f:callParserFunction( '#dplvar', 'craftingdescription' ) == '1' then table.insert( row, args.description ) end row = table.concat( row, '\n|\n' )
if nameCell then row = '!\n' .. row else row = '|\n' .. row end
local footer = if foot ~= then footer = '|}' f:callParserFunction( '#dplvar:set', 'craftingname', '0', 'craftingdescription', '0' ) end
-- Create ingredient categories for DPL local title = mw.title.getCurrentTitle() local categories = if args.nocat ~= '1' and title.namespace == 0 and not title.isSubpage then categories = {}
if args.upcoming then table.insert( categories, ) end
if args.ignoreusage ~= '1' then for k, v in ipairs( ingredientKeys ) do v = v:sub( 2 ) if not v:find( ':' ) then if v == 'Sticky Piston' then v = 'Piston' elseif v == 'Red Mushroom' or v == 'Brown Mushroom' then v = 'Mushroom' elseif v == 'Red Sand' then v = 'Sand' elseif v == 'Charcoal' then v = 'Coal' elseif v:find( ' Wood$' ) then v = 'Wood' elseif v:find( ' Wood Planks$' ) then v = 'Wood Planks' elseif v:find( ' Stained Glass$' ) then v = 'Stained Glass' elseif v:find( ' Stained Glass Pane$' ) then v = 'Stained Glass Pane' elseif v:find( ' Wool$' ) then v = 'Wool' elseif v:find( ' Sandstone$' ) then v = 'Sandstone' elseif v:find( ' Stairs$' ) then v = 'Stairs' elseif v:find( ' Slab$' ) then v = 'Slab' elseif v:find( ' Pressure Plate$' ) then v = 'Pressure Plate' elseif v:find( ' Tulip$' ) then v = 'Tulip' elseif v:find( ' Firework Star$' ) then v = 'Firework Star' elseif v:find( ' Stone Bricks$' ) then v = 'Stone Bricks' elseif v:find( ' Quartz Block$' ) then v = 'Block of Quartz' elseif v:find( ' Andesite$' ) then v = 'Andesite' elseif v:find( ' Diorite$' ) then v = 'Diorite' elseif v:find( ' Granite$' ) then v = 'Granite' end
table.insert( categories, ) end end end
categories = table.concat( categories, ) end
if args.debug == '1' then
return '
' .. header .. '\n' .. row .. '\n|-\n' .. footer .. categories .. '
'
else return header .. '\n' .. row .. '\n|-\n' .. footer .. categories end end return p