Модуль:Обжиг
Внешний вид
Для документации этого модуля может быть создана страница Модуль:Обжиг/doc
----------------------------------------------------------------------------------
--- Модуль для создания таблиц с рецептами для обжига и похожих методов обработки.
----------------------------------------------------------------------------------
local p = {}
--- Интернационализация и локализация
local i18n = {
-- Зависимости
moduleArgs = [[Модуль:ProcessArgs]],
moduleRecipe = [[Модуль:Таблица рецептов]],
moduleProcessing = [[Модуль:Обработка]],
moduleProcessingFunc = "interface",
moduleMods = [[Модуль:Модификации]],
-- Параметры процесса
type = "обжиг",
typeGenitive = "обжига",
}
-- Зависимости
local recipeTable = require(i18n.moduleRecipe).table
local modNames = mw.loadData(i18n.moduleMods)
-- Создание таблицы
function p.table(f)
local args = f
if f == mw.getCurrentFrame() then
args = require(i18n.moduleArgs).merge(true)
else
f = mw.getCurrentFrame()
end
-- Модификация и вид обработки
-- [[Модуль:Обработка]] не разбирает сокращения и не поддерживает параметр
-- «мод» со строчной буквы, поэтому они обрабатываются явным образом.
local mod = args["мод"] or args["Мод"]
local progress = args["Прогресс"]
if progress then
args["несколько обработок"] = 1
end
if mod then
-- разбор сокращений
mod = modNames[mod] or mod
elseif progress then
-- определение модификации по обозначению вида обработки
-- для совместимости??!
if progress:find('gt4') then
mod = 'GregTech 4'
elseif progress:find('gt') then
mod = 'GregTech'
elseif progress:find('ic2') then
mod = 'IndustrialCraft 2'
end
end
args["мод"] = mod
args["Мод"] = mod
-- Обработка аргументов интерфейса
local ingredientArgVals = {}
local outputArgVals = {}
-- Нежидкостные ресурсы
args["Ресурс1"] = args["Ресурс1"] or args["Ресурс"] or args[1]
if args["Ресурс1"] then
ingredientArgVals[1] = "Ресурс1"
end
if not args["Ресурс2"] then
args["Ресурс2"] = args["Топливо"] or args["топливо"]
else
-- Если Ресурс2 на самом деле топливо, то этот параметр исключается из
-- списка аргументов, обрабатываемых Таблицей рецептов. То есть, на
-- топливо не будет ссылок в ячейке ингредиентов. Также оно не будет
-- учитываться системами отслеживания использования ингредиентов, если
-- и когда они будут реализованы для Обжига.
-- Но здесь не тот случай
table.insert(ingredientArgVals, "Ресурс2")
end
local n = 3
while args["Ресурс" .. n] do
table.insert(ingredientArgVals, "Ресурс" .. n)
n = n + 1
end
-- Нежидкостные выходы
args["Выход1"] = args["Выход1"] or args["Выход"] or args[2]
n = 1
while args["Выход" .. n] do
table.insert(outputArgVals, "Выход" .. n)
n = n + 1
end
-- Жидкостные входы
args["РесурсЖ1"] = args["РесурсЖ1"] or args["РесурсЖ"]
n = 1
while args["РесурсЖ" .. n] do
table.insert(ingredientArgVals, "РесурсЖ" .. n)
n = n + 1
end
-- Жидкостные выходы
args["ВыходЖ1"] = args["ВыходЖ1"] or args["ВыходЖ"]
n = 1
while args["ВыходЖ" .. n] do
table.insert(outputArgVals, "ВыходЖ" .. n)
n = n + 1
end
-- Теперь можно использовать Таблицу рецептов
local out = recipeTable(args, {
["модуль интерфейса"] = i18n.moduleProcessing,
["функция интерфейса"] = i18n.moduleProcessingFunc,
["тип"] = i18n.type,
["типа"] = i18n.typeGenitive,
["аргументы ингредиентов"] = ingredientArgVals,
["аргументы выхода"] = outputArgVals
})
return out
end
return p