Minecraft Wiki
мНет описания правки
Нет описания правки
Строка 21: Строка 21:
 
 
 
return classes[branch_type] or classes.stable
 
return classes[branch_type] or classes.stable
  +
end
  +
  +
--[=[
  +
Получает текст всплывающей подсказки для номера версии в зависимости от типа
  +
ветки.
  +
  +
Параметры:
  +
• branch_type: тип ветки (см. документацию к модулю
  +
[[Модуль:Версия модификации/Данные]]). Ветки без типов или с неизвестным
  +
тмпом считаются стабильными.
  +
  +
Возвращает строку, содержащую текст всплывающей подсказки.
  +
]=]
  +
local function get_tooltip(branch_type)
  +
local tooltips = {
  +
stable = "Стабильная версия",
  +
beta = "Бета-версия",
  +
alpha = "Альфа-версия",
  +
unmaintained = "Неподдерживаемая версия"
  +
}
  +
  +
return tooltips[branch_type] or tooltips.stable
 
end
 
end
   
Строка 37: Строка 59:
 
local version = branch.v
 
local version = branch.v
 
local ver_class = get_version_class(branch.type)
 
local ver_class = get_version_class(branch.type)
  +
local tooltip = get_tooltip(branch.type)
 
 
table.insert(versions, '<code class="' .. ver_class .. '">' .. version .. '</code>')
+
table.insert(versions, '<code class="explain tooltip ' .. ver_class .. '" title="' .. tooltip .. '">' .. version .. '</code>')
 
end
 
end
 
return table.concat(versions, " / ")
 
return table.concat(versions, " / ")

Версия от 17:45, 21 декабря 2019

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

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

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

--[=[
Получает текст всплывающей подсказки для номера версии в зависимости от типа
ветки.

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

Возвращает строку, содержащую текст всплывающей подсказки.
]=]
local function get_tooltip(branch_type)
	local tooltips = {
		stable = "Стабильная версия",
		beta = "Бета-версия",
		alpha = "Альфа-версия",
		unmaintained = "Неподдерживаемая версия"
	}
	
	return tooltips[branch_type] or tooltips.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)
		local tooltip = get_tooltip(branch.type)
		
		table.insert(versions, '<code class="explain tooltip ' .. ver_class .. '" title="' .. tooltip .. '">' .. version .. '</code>')
	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| <code>' .. mod[1] .. '</code>\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