The Gamepedia and Fandom account systems have now been merged. If your username is incorrect, you have accounts on both platforms that weren't merged, or you have trouble signing in, please submit a support ticket.

Module:Development versions

From Minecraft Wiki
Jump to: navigation, search
[view | edit | history | purge]DocumentationJump to code ↴

This module implements {{development versions}}.

[view | edit | history | purge]The above documentation is transcluded from Module:Development versions/doc.
local p = {}
p.list = function( f )
	local args = f:getParent().args
	local title = mw.title.getCurrentTitle().rootText
	local version = args[1] or title

	if not version:find('Edition') and not version:find('Launcher') then
		version = 'Java Edition ' .. version
	end
	
	f:callParserFunction ( '#dplvar:set', 'parentVersion', version )
	
	local categories = args.categories or 'previews, test builds, builds, alphas, betas, snapshots, pre-releases, release candidates'
	local devVersions = {}
	for category in mw.text.gsplit( categories, '%s*,%s*' ) do
		table.insert( devVersions,
			f:callParserFunction( '#dpl:', {
				category = version .. ' ' .. category,
				format = ',|%PAGE%',
				ordermethod = 'sortkey',
				debug = '1'
			} )
		)
	end
	devVersions = mw.text.trim( table.concat( devVersions ), '%s|' )
	
	local edition = version:match( '^.- Edition' )
	local content = {}
	local brokenPages = {}
	for page in mw.text.gsplit( devVersions, '|' ) do
		local devVersion = page
		if edition then
			devVersion = page:gsub( '^' .. edition, '' )
		elseif version:find('Launcher') then
			devVersion = page:gsub( 'Launcher', '' )
			devVersion = devVersion:gsub( "x", "''x''" )
			devVersion = devVersion:gsub( "''x''''x''", "''xx''" )
		end
		
		local wikitext = mw.title.new( page ):getContent()
		if wikitext:match( '<onlyinclude>' ) and wikitext:match( '</onlyinclude>' ) then
			table.insert( content, '<onlyinclude>=[[' .. page .. '|' .. devVersion .. ']]=</onlyinclude>' .. wikitext )
		else
			table.insert( brokenPages, '"[[' .. page .. ']]"' )
		end
	end
	
	if #brokenPages > 0 then
		error( mw.text.listToText( brokenPages ) .. ' missing <onlyinclude>', 0 )
		return
	end
	
	content = table.concat( content )
		:gsub( '^.-<onlyinclude>%s*', '\n' )
		:gsub( '%s*</onlyinclude>.-<onlyinclude>%s*', '\n' )
		:gsub( '%s*</onlyinclude>.*$', '\n' )
		:gsub( '\n(=+ *[^\n]+ *=+)', '\n=%1=' )
	
	return f:preprocess( mw.text.trim( content ) )
end
return p