<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.boxofrocks.net/index.php?action=history&amp;feed=atom&amp;title=Module%3ACommand</id>
	<title>Module:Command - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.boxofrocks.net/index.php?action=history&amp;feed=atom&amp;title=Module%3ACommand"/>
	<link rel="alternate" type="text/html" href="https://wiki.boxofrocks.net/index.php?title=Module:Command&amp;action=history"/>
	<updated>2026-05-10T17:47:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>https://wiki.boxofrocks.net/index.php?title=Module:Command&amp;diff=849&amp;oldid=prev</id>
		<title>BoxWiki: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://wiki.boxofrocks.net/index.php?title=Module:Command&amp;diff=849&amp;oldid=prev"/>
		<updated>2021-05-13T20:09:45Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 20:09, 13 May 2021&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key wikidb:diff::1.12:old-848:rev-849 --&gt;
&lt;/table&gt;</summary>
		<author><name>BoxWiki</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.boxofrocks.net/index.php?title=Module:Command&amp;diff=848&amp;oldid=prev</id>
		<title>Redstone&gt;Chixvv at 15:37, 23 March 2021</title>
		<link rel="alternate" type="text/html" href="https://wiki.boxofrocks.net/index.php?title=Module:Command&amp;diff=848&amp;oldid=prev"/>
		<updated>2021-03-23T15:37:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
