Module:Img
Jump to navigation
Jump to search
local p = {} local origArgs = {} local name local width = 'auto' local height = 'auto' local add_word local only_url local no_link local link local data_module_names = { item = 'Module:Items/data', monster = 'Module:Monsters/data', location = 'Module:Location/data', } local loaded_data_modules = {} function p.loadData (data_type) local module_name = data_module_names[data_type] if loaded_data_modules[module_name] == nil then loaded_data_modules[module_name] = mw.loadData(module_name) end return loaded_data_modules[module_name] end --Search the item data for item name and return its id local function findIdByName(name, type) local items = p.loadData(type) local lname = string.lower(name) local id = nil for k,v in pairs(items) do if lname == string.lower(v.name) then id = k return id end end return id end --Find the image from the name function p.findImage(name) local id name = string.lower(name) local image = p.loadData('item')[name] --If name is a number, pass in as an item ID if tonumber(name) then id = name else id = p.findItemID(name) end --If id is valid if id then local item = p.loadData('item')[id] local url = item.itemImage local icon = item.itemIcon local realname = item.name if icon then url = icon end image = {name = realname, image = url} if not (image.name and image.image) then image = nil end end return image end --Find the image from the name local function findImage(name, origSource) local id = nil local source = origSource if source == '' then for k,v in pairs(data_module_names) do id = findIdByName(name, k) if id ~= nil then source = k break end end else id = findIdByName(name, source) end local sourceData = p.loadData(source)[id] realname = sourceData.name if source == 'item' then local item = sourceData if item.itemIcon then return item.itemIcon else return item.itemImage end elseif source == 'monster' then return sourceData.image elseif source == 'location' then return sourceData.locationImage end return '' end --Create a string to output local function formatImage(url) local s = '' local rs = nil if url then if url:sub(1,1) ~= '/' then url = '/' .. url end url = 'https://idlescape.com' .. url s = url if only_url == '1' then rs = s end s = 'src="' .. s .. '"' s = s .. ' alt="' .. realname .. '"' s = s .. ' width="' .. width .. '"' s = s .. ' height="' .. height .. '"' s = '<img ' .. s .. '>' if add_word == '1' then s = s .. ' ' .. realname end if no_link == '1' then rs = s end if not (link and link:match('%S')) then link = realname end s = '[[' .. link .. '|' .. s .. ']]' else s = '[[' .. name .. ']]' .. '{{?}}' end if not rs then rs = s end return rs end function p.image(frame) return p._image(frame:getParent().args) end function p._image(args) local name = args[1] width = 20 height = 20 add_word = false realname = '' local source = '' if args[2] then width = args[2] end if args[3] then height = args[3] end if args[4] then add_word = args[4] end if args[5] then source = args[5] end if not name then return '' end local image = findImage(name, source) return formatImage(image) end return p