Модуль:Исправления — различия между версиями
Материал из Playzone Minecraft Wiki
Softer (обсуждение | вклад) м (1 версия импортирована) |
|
(нет различий)
|
Текущая версия на 01:27, 18 января 2017
Для документации этого модуля может быть создана страница Модуль:Исправления/doc
local p = {} p.fixes = function( f ) local args = 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 = { [';старый'] = ';Из выпущенных версий до ' .. parentVersion, [';сним'] = ';Из выпущенных снимков ' .. parentVersion, [';пред'] = ';Из предыдущего снимка', [';гфикс'] = ';Из этой версии' } 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 .. 'bug:' .. issue .. '|' .. project:upper() .. '-' .. issue .. ']] – ' .. title ) end end -- Для любой версии, любого издания local minecraft = 'Minecraft ' if args.upcoming then minecraft = '' end local trackerQuery = {} local makeQuery = function( query, arg ) if arg and arg ~= '' then table.insert( trackerQuery, query .. ' in ("' .. minecraft .. arg:gsub( ',%s*', '","' .. minecraft ) .. '")' ) end end makeQuery( 'исправленов', args.fixedin ) makeQuery( 'неисправлено', args.notfixedin ) makeQuery( 'постр', args.affected ) local text = 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 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