Editing
Module:Command
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p = {} function p.cmd( f ) local args = f if f == mw.getCurrentFrame() then args = f:getParent().args end --if args.be then --local syntax = mw.loadData( 'Module:Command/SyntaxBE' ) --else local syntax = mw.loadData( 'Module:Command/Syntax') --end local fullCommand local commandName = args[1]:match( '^%s*/?([^%s]+)' ):lower() local params = {} local command = {} --getparams for i, v in ipairs( args ) do if not args[i+1] and v == '...' then fullCommand = true elseif i > 1 or v:match( '^%s*/?(.+)' ):lower() ~= commandName then table.insert( params, mw.text.trim( v ) ) end end local needFormat = false if ( fullCommand or args[2] or args[1]:match('?') ) and syntax['command'..commandName] then needFormat = true end --escape space and split args if #params == 1 and ( not args[2] or args[2] == '...' ) and params[1]:find( '%s' ) then params[1] = params[1]:match( '^[^%s]+%s(.+)' ) if needFormat then params[1] = params[1]:gsub( '\\\\', '\\' ):gsub( '\\"', '\"' ):gsub( "\\'", '\'' ):gsub( '(@[aesprcv])%s+(%[)', '%1%2' ) while(true) do local startPos, endPos = params[1]:find( "'[^']-'" ) local startPosn, endPosn = params[1]:find('"[^"]-"') if startPosn and startPos and startPosn < startPos then startPos, endPos = startPosn, endPosn end if not startPos then startPos, endPos = params[1]:find( '"[^"]+"' ) if not startPos then startPos, endPos = params[1]:find( '%b[]' ) if not startPos then startPos, endPos = params[1]:find( '%b{}' ) if not startPos then startPos, endPos = params[1]:find( '<!%-%- Command %-%->.+<!%-%- /Command %-%->' ) end end end end if startPos then params[1] = params[1]:sub( 1, startPos - 1 ) .. params[1]:sub( startPos, endPos ):gsub('%[','〈lsqb〉'):gsub('%]','〈rsqb〉'):gsub('{','{'):gsub('}','}'):gsub("'",'〈apos〉'):gsub('"','〈quot〉'):gsub( '%s', '〈space〉' ) .. params[1]:sub( endPos + 1 ) else break end end params = mw.text.split( params[1], '%s+' ) end end if needFormat then local param = 0 function parseParams( defaultParams ) local section = {} local hasValue local prefix for i, v in pairs( defaultParams or {} ) do if type( v ) == 'table' then param = param + 1 for k,j in pairs(v) do v = j prefix = k break end if params[param] and params[param] ~= '' and params[param]~='?' then hasValue = false for k,j in pairs(v) do if j == params[param] or j:match('<.+>') then table.insert(section, params[param]) hasValue=true if k=='redirect' then param = param - 1 table.insert(section, parseParams(syntax[j:match('<(.+)>')])) else table.insert(section, parseParams(syntax[prefix..j])) end break end end if not hasValue then params = {} break end else params = {} local option = {} local swap for _,j in pairs(v) do if fullCommand then swap = {j,parseParams(syntax[prefix..j])} table.insert(option, table.concat(swap,' ')) else table.insert(option, j) end end table.insert(section, '('..table.concat(option, '|')..')') end elseif i == 'redirect' then if params[param+1] then table.insert(section, parseParams(syntax[v])) elseif v:match("^command$") then table.insert(section, "-> ''"..v.."''") else table.insert(section, "-> ''"..v:match('command(.+)').."''") end else param = param + 1 if params[param] and params[param] ~= '' and params[param] ~= '?' then table.insert(section,params[param]) else table.insert(section, v) end end if not fullCommand and not params[param+1] then break end end section = table.concat( section, ' ' ) if section == '' then section = nil end return section end command = { parseParams( syntax['command'..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 = '[[Commands/' .. 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 then attr = 'style="display: flex; padding: 0.8em 1em; margin-bottom: 0.4em; word-warp: break-word;"' end local result = table.concat( command, ' ' ):gsub( '〈space〉', ' ' ):gsub('〈lsqb〉', '%['):gsub('〈rsqb〉', '%]'):gsub('〈apos〉',"'"):gsub('〈quot〉','"') -- Don't encode if told not to or if there is a sub-command if args.escape ~= '0' then result = result:gsub( '<', '<' ):gsub( '<(!%-%- Command %-%->)<','<%1<'):gsub( '</code><(!%-%- /Command %-%->)','</code><%1') end result = '<!-- Command --><code ' .. attr .. '><span>' .. slash .. result .. '</span></code><!-- /Command -->' if needFormat then result = result .. '[[Category:Pages using deprecated command module]]' end return result end return p
Summary:
Please note that all contributions to Modded Wiki are considered to be released under the Creative Commons Attribution-NonCommercial-ShareAlike (see
Wiki:Copyrights
for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource.
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Module:Command/doc
(
edit
)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Module
Discussion
English
Views
Read
Edit source
View history
More
Refresh
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information