Module:Silent1/sandbox
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', other = 'Module:OtherImages/data' } local loaded_data_modules = {} --Load data modules function p.loadData (data_type) local module_name = data_module_names[data_type] if loaded_data_modules[data_type] == nil then loaded_data_modules[data_type] = mw.loadData(module_name) end end --Search the item data for item name and return its id function p.findItemID(name) p.loadData('item') local items = loaded_data_modules['items'] 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) p.loadData('other') local image = loaded_data_modules['other'][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 p.loadData('item') local item = loaded_data_modules['items'][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 --Create a string to output local function _image() local image = p.findImage(name) local s = '' local rs = nil if image then local realname = image['name'] local url = image['image'] 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 --Used through a template function p.image(frame) return p._image(frame:getParent()) end --For directly invoking function p._image(frame) origArgs = frame.args name = origArgs[1] arg = origArgs[2] if not arg then width = 20 else arg:match('%S') width = arg end arg = origArgs[3] if arg and arg:match('%S') then height = arg end add_word = origArgs['word'] only_url = origArgs['url'] no_link = origArgs['nolink'] link = origArgs['link'] if not name then return '' end return _image() end return p