Для документации этого модуля может быть создана страница Модуль:Item icon/doc
local p = {}
--Эта функция используется для получения информации о предмете из базы данных Cargo и создания соответствующего HTML-кода для отображения иконки, названия и качества предмета на странице вики.
function p.Main( frame )
local cargo = mw.ext.cargo
-- Инициализируем переменную для хранения HTML-кода предмета.
local itemHTML = nil
-- Указываем название таблицы, с которой работаем, и поля, которые нужно выбрать.
local tables = 'Items'
local fields = '_pageName, icon, name, quality'
-- Создаем аргументы для запроса к базе данных Cargo.
local args = {
where = '_pageName = "' .. frame.args[1] .. '"', -- Условие выборки по названию предмета.
groupBy = '_pageName', -- Группировка результатов по названию предмета.
limit = 1, -- Ограничение на количество выбранных результатов.
}
-- Выполняем запрос к базе данных Cargo.
local result = cargo.query( tables, fields, args )
-- Если запрос вернул хотя бы один результат, то сохраняем его в переменную r.
local r = result[1]
-- Если предмета не существует, создаем ссылку на страницу с названием введенным в аргументе.
if not r then
local itemName = frame.args[1]
itemHTML = string.format('[[%s|<span class="ajaxttlink">%s</span>]]', itemName, itemName)
else
-- Если предмет существует, создаем иконку и ссылку на страницу.
local item_icon = string.format('<span style="vertical-align: text-bottom">[[Файл:%s|20px|bottom|ссылка=%s]]</span>',
(r['icon'] and r['icon'] or ''), -- Иконка предмета.
r['_pageName'] -- Название страницы предмета.
)
-- Создаем таблицу для соответствия строковых значений их соответствующим значениям качества предметов.
local quality_map = {
['мусор'] = 'junk',
['обычный'] = 'common',
['необычный'] = 'uncommon',
['редкий'] = 'rare',
['эпический'] = 'epic',
['легендарный'] = 'legendary',
['мифический'] = 'mythic',
['предмет задачи'] = 'quest',
['quest'] = 'quest',
['задача'] = 'quest',
['common'] = 'common',
['uncommon'] = 'uncommon',
['rare'] = 'rare',
['epic'] = 'epic',
['legendary'] = 'legendary',
['mythic'] = 'mythic',
}
-- Инициализируем переменную item_quality как nil.
local item_quality = nil
-- Проверяем, задано ли значение для параметра "качество" в вызове шаблона.
if frame.args['качество'] ~= nil and frame.args['качество'] ~= '' then
-- Если параметр "качество" задан, то приводим его значение к нижнему регистру.
local quality_input = mw.ustring.lower(frame.args['качество'])
-- Используем таблицу quality_map для получения соответствующего значения качества предмета.
item_quality = quality_map[quality_input]
else
-- Если параметр "качество" не задан, то получаем значение качества предмета из базы данных.
item_quality = quality_map[mw.ustring.lower(r['quality'])]
end
-- Инициализируем переменную item_name как nil.
local item_name = nil
if frame.args[2] ~= nil and frame.args[2] ~= '' then
-- Если второй аргумент был передан и не пуст, то используем его в качестве названия предмета.
item_name = frame.args[2]
else
-- Если второй аргумент не был передан или пуст, то используем название предмета из базы данных.
item_name = r['_pageName']
end
-- Создаем строку с помощью шаблона строки.
itemHTML = string.format('%s <span class="%s">[[%s|<span class="ajaxttlink">%s</span>]]</span>',
item_icon, -- Иконка предмета.
item_quality, -- Качество предмета.
r['_pageName'], -- Название страницы предмета.
item_name -- Название страницы предмета для отображения внутри тега span.
)
end
-- Возвращаем строку.
return itemHTML
end
return p