Module:Fixes

local p = {} function p.fixes( f ) local args = require("Module:ProcessArgs").norm(f:getParent.args) local project = args.project or 'MC' local argLen = 0 for i in ipairs( args ) do		argLen = i	end local parentVersion = f:callParserFunction( '#dplvar', 'parentVersion' ) if parentVersion == '' then parentVersion = f:callParserFunction( '#var', 'title' ) end

local headerAliases = { [';old'] = ';From released versions before ' .. parentVersion, [';dev'] = ';From the ' .. parentVersion .. ' development versions', [';previous'] = ';From the previous development version', [';prev'] = ';From the previous development version', [';hotfix'] = ';From the current version, hotfixed', [';private'] = ';Private issues', [';priv'] = ';Private issues', }	local sections = {} local headers = {} local section = {} local issues = 0 local index = {} local i = 1 while i < argLen do		local this = args[i] if this:match( '^;' ) then if #section > 0 then table.insert( sections, section ) section = {} end local header = mw.text.trim( this ) headers[#sections + 1] = headerAliases[header:lower] or header else local issue = tonumber( this:match( '%d+' ) ) if issue then table.insert( section, issue ) issues = issues + 1 index[issue] = i			end i = i + 1 end i = i + 1 end if #section > 0 then table.insert( sections, section ) end local list = {} for i, section in ipairs( sections ) do		local header = headers[i] if header and header ~= '' then table.insert( list, header ) end table.sort( section ) for _, issue in ipairs( section ) do			local title = mw.text.trim( args[index[issue] + 1] or '' ) table.insert( list, '* ' .. project:upper .. '-' .. issue .. ' – ' .. title ) end end

local prefix = '' if args.prefix then prefix = args.prefix .. ' '	end local trackerQuery = {} local makeQuery = function( query, arg ) if arg and arg ~= '' then

table.insert( trackerQuery, query .. ' in ("' .. prefix .. arg:gsub( ',%s*', '","' .. prefix ) .. '")' ) end end makeQuery( 'fixVersion', args.fixedin ) makeQuery( 'fixVersion not', args.notfixedin ) makeQuery( 'affectedVersion', args.affected )

if args.otherissuescount then issues = issues + args.otherissuescount end local text = issues .. (issues == 1 and ' issue fixed' or ' issues fixed' or (planned == 1 and 'issues planned to be fixed')) if #trackerQuery > 0 then table.insert( trackerQuery, 'project = ' .. project:upper )

-- For the sake of 1.9 if not args.upcoming then table.insert( trackerQuery, 'resolution = Fixed' ) end text = '[https://bugs.mojang.com/issues/?jql=' .. mw.uri.encode( table.concat( trackerQuery, ' AND ' ) .. ' ORDER BY key' ) .. ' ' .. text .. ']'	end return ';' .. text .. '\n' .. table.concat( list, '\n' ) end return p