Module:Commande

De Minecraft Wiki
Aller à : navigation, rechercher
[créer | historique | purger]Documentation
Ce module n'a pas de documentation. Si vous savez comment l'utiliser, merci de la créer.
local p = {}
function p.cmd( f )
	local args = f:getParent().args
	-- local syntax = mw.loadData( 'Module:Commande/Syntaxe' )
	-- local fullCommand
	local commandName = args[1]:match( '^%s*/?([^%s]+)' ):lower()
	local params = {}
	local command = {}
	
	for i, v in ipairs( args ) do
		-- if not fullCommand and v == '...' then
			-- fullCommand = true
		if i > 1 or v:match( '^%s*/?(.+)' ):lower() ~= commandName then
			-- Don't encode if told not to or if there is a sub-command
			if args.encode ~= '0' and not v:find( '<!%-%- Command %-%->' ) then
				v = v:gsub( '<', '&lt;' )
			end
			
			table.insert( params, mw.text.trim( v ) )
		end
	end
	if #params == 1 and ( not args[2] or args[2] == '...' ) and params[1]:find( '%s' ) then
		local startPos, endPos = params[1]:find( '{.+}' )
		if not startPos then
			startPos, endPos = params[1]:find( '<!%-%- Command %-%->.+<!%-%- /Command %-%->' )
		end
		
		if startPos then
			params[1] = params[1]:sub( 1, startPos ) ..
				params[1]:sub( startPos + 1, endPos - 1 ):gsub( '%s', '&#32;' ) ..
				params[1]:sub( endPos )
		end
		
		params = mw.text.split( params[1]:match( '^[^%s]+%s(.+)' ), '%s+' )
	end
	
	-- if ( fullCommand or params[1] ) and syntax[commandName] then
	-- 	local param = 0
	-- 	function parseParams( defaultParams, sub )
	-- 		local section = {}
	-- 		local hasValue
	-- 		for i, v in ipairs( defaultParams ) do
	-- 			if type( v ) == 'table' then
	-- 				local subSection, subHasValue = parseParams( v, true )
	-- 				if subHasValue then
	-- 					hasValue = true
	-- 				end
	-- 				table.insert( section, subSection )
	-- 			else
	-- 				param = param + 1
	-- 				if params[param] then
	-- 					hasValue = true
	-- 					if params[param] ~= '' and params[param] ~= '?' then
	-- 						table.insert( section, params[param] )
	-- 					end
	-- 				end
	-- 				if not section[i] then
	-- 					table.insert( section, v )
	-- 				end
	-- 			end
	-- 		end
	-- 		section = table.concat( section, ' ' )
			
	-- 		if sub then
	-- 			if not hasValue then
	-- 				if fullCommand then
	-- 					section = '(' .. section .. ')'
	-- 				else
	-- 					section = nil
	-- 				end
	-- 			end
				
	-- 			return section, hasValue
	-- 		else
	-- 			return section
	-- 		end
	-- 	end
		
	-- 	command = { parseParams( syntax[syntax[commandName]] or syntax[commandName] ) }
		
	-- 	-- Add any extra parameters not defined in the syntax
	-- 	if #params > param then
	-- 		for i, v in ipairs( params ) do
	-- 			if i > param then
	-- 				table.insert( command, v )
	-- 			end
	-- 		end
	-- 	end
	-- else
		command = params
	-- end
	
	if args.link then
		if args.link:lower() ~= 'none' then
			commandName = '[[' .. args.link .. '|' .. commandName .. ']]'
		end
	else
		commandName = '[[Commandes#' .. commandName .. '|' .. commandName .. ']]'
	end
	table.insert( command, 1, commandName )
	
	local slash = '/'
	if args['/'] == '0' or args.slash == '0' then
		slash = ''
	end
	
	local attr
	if args.long == '1' then
		attr = 'style="display:block;padding:0.8em 1em;margin-bottom:0.4em;word-wrap:break-word"'
	else
		attr = 'class="nowrap"'
	end
	
	return '<!-- Command --><code ' .. attr .. '>' .. slash .. table.concat( command, ' ' ):gsub( '&#32;', ' ' ) .. '</code><!-- /Command -->'
end
return p