Module:Mubble Fixes

local p = {} p.fixes = function( f ) local args = f:getParent.args local project = args.project or '#' 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 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, '* .. issue .. ' ' .. project:upper .. '' .. issue .. ' – ' .. title ) end end

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

table.insert( trackerQuery, query .. ' in ("' .. mubble .. arg:gsub( ',%s*', '","' .. mubble ) .. '")' ) end end makeQuery( 'fixVersion', args.fixedin ) makeQuery( 'fixVersion not', args.notfixedin ) makeQuery( 'affectedVersion', args.affected ) local text = (issues == 1 and 'Fix' or 'Fixes (') .. (issues == 1 and  or issues) .. (issues == 1 and  or ')') if #trackerQuery > 0 then table.insert( trackerQuery, 'project = ' .. project:upper )

if not args.upcoming then table.insert( trackerQuery, 'resolution = Fixed' ) end end return ';' .. text .. '\n' .. table.concat( list, '\n' ) end return p