Модуль:GiftData: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 157: | Строка 157: | ||
return mw.ustring.format('{{GiftIcon|%s|%s|size=%s|link=%s}}', gift, icon, size, link) | return mw.ustring.format('{{GiftIcon|%s|%s|size=%s|link=%s}}', gift, icon, size, link) | ||
end | |||
function p.getGiftCategories(frame) | |||
local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end | |||
local gift_data = require ('Module:GiftData/data') | |||
local categories_data = require ('Module:GiftData/categories') | |||
local gift = args['gift'] or args[1] | |||
local str = "" | |||
if gift_data[gift]["categories"] ~= nil then | |||
for _, v in ipairs(gift_data[gift]["categories"]) do | |||
str = str .. mw.ustring.format('[[Категория:%s]]\n', categories_data[v]) | |||
end | |||
end | |||
return frame:preprocess(tostring(str)) | |||
end | end | ||
return p | return p |
Версия от 06:37, 14 июня 2023
Данная группа модулей хранит информацию обо всех подарках героев из Крушителей подземелий. Перечень модулей:
- Модуль:GiftData - основные функции
- Модуль:GiftData/data - массив данных о подарках
- Модуль:GiftData/getter - сборщик данных о подарках
- Модуль:GiftData/gifts - массив данных с содержимым подарков
- Модуль:GiftData/categories - массив данных с категориями подарков
Информация из Модуль:GiftData/doc
local p = {} local lib = require('Module:Feature') function p.get(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local get = require ('Module:GiftData/getter') local gift = args['gift'] or args[1] local datatype = args['datatype'] or args[2] local output = args['output'] or args[3] or nil local result = get[datatype](gift) if output ~= nil and type(result) == "table" then if output == "csv" then return lib.tbl_concat{result} elseif output == "custom" then return frame:preprocess(lib.tbl_concat({result, prepend = args['prepend'], append = args['append'], separator = args['separator'], index = args["index"]})) elseif output == "template" then return frame:preprocess(lib.tbl_concat{result, prepend = "{{" .. args['t_name'] .. "|", append = "}}", separator = args['separator']}) end elseif result == nil then return "" else return result end end function p.getGifts(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local get = require ('Module:GiftData/getter') local gift = args['gift'] or args[1] local str = "" local source = get["source"](gift) str = mw.ustring.format('{{Gift|%s|source=%s}}', gift, source) return frame:preprocess(tostring(str)) end function p.getGiftPack(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local get = require ('Module:GiftData/getter') local gift = args['gift'] or args[1] local gift_data = "gifts_data" local count local result = get[gift_data](gift) for k, v in ipairs(result) do if tonumber(args['index']) == k then count = mw.ustring.format('%d', v[2]) end end return tonumber(count) end function p.getGiftType(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local get = require ('Module:GiftData/getter') local gift_type = require('Module:ItemData/loot/types') local gift = args['gift'] or args[1] local gift_data = "gifts_data" local type = "" local result = get[gift_data](gift) for k, v in ipairs(result) do if tonumber(args['index']) == k then type = mw.ustring.format('%s', gift_type[v[3]]) end end return tostring(type) end function p.getGiftItems(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local get = require ('Module:GiftData/getter') local libItem = require('Module:ItemData') local gift = args['gift'] or args[1] local gifts = "gifts" local divNode = mw.html.create('div') divNode :cssText('display: flex; flex-flow: row wrap; justify-content: center;') :newline() local result = get[gifts](gift) for k, v in ipairs(result) do if tonumber(args['index']) == k then for k2, v2 in ipairs(v) do divNode :tag('div') :addClass('loot-item') :wikitext(mw.ustring.format('%s', libItem.getItemIcon(v[k2][1], "60px", v[k2][2]))) :done() end end end return frame:preprocess(tostring(divNode)) end function p.getGiftSource(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local libHero = require('Module:HeroData') local get = require('Module:GiftData/getter') local gift = args['gift'] or args[1] local i = 0 local str = "" local result = get["source"](gift) if (result ~= "Добыча") then str = str .. mw.ustring.format('<h2>Способ получения</h2>') end if (result == "Подарок") then str = str .. mw.ustring.format('<div class="gift" style="width:fit-content; width: -moz-fit-content">') if get["hero"](gift) ~= nil then i = i + 1 str = str .. mw.ustring.format('%s', libHero.getHeroIcon(get["hero"](gift), "75px")) end if i == 0 then str = str .. "Нет данных" end str = str .. mw.ustring.format('</div>') end return frame:preprocess(tostring(str)) end function p.getGiftIcon(gift, size, link) local gift_data = require ('Module:GiftData/data') local icon = "" if size == nil then size = "30px" end if link == nil then link = "" end if lib.lookup(gift_data, gift) then icon = gift_data[gift]["icon"] else return gift end return mw.ustring.format('{{GiftIcon|%s|%s|size=%s|link=%s}}', gift, icon, size, link) end function p.getGiftCategories(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local gift_data = require ('Module:GiftData/data') local categories_data = require ('Module:GiftData/categories') local gift = args['gift'] or args[1] local str = "" if gift_data[gift]["categories"] ~= nil then for _, v in ipairs(gift_data[gift]["categories"]) do str = str .. mw.ustring.format('[[Категория:%s]]\n', categories_data[v]) end end return frame:preprocess(tostring(str)) end return p