Módulo:Command

Revisión del 16:40 11 abr 2014 de MinedNugget (discusión | contribs.) (Página creada con «local p = {} function p.cmd( f ) local args = f:getParent().args local syntax = mw.loadData( 'Module:Command/Syntax' ) local fullCommand local commandName = args[1]:mat...»)
(difs.) ← Revisión anterior | Revisión actual (difs.) | Revisión siguiente → (difs.)
La versión para imprimir ya no se admite y puede contener errores de representación. Actualiza los marcadores del navegador y utiliza en su lugar la función de impresión predeterminada del navegador.

local p = {} function p.cmd( f ) local args = f:getParent().args local syntax = mw.loadData( 'Module:Command/Syntax' ) 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 elseif 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( '<', '<' ) 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', ' ' ) .. 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 = '' .. commandName .. '' end else 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 '' .. slash .. table.concat( command, ' ' ):gsub( ' ', ' ' ) .. '' end return p