Модуль:Ссылка на версию
Внешний вид
Для документации этого модуля может быть создана страница Модуль:Ссылка на версию/doc
local p = {}
local function removePrefix( s, prefixes )
local final = s
for _, p in ipairs( prefixes ) do
final = final:gsub( '^' .. p, '' )
end
return mw.text.trim(final)
end
local function getLast( prefix, postfix )
return function( s )
local last = mw.ustring.match( s, '^.+%s+(%S+)$' )
return prefix .. last .. postfix
end
end
local function getJava( s )
return removePrefix( s, { '[Jj]ava', ' [Ee]dition', '[Jj][Ee]' } ) .. ' (Java Edition)'
end
local function getBedrock( s )
return removePrefix( s, { '[Bb]edrock', ' [Ee]dition', '[Bb][Ee]' } ) .. ' (Bedrock Edition)'
end
local function getPocket( s )
-- Убрано для совместимости
-- if(s:match('Alpha') and not s:match('Realms')) then
-- return mw.getCurrentFrame():callParserFunction( '#dplreplace', s, '/^(pocket edition|pocket|pe) (Alpha)? ?v?(\\d+\\.\\d+\\.\\d+)? ?(build \\d+)?/i', 'v\\3 alpha \\4' ) .. ' (Pocket Edition)'
-- end
return removePrefix( s, { '[Pp]ocket', ' [Ee]dition', '[Pp][Ee]' } ) .. ' (Pocket Edition)'
end
local function getEducation( s )
return removePrefix( s, { '[Ee]ducation', ' [Ee]dition', '[Ee][Dd][Uu]', '[Ee][Ee]' } ) .. ' (Minecraft Education)'
end
local function getChinese()
return 'Minecraft China#История'
end
-- Заменено для совместимости. Требуется переработка [[Шаблон:История]].
local function getPlayStation( s )
-- return removePrefix( s, { '[Pp]layStation', '[Pp][Ss]' } ) .. '#Legacy Console Edition'
return 'История версий (Legacy Console Edition)#' .. removePrefix( s, { '[Pp]layStation', '[Pp][Ss]' } )
end
local function getSwitch( s )
local prefix = 'История версий (консольные издания)#switch-'
if s:find('NS Patch') or s:find('Patch s') then
return prefix .. '1.0.' .. mw.ustring.match( s, '(%d+)$' )
end
return prefix .. mw.ustring.match( s, '^.+%s+(%S+)$' )
end
local prefixFunctions = {
java = getJava,
je = getJava,
['pre-classic'] = getJava,
classic = getJava,
indev = getJava,
infdev = getJava,
alpha = getJava,
beta = getJava,
pe = getPocket,
pocket = getPocket,
be = getBedrock,
bedrock = getBedrock,
edu = getEducation,
education = getEducation,
ee = getEducation,
china = getChinese,
chinese = getChinese,
earth = getLast( 'Minecraft Earth:', '' ),
dungeons = getLast( 'Minecraft Dungeons:', '' ),
['dungeons arcade'] = getLast( 'Minecraft Dungeons:', '' ),
legends = getLast( 'Minecraft Legends:', '' ),
realms = getLast( 'Realms#', '' ),
xbox = getLast('История версий (консольные издания)#', ''), -- для совместимости
-- ['360'] = getLast( '', ' (Xbox 360 Edition)' ),
-- xbox360 = getLast( '', ' (Xbox 360 Edition)' ),
['360'] = getLast('История версий (консольные издания)#xbox-', ''), -- для совместимости
xbox360 = getLast('История версий (консольные издания)#xbox-', ''), -- для совместимости
-- xbone = getLast( '', ' (Xbox One Edition)' ),
-- xb1 = getLast( '', ' (Xbox One Edition)' ),
-- xbox1 = getLast( '', ' (Xbox One Edition)' ),
xbone = getLast('История версий (консольные издания)#xbone-', ''), -- для совместимости
xb1 = getLast('История версий (консольные издания)#xbone-', ''), -- для совместимости
xbox1 = getLast('История версий (консольные издания)#xbone-', ''), -- для совместимости
ps = getPlayStation,
ps3 = getLast( '', ' (PlayStation 3 Edition)' ),
ps4 = getLast( '', ' (PlayStation 4 Edition)' ),
playstation = getLast( '', ' (PlayStation 4 Edition)' ),
psv = getLast( '', ' (PlayStation Vita Edition)' ),
psvita = getLast( '', ' (PlayStation Vita Edition)' ),
-- wii = getLast( 'Patch ', ' (Wii U Edition)' ),
-- wiiu = getLast( 'Patch ', ' (Wii U Edition)' ),
wii = getLast('История версий (консольные издания)#wiiu-', ''), -- для совместимости
wiiu = getLast('История версий (консольные издания)#wiiu-', ''), -- для совместимости
-- switch = getLast( '', ' (Nintendo Switch Edition)' ),
-- nswitch = getLast( '', ' (Nintendo Switch Edition)' ),
switch = getSwitch, -- для совместимости
nswitch = getSwitch, -- для совместимости
['3ds'] = getLast( '', ' (New Nintendo 3DS Edition)' ),
new = getLast( '', ' (New Nintendo 3DS Edition)' ),
new3ds = getLast( '', ' (New Nintendo 3DS Edition)' ),
minecraftedu = getLast( '', ' (MinecraftEdu)' ),
launcher = getLast( '', ' (лаунчер)' ),
}
function p.version( s )
local v = s:gsub( '^[Mm]inecraft ', '' )
local prefix = mw.text.split( v, '%s' )[1]:lower()
local func = prefixFunctions[prefix]
if func then
return func( v )
else
return v
end
end
function p.main( f )
local args = f
if f == mw.getCurrentFrame() then
args = require( [[Модуль:ProcessArgs]] ).merge( false )
end
local text
if args[2] == '' then
text = mw.ustring.match( args[1], '^.+%s+(%S+)$' )
else
text = args[2] or args[1]
end
return '[[minecraftwiki:' .. p.version( args[1] ) .. '|' .. text .. ']]'
end
return p