Aktuelle Version |
Dein Text |
Zeile 3: |
Zeile 3: |
| -- Trims and parses the args into a table, then returns the table | | -- Trims and parses the args into a table, then returns the table |
| function p.normaliseArgs(frame) | | function p.normaliseArgs(frame) |
| local origArgs = frame:getParent().args
| | local origArgs = frame:getParent().args |
| local args = {}
| | local args = {} |
| | | |
| for k, v in pairs(origArgs) do
| | for k, v in pairs(origArgs) do |
| v = mw.text.trim(tostring(v))
| | v = mw.text.trim(tostring(v)) |
| if v ~= '' then
| | if v ~= '' then |
| args[k] = v
| | args[k] = v |
| end
| |
| end | | end |
| | | end |
| return args
| | |
| | return args |
| end | | end |
|
| |
|
| function p.checkImage(name, too_expensive) | | function p.checkImage(name, too_expensive) |
| local icon = name:gsub('%s+', '') .. '_Icon.png'
| | local icon = name:gsub('%s+', '') .. '_Icon.png' |
| if too_expensive then
| | if too_expensive then |
| return icon
| | return icon |
| end
| | end |
| | |
| if mw.title.makeTitle('File', icon).file.exists then | |
| return icon
| |
| else
| |
| return 'NoImage.png'
| |
| end
| |
| end
| |
| | |
| local function in_array(item, array)
| |
| -- Should only use on short arrays
| |
| local set = {}
| |
| for _, l in ipairs(array) do
| |
| set[l] = true
| |
| end
| |
| return set[item] ~= nil
| |
| end
| |
| | |
| ---@param name string
| |
| ---@param size string|nil
| |
| ---@param bg string|nil
| |
| ---@param border string|nil
| |
| ---@param too_expensive boolean|nil
| |
| function p.build_icon(name, link, size, bg, border, too_expensive)
| |
| -- Size options are iconNormal or iconRecipe - 64px or 44px - defaults to iconNormal
| |
| | |
| local L = require('Module:Localization') -- local import
| |
| | |
| if not size then
| |
| size = 'iconNormal'
| |
| end
| |
| local icon_bg
| |
| if bg then
| |
| icon_bg = bg
| |
| end
| |
| local icon_border
| |
| if border then
| |
| icon_border = border
| |
| end
| |
| | |
| local item_data = mw.loadData('Module:ItemData')
| |
| local item = item_data.items[name]
| |
| local image
| |
| if item then
| |
| if item['group'] == L.t('Skill Books') then
| |
| image = 'SkillBook.png'
| |
| icon_bg = 'iconGold'
| |
| elseif item['group'] == L.t('Skill Scrolls') then
| |
| image = 'Skill Scroll'
| |
| icon_bg = 'iconGold'
| |
| -- Attempt to generate skill page
| |
| elseif in_array(L.t('Basic Research'), item['tagGroups']) then
| |
| image = string.sub(item['untranslated'], 1, -7):gsub('%s+', '') .. '_Icon.png'
| |
| icon_bg = 'paperBasic'
| |
| elseif in_array(L.t('Advanced Research'), item['tagGroups']) then
| |
| image = string.sub(item['untranslated'], 1, -10):gsub('%s+', '') .. '_Icon.png'
| |
| icon_bg = 'paperAdvanced'
| |
| elseif in_array(L.t('Modern Research'), item['tagGroups']) then
| |
| image = string.sub(item['untranslated'], 1, -8):gsub('%s+', '') .. '_Icon.png'
| |
| icon_bg = 'paperModern'
| |
| else
| |
| image = p.checkImage(item['untranslated'], too_expensive)
| |
| end
| |
| if not icon_bg then
| |
| if item['group'] == L.t('Food') then
| |
| icon_bg = 'iconGreen'
| |
| elseif item['carried'] == L.t('Hands') then
| |
| icon_bg = 'iconBrown'
| |
| end
| |
| end
| |
| else
| |
| image = p.checkImage(name, too_expensive)
| |
| end
| |
| | |
| if not icon_bg then
| |
| icon_bg = 'iconBlue'
| |
| end
| |
| | |
| if border then
| |
| icon_border = border
| |
| else
| |
| icon_border = 'borderBlue'
| |
| end
| |
| | |
| if size == 'iconNormal' then
| |
| icon_container = 'iconContainer'
| |
| else
| |
| icon_container = 'iconContainerSmall'
| |
| end
| |
| | |
| if not link then
| |
| link = ''
| |
| else
| |
| link = '|link='..link
| |
| end
| |
| | |
| local file = '[[File:' .. image .. '|frameless|class=' .. size .. ' ' .. icon_bg .. link ..']]'
| |
| return '<div class="' .. icon_container .. '"><div class="iconStack">' .. file .. '</div><div class="iconBorder ' .. icon_border .. '" style="position:absolute;"></div></div>'
| |
| end | |
|
| |
|
| function p.Icon(frame)
| | if mw.title.makeTitle('File', icon).file.exists then |
| args = p.normaliseArgs(frame) | | return icon |
| return p.build_icon(args.name, args.link, args.size, args.bg, args.border, args.too_expensive) | | else |
| | return 'NoImage.png' |
| | end |
| end | | end |
|
| |
|
| -- mw.LoadData prevents #table from working correctly | | -- mw.LoadData prevents #table from working correctly |
| function p.tableLen(tbl) | | function p.tableLen(tbl) |
| local count = 0
| | local count = 0 |
| for _, v in ipairs(tbl) do | | for _, v in ipairs(tbl) do |
| if v == nil then
| | if v == nil then |
| return count
| | return count |
| end
| | end |
| count = count + 1
| | count = count + 1 |
| end | | end |
| return count
| | return count |
| end | | end |
|
| |
|
| return p | | return p |