Minecraft Wiki
Advertisement
Minecraft Wiki
8068
страниц
[создать | история | обновить]Документация
У этого модуля нет документации. Если вы знаете, как использовать этот модуль, пожалуйста, добавьте соответствующую информацию.
local p = {}
--[=[
Получает CSS-класс(ы) span, в который помещается номер версии модификации. Эти
классы нужны для различного оформления номеров версий из веток с разной
стабильностью (релизная / стабильная, бета-версия, альфа-версия).

Параметры:
 • branch_type: тип ветки (см. документацию к модулю
   [[Модуль:Версия модификации/Данные]]). Ветки без типов или с неизвестным
   тмпом считаются стабильными.

Возвращает строку, содержащую соответствующие классы.
]=]
local function get_version_class(branch_type)
	local classes = {
		stable = "modversion modversion-stable",
		beta = "modversion modversion-beta",
		alpha = "modversion modversion-alpha"
	}
	
	return classes[branch_type] or classes.stable
end

--[=[
Функция, форматирующая номера версий какой-либо модификации.

Параметры:
 • mod_struct: структура с данными о соответствующей модификации (см.
   документацию модуля [[Модуль:Версия модификации/Данные]]).
   
Возвращает строку с готовым вики-текстом.
]=]
local function format_ver(mod_struct)
	local versions = {}
	for i, branch in ipairs(mod_struct) do
		local version = branch.v
		local ver_class = get_version_class(branch.type)
		
		table.insert(versions, '<span class="' .. ver_class .. '">' .. version .. '</span>')
	end
	return table.concat(versions, " / ")
end

--[=[
Функция, форматирующая номера версий Minecraft, с которыми совместима какая-либо
модификация.

Параметры:
 • mod_struct: структура с данными о соответствующей модификации (см.
   документацию модуля [[Модуль:Версия модификации/Данные]]).
   
Возвращает строку с готовым вики-текстом.
]=]
local function format_mc(mod_struct)
	local versions = {}
	for i, branch in ipairs(mod_struct) do
		table.insert(versions, branch.mc)
	end
	return table.concat(versions, " / ")
end

--[=[
Функция, форматирующая номера версий Minecraft, с которыми совместима какая-либо
модификация. Эта функция предназначена для встраивания значения в таблицу и
окрашивает ячейку с результатом в красный / зелёный цвет в зависимости от того,
есть ли у модификации ветка, поддерживающая последнюю версию Minecraft (Java
Edition).

Параметры:
 • mod_struct: структура с данными о соответствующей модификации (см.
   документацию модуля [[Модуль:Версия модификации/Данные]]).
   
Возвращает строку с готовым вики-текстом.
]=]
local function format_mct(mod_struct)
	local versions = {}
	local supports_latest = false
	local latest = mw.loadData([[Модуль:Версия/Данные]]).m
	
	for i, branch in ipairs(mod_struct) do
		local mc_version = branch.mc
		if mc_version == latest then
			supports_latest = true
		end
		
		table.insert(versions, mc_version)
	end
	
	local result = table.concat(versions, " / ")
	if supports_latest then
		result = 'style="background: #C6EFCE; color: #006100" |' .. result
	else
		result = 'style="background: #FFC7CE; color: #9C0006" |' .. result
 	end
 	return result
end

--[=[
Точка входа для шаблона [[Шаблон:Модверсия]]. Для информации о параметрах см.
документацию этого шаблона.
]=]
function p.main(args)
	local mod_data = mw.loadData([[Модуль:Версия модификации/Данные]])
	local mod_struct = assert(
		mod_data[args.mod],
		("Модификации %s не найдено"):format(args.mod)
	)
	
	local formatters = {
		ver = format_ver,
		mc = format_mc,
		mct = format_mct
	}
	local formatter = assert( formatters[args.format], ("Некорректный формат: %s"):format(args.format) )
	return formatter(mod_struct)
end

function p.version(f)
	local args = require([[Модуль:ProcessArgs]]).merge(true)
	
	local mod_name = assert(args[1], "Не указано название модификации")
	local output_format = args[2]
	local format = "ver"
	
	if output_format then
		if (output_format == "mct") or (output_format == "mc") then
			format = output_format
		else
			error(("Указан неверный формат: %s. Укажите или mc, или mct"):format(output_format))	
		end
	end
	
	return p.main({mod = mod_name, format = format})
end

--[=[
Дополнительная точка входа для документации шаблона [[Шаблон:Модверсия]].
Никаких параметров не принимает. Возвращает таблицу со всеми известными
модификациями.
]=]
function p.list_all()
	local mod_data = mw.loadData([[Модуль:Версия модификации/Данные]])
	local all_mods = {}
	
	for k, v in pairs(mod_data) do
		table.insert(all_mods, {k, v})
	end
	table.sort(all_mods, function(a, b) return a[2].name < b[2].name end)
	
	local result = {}
	table.insert(result, '{| class="wikitable"\n! Код\n! Название\n! Версия модификации\n! Версия Minecraft')
	for i, mod in ipairs(all_mods) do
		table.insert(result, '|-\n| ' .. mod[1] .. '\n| [[' .. mod[2].name .. ']]\n| ' .. format_ver(mod[2]) .. '\n| ' .. format_mc(mod[2]))	
	end
	table.insert(result, '|}')
	return table.concat(result, '\n')
end

return p
Advertisement