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