Module:Sandbox/Emptylord/Patch

-- local p        = {} local lib      = require('Module:Feature') local json     = require('Module:JSON') local userError = require('Dev:User error') local FN       = require('Module:Filename')

local superclass  = { ["Enforcer"]   = "Fighter", ["Juggernaut"] = "Fighter", ["Skirmisher"] = "Fighter", ["Artillery"]  = "Slayer", ["Mage"]       = "Slayer", ["Ranger"]     = "Slayer", ["Rogue"]      = "Slayer", ["Disruptor"]  = "Support", ["Enchanter"]  = "Support", ["Warden"]     = "Support", ["Specialist"] = "Specialist", ["Unspecified"] = "Unspecified" }

local fulltype  = { ["Quality"]    = "Quality of life", ["Rework"]     = "Champion rework", ["Relaunch"]   = "Champion relaunch", ["Original"]   = "Original character", ["Adopted"]    = "Adopted character", ["Unspecified"] = "Unspecified" }

local fullstatus  = { ["Concept"]    = " EARLY CONEPT ", ["Draft"]     = " WORK IN PROGRESS ", ["Published"]   = "COMPLETED ", ["Outdated"]   = "OUTDATED ", ["Retired"]    = "RETIRED ", ["Unspecified"] = "Unspecified" }

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:Sandbox/Emptylord/Patch/getter') local champname = args['champname']    or args[1] local set      = tonumber(args['set']) or tonumber(args[2]) local datatype = args['datatype']      or args[3] local result = get[datatype](champname, set) if (datatype == "active" or dataype == "passive ") and result ~= nil then return frame:preprocess(result) elseif result == nil then return "" else return result end end

function p.getRoster(frame) local args; if frame.args == nil then args = lib.arguments(frame) else args = lib.arguments(frame.args) end local champData    = require('Module:Sandbox/Emptylord/Patch/data') local champTable   = {} local filter       = args['2'] or "None" local s            = "" for champname in pairs(champData) do       table.insert(champTable, champname) end table.sort(champTable) local grid = mw.html.create('div') grid :attr('id', 'emptylord-grid') :addClass('centered-grid') :css('clear', 'both') for _, champion in pairs(champTable) do       if filter == "None" or champData[champion]["type"] == filter then local gridnode = mw.html.create('div') local _title = champData[champion]["title"] or "" local _icon = champData[champion]["icon"] or "ChampionSquare.png" local _image = champData[champion]["image"] or "ChampionBanner.png" local _range = champData[champion]["range"] or "Unspecified" local _class = "" local _status = champData[champion]["projstatus"] or "Unspecified" local _type = champData[champion]["projtype"] or "Unspecified" local _cont = champData[champion]["contributors"] or "" local opacity = 1 local s = "" for i in string.gmatch(champData[champion]["class"], ",") do               _class = _class .. ""           end if t == "" then opacity = 0.15 end gridnode :addClass('grid-icon emptylord-icon roster-icon') :attr('data-range', _range) :attr('data-class', _class) :attr('data-status', _status) :attr('data-type', _type) :attr('data-search', _title) :css('opacity', opacity) :wikitext("") :done s = s .. " "               s = s .. " ".. fulltype[_type] .. " " .. fullstatus[_status] .. " "           	s = s .. " " .. champion .. " "            	s = s .. " "           	s = s .. " "           	s = s .. " "           	s = s .. " "           	s = s .. " "           s = s .. " "           if t == "" then grid :node(gridnode) :newline else grid :node(gridnode) :newline :wikitext(frame:preprocess(" " .. s .. " "))           end else --skip champion end end return grid end

return p -- --