Módulo:Tabela de som

De Minecraft Wiki
Ir para: navegação, pesquisa

Este módulo implementa {{Tabela de som}}.

Uso

Este módulo não deve ser invocado; {{Tabela de som}} deve ser chamado. Consulte a documentação do modelo para obter mais informações.

[ver | editar | histórico | purgar]A documentação acima é transcluída de Módulo:Tabela de som/doc.
local p = {}
local emptyevent = [=[''Nenhum''<ref group="som" name="emptyevent">Os eventos vazios não têm esse parâmetro definido.</ref>]=]
local nosubtitle = [=[''Nenhum''<ref group="som" name="nosubtitle">[https://bugs.mojang.com/browse/MC-91042?jql=text%20~%20%22sound%20missing%22%20and%20resolution%20not%20in%20(%22Fixed%22%2C%20%22Cannot%20Reproduce%22%2C%20Duplicate%2C%20Invalid)%20and%20project%20%3D%20%22Minecraft%3A%20Java%20Edition%22 Relatórios no Mojira].</ref>]=]

local function vardefine( f, name, value )
	f:callParserFunction( '#vardefine', name, value )
end

local function var( f, name, defaultvalue )
	local result = f:callParserFunction( '#var', name, defaultvalue )
	if result == '' then
		return nil
	end
	return result
end

local function addCategory( nocat, value, categoryName )
	if not nocat then
		local category = [=[[[Categoria:Páginas com problemas na tabela de som]]]=]
		-- categoria unificada para a Minecraft Wiki em português
		
		value = value .. category
	end
	
	return value
end

function p.table( f )
	local args = f
	if f == mw.getCurrentFrame() then
		args = require( 'Module:ProcessArgs' ).norm()
	else
		f = mw.getCurrentFrame()
	end
	local parent = f:getParent() or f
	local result = ''
	
	if not var( parent, 'soundstable' ) then
		vardefine( parent, 'soundstable', 1 )
		if args.nocat then
			vardefine( parent, 'nocat', 1 )
		end
		local bedrockordungeons = false
		if args.bedrock or args.dungeons then
			bedrockordungeons = true
			vardefine( parent, 'bedrockordungeons', 1 )
		end
		if args.bedrock then
			vardefine( parent, 'bedrock', 1 )
		end
		if args.dungeons then
			vardefine( parent, 'dungeons', 1 )
		end
		result = result .. [=[<table class="wikitable">]=]
		local headerrow = mw.html.create( 'tr' )
		local headings = { 'Som' }
		
		if not bedrockordungeons then
			table.insert( headings, '[[Legenda]]' )
		end
		if not args.dungeons then
			local sourceheading = parent:expandTemplate{ title = 'abbr', args = { 'Fonte', 'A categoria em que este som se enquadra; qual controle deslizante de volume controla este som no menu Música e Sons.' } }
			if args.bedrock then
				table.insert( headings, sourceheading )
			else
				table.insert( headings, sourceheading )
			end
		end
		local descriptionheading = parent:expandTemplate{ title = 'abbr', args = { 'Descrição', 'Quando o jogo chama esse evento de som.' } }
		table.insert( headings, descriptionheading )
		table.insert( headings, args.dungeons and 'Arquivo' or '[[ID de espaço de nome]]')
		if not bedrockordungeons then
			table.insert( headings, 'Chave da legenda' )
		end
		if not args.dungeons then
			table.insert( headings, 'Volume' )
			table.insert( headings, 'Afinação' )
		end
		if not bedrockordungeons then
			table.insert( headings, 'Distância de<br>atenuação' )
		end
		
		for i, header in ipairs( headings ) do
			if header == "Som" then columnstyle = "min-width:60px;" end
			-- adicionando uma largura mínima na coluna de som para a MCW em português
			headerrow
				:tag( 'th' )
				:wikitext( header ) 
				:cssText(columnstyle)
		end
		
		result = result .. tostring( headerrow )
	end
	
	-- Header variables
	local nocat = var( parent, 'nocat' )
	local bedrockordungeons = var( parent, 'bedrockordungeons' )
	local bedrock = var( parent, 'bedrock' )
	local dungeons = var( parent, 'dungeons' )
	
	local cells = {}
	
	local sound = ''
	if args.sound == '-' then
		sound = '-'
	elseif args.sound == nil then
		sound = addCategory( nocat, '?', 'sons' )
	else
		-- O primeiro parâmetro está vazio porque não queremos um nome de som
		local sounds = { '', args.sound }
		for count = 2, 20 do
			local index = 'sound' .. count
			if args[index] then
				table.insert( sounds, args[index] )
			end
		end
		
		sound = parent:expandTemplate{ title = 'Som', args = sounds }
	end
	table.insert( cells, sound )
	
	if not bedrockordungeons then
		local subtitle = args.subtitle
		if args.subtitle == '-' then
			subtitle = parent:preprocess( nosubtitle )
		elseif sound == '-' then
			subtitle = parent:preprocess( emptyevent )
		elseif args.translationkey == '-' then
			local content = parent:expandTemplate{ title = 'bug', args = { args.subtitle } }
			subtitle = [=[''Nenhum'']=] .. parent:extensionTag( 'ref', content, { group = 'som', name = 'bug' .. args.subtitle } )
		elseif args.subtitle ~= nil then
			subtitle = args.subtitle
		else
			subtitle = addCategory( nocat, '?', 'legendas' )
		end
		table.insert( cells, subtitle )
	end
	
	if not dungeons then
		local source = args.source or addCategory( nocat, '?', 'fonte do som' )
		table.insert( cells, source )
	end

	local desc = args.description or addCategory( nocat, '?', 'descrição do som' )
	table.insert( cells, desc )
	
	local id
	if args.id then
		id = [=[<code style="white-space: nowrap">]=] .. args.id .. [=[</code>]=]
	else
		id = addCategory( nocat, '?', 'ID do som' )
	end
	table.insert( cells, id )
	
	if not bedrockordungeons then
		local translationkey
		if sound == '-' then
			translationkey = parent:preprocess( emptyevent )
		elseif args.subtitle == '-' then
			translationkey = parent:preprocess( nosubtitle )
		elseif args.translationkey == '-' then
			local content = parent:expandTemplate{ title = 'bug', args = { args.subtitle } }
			translationkey = [=[''Nenhum'']=] .. parent:extensionTag( 'ref', content, { group = 'som', name = 'bug' .. args.subtitle } )
		elseif args.translationkey ~= nil then
			translationkey = [=[<code style="white-space: nowrap">]=] .. args.translationkey .. [=[</code>]=]
		else
			translationkey = addCategory( nocat, '?', 'chave de legenda' )
		end
		table.insert( cells, translationkey )
	end
	
	if not dungeons then
		table.insert( cells, args.volume or addCategory( nocat, '?', 'volume do som' ) )
		table.insert( cells, args.pitch or addCategory( nocat, '?', 'afinação do som' ) )
	end
	if not bedrockordungeons then
		table.insert( cells, args.distance or addCategory( nocat, '?', 'distância de atenuação do som' ) )
	end
	
	local row = mw.html.create( 'tr' )
	for i, cell in ipairs( cells ) do
		row
			:tag( 'td' )
			:wikitext( cell ) 
	end
	result = result .. tostring( row )
	
	if args.foot then
		-- Reset the variables we used
		vardefine(parent, 'soundstable', '')
		vardefine(parent, 'nocat', '')
		vardefine(parent, 'bedrock', '')
		vardefine(parent, 'dungeons', '')
		vardefine(parent, 'bedrockordungeons', '')
		
		-- Add table ending
		result = result .. [=[</table>]=] .. parent:expandTemplate{ title = 'notelist', args = { 'som' } }
	end
	
	return tostring( result )
end
return p