function p.cmd( f )&lt;br /&gt;
	local args = f&lt;br /&gt;
	if f == mw.getCurrentFrame() then&lt;br /&gt;
		args = f:getParent().args&lt;br /&gt;
	end&lt;br /&gt;
	--if args.be then&lt;br /&gt;
		--local syntax = mw.loadData( 'Module:Command/SyntaxBE' )&lt;br /&gt;
	--else&lt;br /&gt;
		local syntax = mw.loadData( 'Module:Command/Syntax')&lt;br /&gt;
	--end&lt;br /&gt;
	local fullCommand&lt;br /&gt;
	local commandName = args[1]:match( '^%s*/?([^%s]+)' ):lower()&lt;br /&gt;
	local params = {}&lt;br /&gt;
	local command = {}&lt;br /&gt;
	&lt;br /&gt;
	--getparams&lt;br /&gt;
	for i, v in ipairs( args ) do&lt;br /&gt;
		if not args[i+1] and v == '...' then&lt;br /&gt;
			fullCommand = true&lt;br /&gt;
		elseif i &amp;gt; 1 or v:match( '^%s*/?(.+)' ):lower() ~= commandName then&lt;br /&gt;
			table.insert( params, mw.text.trim( v ) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local needFormat = false&lt;br /&gt;
	if ( fullCommand or args[2] or args[1]:match('?') ) and syntax['command'..commandName] then&lt;br /&gt;
		needFormat = true&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	--escape space and split args&lt;br /&gt;
	if #params == 1 and ( not args[2] or args[2] == '...' ) and params[1]:find( '%s' ) then&lt;br /&gt;
		params[1] = params[1]:match( '^[^%s]+%s(.+)' )&lt;br /&gt;
		&lt;br /&gt;
		if needFormat then&lt;br /&gt;
		&lt;br /&gt;
			params[1] = params[1]:gsub( '\\\\', '&amp;amp;bsol;&amp;amp;bsol;' ):gsub( '\\&amp;quot;', '&amp;amp;bsol;&amp;amp;quot;' ):gsub( &amp;quot;\\'&amp;quot;, '&amp;amp;bsol;&amp;amp;apos;' ):gsub( '(@[aesprcv])%s+(%[)', '%1%2' )&lt;br /&gt;
		&lt;br /&gt;
			while(true) do&lt;br /&gt;
				local startPos, endPos = params[1]:find( &amp;quot;'[^']-'&amp;quot; )&lt;br /&gt;
				local startPosn, endPosn = params[1]:find('&amp;quot;[^&amp;quot;]-&amp;quot;')&lt;br /&gt;
				if startPos and startPos and startPosn &amp;lt; startPos then&lt;br /&gt;
					startPos, endPos = startPosn, endPosn&lt;br /&gt;
				end&lt;br /&gt;
				if not startPos then&lt;br /&gt;
					startPos, endPos = params[1]:find( '&amp;quot;[^&amp;quot;]+&amp;quot;' )&lt;br /&gt;
					if not startPos then&lt;br /&gt;
						startPos, endPos = params[1]:find( '%b[]' )&lt;br /&gt;
						if not startPos then&lt;br /&gt;
							startPos, endPos = params[1]:find( '%b{}' )&lt;br /&gt;
							if not startPos then&lt;br /&gt;
								startPos, endPos = params[1]:find( '&amp;amp;lt;!%-%- Command %-%-&amp;gt;.+&amp;amp;lt;!%-%- /Command %-%-&amp;gt;' )&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if startPos then&lt;br /&gt;
					params[1] = params[1]:sub( 1, startPos - 1 ) ..&lt;br /&gt;
						params[1]:sub( startPos, endPos ):gsub('%[','〈lsqb〉'):gsub('%]','〈rsqb〉'):gsub('{','&amp;amp;#123;'):gsub('}','&amp;amp;#125;'):gsub(&amp;quot;'&amp;quot;,'〈apos〉'):gsub('&amp;quot;','〈quot〉'):gsub( '%s', '〈space〉' ) ..&lt;br /&gt;
						params[1]:sub( endPos + 1 )&lt;br /&gt;
				else&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
			params = mw.text.split( params[1], '%s+' )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if needFormat then&lt;br /&gt;
		local param = 0&lt;br /&gt;
		function parseParams( defaultParams )&lt;br /&gt;
			local section = {}&lt;br /&gt;
			local hasValue&lt;br /&gt;
			local prefix&lt;br /&gt;
			for i, v in pairs( defaultParams or {} ) do&lt;br /&gt;
				if type( v ) == 'table' then&lt;br /&gt;
					param = param + 1&lt;br /&gt;
					for k,j in pairs(v) do&lt;br /&gt;
						v = j&lt;br /&gt;
						prefix = k&lt;br /&gt;
						break&lt;br /&gt;
					end&lt;br /&gt;
					if params[param] and params[param] ~= '' and params[param]~='?' then&lt;br /&gt;
						hasValue = false&lt;br /&gt;
						for k,j in pairs(v) do&lt;br /&gt;
							if j == params[param] or j:match('&amp;lt;.+&amp;gt;') then&lt;br /&gt;
								table.insert(section, params[param])&lt;br /&gt;
								hasValue=true&lt;br /&gt;
								if k=='redirect' then&lt;br /&gt;
									param = param - 1&lt;br /&gt;
									table.insert(section, parseParams(syntax[j:match('&amp;lt;(.+)&amp;gt;')]))&lt;br /&gt;
								else&lt;br /&gt;
									table.insert(section, parseParams(syntax[prefix..j]))&lt;br /&gt;
								end&lt;br /&gt;
								break&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						if not hasValue then&lt;br /&gt;
							params = {}&lt;br /&gt;
							break&lt;br /&gt;
						end&lt;br /&gt;
					else&lt;br /&gt;
						params = {}&lt;br /&gt;
						local option = {}&lt;br /&gt;
						local swap&lt;br /&gt;
						for _,j in pairs(v) do&lt;br /&gt;
							if fullCommand then&lt;br /&gt;
								swap = {j,parseParams(syntax[prefix..j])}&lt;br /&gt;
								table.insert(option, table.concat(swap,' '))&lt;br /&gt;
							else&lt;br /&gt;
								table.insert(option, j)&lt;br /&gt;
							end&lt;br /&gt;
						end&lt;br /&gt;
						table.insert(section, '('..table.concat(option, '|')..')')&lt;br /&gt;
					end&lt;br /&gt;
				elseif i == 'redirect' then&lt;br /&gt;
					if params[param+1] then&lt;br /&gt;
						table.insert(section, parseParams(syntax[v]))&lt;br /&gt;
					elseif v:match(&amp;quot;^command$&amp;quot;) then&lt;br /&gt;
						table.insert(section, &amp;quot;-&amp;gt; ''&amp;quot;..v..&amp;quot;''&amp;quot;)&lt;br /&gt;
					else&lt;br /&gt;
						table.insert(section, &amp;quot;-&amp;gt; ''&amp;quot;..v:match('command(.+)')..&amp;quot;''&amp;quot;)&lt;br /&gt;
					end&lt;br /&gt;
				else&lt;br /&gt;
					param = param + 1&lt;br /&gt;
					if params[param] and params[param] ~= '' and params[param] ~= '?' then&lt;br /&gt;
						table.insert(section,params[param])&lt;br /&gt;
					else&lt;br /&gt;
						table.insert(section, v)&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				if not fullCommand and not params[param+1] then&lt;br /&gt;
					break&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			section = table.concat( section, ' ' )&lt;br /&gt;
			if section == '' then&lt;br /&gt;
				section = nil&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			return section&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		command = { parseParams( syntax['command'..commandName] ) }&lt;br /&gt;
		&lt;br /&gt;
		-- Add any extra parameters not defined in the syntax&lt;br /&gt;
		if #params &amp;gt; param then&lt;br /&gt;
			for i, v in ipairs( params ) do&lt;br /&gt;
				if i &amp;gt; param then&lt;br /&gt;
					table.insert( command, v )&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		command = params&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.link then&lt;br /&gt;
		if args.link:lower() ~= 'none' then&lt;br /&gt;
			commandName = '[[' .. args.link .. '|' .. commandName .. ']]'&lt;br /&gt;
		end&lt;br /&gt;
	else&lt;br /&gt;
		commandName = '[[Commands/' .. commandName .. '|' .. commandName .. ']]'&lt;br /&gt;
	end&lt;br /&gt;
	table.insert( command, 1, commandName )&lt;br /&gt;
	&lt;br /&gt;
	local slash = '/'&lt;br /&gt;
	if args['/'] == '0' or args.slash == '0' then&lt;br /&gt;
		slash = ''&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local attr = ''&lt;br /&gt;
	if args.long then&lt;br /&gt;
		attr = 'style=&amp;quot;display: block; padding: 0.8em 1em; margin-bottom: 0.4em; word-warp: break-word;&amp;quot;'&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local result = table.concat( command, ' ' ):gsub( '〈space〉', ' ' ):gsub('〈lsqb〉', '%['):gsub('〈rsqb〉', '%]'):gsub('〈apos〉',&amp;quot;'&amp;quot;):gsub('〈quot〉','&amp;quot;')&lt;br /&gt;
	-- Don't encode if told not to or if there is a sub-command&lt;br /&gt;
	if args.escape ~= '0' then&lt;br /&gt;
		result = result:gsub( '&amp;lt;', '&amp;amp;lt;' ):gsub( '&amp;amp;lt;(!%-%- Command %-%-&amp;gt;)&amp;amp;lt;','&amp;lt;%1&amp;lt;'):gsub( '&amp;amp;lt;/code&amp;gt;&amp;amp;lt;(!%-%- /Command %-%-&amp;gt;)','&amp;lt;/code&amp;gt;&amp;lt;%1')&lt;br /&gt;
	end&lt;br /&gt;
	return '&amp;lt;!-- Command --&amp;gt;&amp;lt;code ' .. attr .. '&amp;gt;' .. slash .. result .. '&amp;lt;/code&amp;gt;&amp;lt;!-- /Command --&amp;gt;'&lt;br /&gt;
end&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Redstone&gt;Chixvv</name></author>
		
	</entry>
</feed>