Модуль:Ftl: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
(не показаны 3 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
-- Загрузка данных | |||
local data = mw.loadData("Модуль:IanComradeBot/ftl/ru-RU.json/data") | |||
local p = {} | local p = {} | ||
-- | -- Функция для получения таблицы данных | ||
function p.getData() | |||
return data | |||
return | |||
end | end | ||
-- Поиск текста по ключу | -- Поиск текста по ключу | ||
local function findTextByKey(data, key) | local function findTextByKey(data, key) | ||
for | for categoryName, category in pairs(data) do | ||
if | for k, value in pairs(category) do | ||
if k == key then | |||
return value | |||
end | |||
end | end | ||
end | end | ||
Строка 54: | Строка 57: | ||
if not mode or not param then | if not mode or not param then | ||
return "Ошибка: Не указаны все необходимые параметры." | return "Ошибка: Не указаны все необходимые параметры." | ||
end | end | ||
Текущая версия от 12:40, 4 февраля 2025
Для документации этого модуля может быть создана страница Модуль:Ftl/doc
-- Загрузка данных local data = mw.loadData("Модуль:IanComradeBot/ftl/ru-RU.json/data") local p = {} -- Функция для получения таблицы данных function p.getData() return data end -- Поиск текста по ключу local function findTextByKey(data, key) for categoryName, category in pairs(data) do for k, value in pairs(category) do if k == key then return value end end end return nil end -- Поиск ключа по тексту local function findKeyByText(data, text) for categoryName, category in pairs(data) do for key, value in pairs(category) do if value == text then return key end end end return nil end -- Получение всех строк из категории local function getCategoryStrings(data, categoryName) local category = data[categoryName] if not category then return nil end local result = {} for _, value in pairs(category) do if type(value) == "string" then table.insert(result, value) end end return result end -- Основная функция модуля function p.main(frame) local mode = frame.args[1] local param = frame.args[2] if not mode or not param then return "Ошибка: Не указаны все необходимые параметры." end if mode == "translation" then local result = findTextByKey(data, param) return result or "Ошибка: Ключ не найден." elseif mode == "key" then local result = findKeyByText(data, param) return result or "Ошибка: Текст не найден." elseif mode == "categories" then local strings = getCategoryStrings(data, param) if not strings or #strings == 0 then return "Ошибка: Категория не найдена или пуста." end local output = {} for _, value in ipairs(strings) do table.insert(output, "<li>" .. mw.text.encode(value) .. "</li>") end return table.concat(output) else return "Ошибка: Неизвестный режим работы." end end return p