Diferencia entre revisiones de «Módulo:Crafting»

Xstela (discusión | contribs.)
Sin resumen de edición
Xstela (discusión | contribs.)
Sin resumen de edición
Línea 40: Línea 40:
local description = ''
local description = ''
if args.showname == '1' or multirow and args.showname ~= '0' then
if args.showname == '1' or multirow and args.showname ~= '0' then
name = 'Nombre !! '
name = 'Name !! '
f:callParserFunction( '#dplvar:set', 'craftingname', '1' )
f:callParserFunction( '#dplvar:set', 'craftingname', '1' )
end
end
if args.showdescription == '1' then
if args.showdescription == '1' then
description = ' !! class="unsortable" | Descripcion'
description = ' !! class="unsortable" | Description'
f:callParserFunction( '#dplvar:set', 'craftingdescription', '1' )
f:callParserFunction( '#dplvar:set', 'craftingdescription', '1' )
end
end
Línea 55: Línea 55:
header = table.concat( {
header = table.concat( {
' {| class="wikitable ' .. class .. '"',
' {| class="wikitable ' .. class .. '"',
'! ' .. name .. 'Ingredientes !! ' .. recipeClass .. ' Entrada » Salida' .. description,
'! ' .. name .. 'Ingredients !! ' .. recipeClass .. ' [[Crafting]] recipe' .. description,
'|-'
'|-'
}, '\n' )
}, '\n' )
Línea 86: Línea 86:
end
end
nameCell = table.concat( links, '&nbsp;o<br>' )
nameCell = table.concat( links, '&nbsp;or<br>' )
end
end
end
end
Línea 141: Línea 141:
separator = ''
separator = ''
elseif animatedIngredients[v] and not animatedIngredients[v].final then
elseif animatedIngredients[v] and not animatedIngredients[v].final then
separator = '&nbsp;o'
separator = '&nbsp;or'
end
end
local mod = ( ingredients[v] or animatedIngredients[v] ).mod
local mod = ( ingredients[v] or animatedIngredients[v] ).mod
Línea 172: Línea 172:
if args[8] then
if args[8] then
-- ◼◼◼      ◼◼◼
-- ◼◼◼      ◼◼◼
-- ◼◼◼  O ◼◼◼
-- ◼◼◼  OR ◼◼◼
-- ◼◼◼      ◼◼◻
-- ◼◼◼      ◼◼◻
newArgs.A3 = args[7]
newArgs.A3 = args[7]
Línea 188: Línea 188:
if args[5] then
if args[5] then
-- ◻◻◻      ◻◻◻
-- ◻◻◻      ◻◻◻
-- ◼◼◼  O ◼◼◼
-- ◼◼◼  OR ◼◼◼
-- ◼◼◼      ◼◼◻
-- ◼◼◼      ◼◼◻
newArgs.C2 = args[3]
newArgs.C2 = args[3]
Línea 202: Línea 202:
else
else
-- ◻◻◻      ◻◻◻
-- ◻◻◻      ◻◻◻
-- ◼◼◻  O ◼◼◻
-- ◼◼◻  OR ◼◼◻
-- ◻◼◻      ◻◻◻
-- ◻◼◻      ◻◻◻
newArgs.B3 = args[3]
newArgs.B3 = args[3]
Línea 260: Línea 260:
if args.upcoming then
if args.upcoming then
table.insert( categories, '[[Category:Proximamente]]' )
table.insert( categories, '[[Category:Upcoming]]' )
end
end
Línea 267: Línea 267:
v = v:sub( 2 )
v = v:sub( 2 )
if not v:find( ':' ) then
if not v:find( ':' ) then
if v == 'Sticky Piston' then v = 'Piston'
if v == 'Any Dye' then
elseif v == 'Red Mushroom' or v == 'Brown Mushroom' then v = 'Mushroom'
for _, dye in ipairs( {
elseif v == 'Red Sand' then v = 'Sand'
'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Dandelion Yellow', 'Lime Dye',
elseif v == 'Charcoal' then v = 'Coal'
'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye',
elseif v:find( ' Wood$' ) then v = 'Wood'
'Lapis Lazuli', 'Cocoa Beans', 'Cactus Green', 'Rose Red', 'Ink Sac'
elseif v:find( ' Wood Planks$' ) then v = 'Wood Planks'
} ) do
elseif v:find( ' Stained Glass$' ) then v = 'Stained Glass'
table.insert( categories, '[[Category:Recipe using ' .. dye .. ']]' )
elseif v:find( ' Stained Glass Pane$' ) then v = 'Stained Glass Pane'
end
elseif v:find( ' Wool$' ) then v = 'Wool'
else
elseif v:find( ' Sandstone$' ) then v = 'Sandstone'
if v == 'Sticky Piston' then v = 'Piston'
elseif v:find( ' Stairs$' ) then v = 'Stairs'
elseif v == 'Red Mushroom' or v == 'Brown Mushroom' then v = 'Mushroom'
elseif v:find( ' Slab$' ) then v = 'Slab'
elseif v == 'Red Sand' then v = 'Sand'
elseif v:find( ' Pressure Plate$' ) then v = 'Pressure Plate'
elseif v == 'Charcoal' then v = 'Coal'
elseif v:find( ' Tulip$' ) then v = 'Tulip'
elseif v:find( ' Wood$' ) then v = 'Wood'
elseif v:find( ' Firework Star$' ) then v = 'Firework Star'
elseif v:find( ' Wood Planks$' ) then v = 'Wood Planks'
elseif v:find( ' Stone Bricks$' ) then v = 'Stone Bricks'
elseif v:find( ' Stained Glass$' ) then v = 'Stained Glass'
elseif v:find( ' Quartz Block$' ) then v = 'Block of Quartz'
elseif v:find( ' Stained Glass Pane$' ) then v = 'Stained Glass Pane'
elseif v:find( ' Andesite$' ) then v = 'Andesite'
elseif v:find( ' Wool$' ) then v = 'Wool'
elseif v:find( ' Diorite$' ) then v = 'Diorite'
elseif v:find( ' Sandstone$' ) then v = 'Sandstone'
elseif v:find( ' Granite$' ) then v = 'Granite'
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, '[[Category:Recipe using ' .. v .. ']]' )
end
end
table.insert( categories, '[[Category:Recetas que usan ' .. v .. ']]' )
end
end
end
end

Revisión del 20:54 26 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 .. '"', '! ' .. name .. 'Ingredients !! ' .. recipeClass .. ' Crafting recipe' .. description, '|-' }, '\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, ' or
' ) 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 = ' or' 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 -- ◼◼◼ ◼◼◼ -- ◼◼◼ OR ◼◼◼ -- ◼◼◼ ◼◼◻ 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 -- ◻◻◻ ◻◻◻ -- ◼◼◼ OR ◼◼◼ -- ◼◼◼ ◼◼◻ 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 -- ◻◻◻ ◻◻◻ -- ◼◼◻ OR ◼◼◻ -- ◻◼◻ ◻◻◻ 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 == 'Any Dye' then for _, dye in ipairs( { 'Orange Dye', 'Magenta Dye', 'Light Blue Dye', 'Dandelion Yellow', 'Lime Dye', 'Pink Dye', 'Gray Dye', 'Light Gray Dye', 'Cyan Dye', 'Purple Dye', 'Lapis Lazuli', 'Cocoa Beans', 'Cactus Green', 'Rose Red', 'Ink Sac' } ) do table.insert( categories, ) end else 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 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