Jump to: navigation, search

Module:Smelting: Difference between revisions

m (1 revision)
 
(Updated to new version)
 
Line 1: Line 1:
local p = {}
local p = {}
local i18n = {
categoryUpcoming = 'Category:Upcoming',
defaultFuel = 'Any fuel',
moduleArgs = [[Module:ProcessArgs]],
moduleRecipe = [[Module:Recipe table]],
type = 'Smelting',
}
p.i18n = i18n
local recipeTable = require( i18n.moduleRecipe ).table
function p.table( f )
function p.table( f )
local args = f
local args = f
if f == mw.getCurrentFrame() then
if f == mw.getCurrentFrame() then
args = f:getParent().args
args = require( i18n.moduleArgs ).merge( true )
else
else
f = mw.getCurrentFrame()
f = mw.getCurrentFrame()
end
end
local grid = require( 'Module:Grid' )
-- Start table when appropriate
args.Input = args[1]
local multirow = f:callParserFunction( '#dplvar', 'multirow' )
args.Output = args[2]
if multirow ~= '1' then
args.Fuel = args.fuel or i18n.defaultFuel
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', 'smeltingname', '1' )
end
if args.showdescription == '1' then
description = ' !! class="unsortable" | Description'
f:callParserFunction( '#dplvar:set', 'smeltingdescription', '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 .. ' [[Smelting]] recipe' .. description,
'|-'
}, '\n' )
end
local input = mw.text.trim( args[1] or '' )
local output = mw.text.trim( args[2] or '' )
local fuel = args.fuel or ''
if fuel == '' then
fuel = 'Any fuel'
end
-- Name cell
local nameCell
if args.name or '' ~= '' then
nameCell = args.name
elseif multirow or f:callParserFunction( '#dplvar', 'smeltingname' ) == '1' then
local names = {}
local links = {}
for v in mw.text.gsplit( args[2] or '', '%s*;%s*' ) do
parts = grid.getParts( v )
if not names[( parts.mod or '' ) .. 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 or '' ) .. parts.name] = 1
end
end
nameCell = table.concat( links, '&nbsp;or<br>' )
end
if nameCell and args.upcoming == '1' then
nameCell = nameCell .. '<br>(upcoming)'
end
-- Ingredients cell
local ingredientsCell
if args.ingredients or '' ~= '' then
ingredientsCell = args.ingredients
else
ingredientsCell = {}
local ingredients = {}
for k, v in ipairs{ input, fuel } do
local separator = ''
if k == 2 and next( ingredients ) then
separator = '&nbsp;+<br>\n'
end
for item in mw.text.gsplit( v, '%s*;%s*' ) do
local parts = grid.getParts( item )
if parts.name ~= '' and not ingredients[parts.name] and ( k == 2 or k == 1 and v ~= fuel ) then
local link = ''
if separator == '' and next( ingredients ) then
separator = '&nbsp;or<br>\n'
end
if parts.mod then
link = 'Mods/'.. parts.mod .. '/' .. parts.name .. '|'
end
if parts.name:find( '^Any ' ) then
table.insert( ingredientsCell, separator .. 'Any [[' .. link .. parts.name:sub( 4 ) .. ']]' )
else
table.insert( ingredientsCell, separator .. '[[' .. link .. parts.name .. ']]' )
end
separator = ''
ingredients[parts.name] = 1
end
end
end
ingredientsCell = table.concat( ingredientsCell )
end
-- Any args we want to pass along
local out = recipeTable( args, {
local newArgs = {
uiFunc = 'furnace',
Input = args[1],
type = i18n.type,
Output = args[2],
ingredientArgs = { 'Input', 'Fuel' },
Fuel = fuel,
outputArgs = { 'Output' },
Ititle = args.Ititle,
} )
Otitle = args.Otitle,
Ftitle = args.Ftitle
}
-- Recipe cell
local recipeCell = grid.furnace( newArgs )
local row = { ingredientsCell, recipeCell }
if nameCell then
table.insert( row, 1, nameCell )
end
if ( args.description or '' ) ~= '' and f:callParserFunction( '#dplvar', 'smeltingdescription' ) == '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', 'smeltingname', '0', 'smeltingdescription', '0' )
end
local category = ''
local title = mw.title.getCurrentTitle()
if mw.title.getCurrentTitle().namespace == 0 and args.nocat ~= '1' and args.upcoming == '1' then
local category
category = '[[Category:Upcoming]]'
if args.upcoming and args.nocat ~= '1' and title.namespace == 0 and not title.isSubpage then
category = '[[' .. i18n.categoryUpcoming .. ']]'
end
end
return header .. '\n' .. row .. '\n|-\n' .. footer .. category
return out, category
end
end
return p
return p

Latest revision as of 14:05, 12 May 2017

Documentation

This module implements {{smelting}}.

Dependencies

See also

The above documentation is transcluded from Module:Smelting/doc.

This module implements {{smelting}}.

Dependencies

See also


local p = {}

local i18n = {
	categoryUpcoming = 'Category:Upcoming',
	defaultFuel = 'Any fuel',
	moduleArgs = [[Module:ProcessArgs]],
	moduleRecipe = [[Module:Recipe table]],
	type = 'Smelting',
}
p.i18n = i18n

local recipeTable = require( i18n.moduleRecipe ).table

function p.table( f )
	local args = f
	if f == mw.getCurrentFrame() then
		args = require( i18n.moduleArgs ).merge( true )
	else
		f = mw.getCurrentFrame()
	end
	
	args.Input = args[1]
	args.Output = args[2]
	args.Fuel = args.fuel or i18n.defaultFuel
	
	local out = recipeTable( args, {
		uiFunc = 'furnace',
		type = i18n.type,
		ingredientArgs = { 'Input', 'Fuel' },
		outputArgs = { 'Output' },
	} )
	
	local title = mw.title.getCurrentTitle()
	local category
	if args.upcoming and args.nocat ~= '1' and title.namespace == 0 and not title.isSubpage then
		category = '[[' .. i18n.categoryUpcoming .. ']]'
	end
	
	return out, category
end

return p


Cookies help us deliver our services. By using our services, you agree to our use of cookies.