Module:Sock list

local p = {} local getArgs = require('Module:Arguments').getArgs local isIpOrRange = require('Module:IPAddress')._isIpOrRange local yesno = require('Module:Yesno')

function p.main(frame) local args = getArgs(frame) return p._main(frame, args) end

function listEntry(frame, args, sockNum, sock) local template = (isIpOrRange(sock) ~= "") and (args.IP_template or args.template or 'checkip') or (args.account_template or args.template or 'checkuser') local li = mw.html.create('li') local text = frame:expandTemplate{title=template, args={sock, ['master name']=args.master}} if args['strike' .. sockNum] then text = " " .. text .. " "	end local note = args['note' .. sockNum] if note then text = text .. " " .. note end li:wikitext(text) return li end

function toolEIA(args) local url = "https://tools.wmflabs.org/sigma/editorinteract.py?users=" if args.master then url = url .. mw.uri.encode(args.master) end for i, sock in ipairs(args) do url = url .. "&users=" .. mw.uri.encode(sock) end return "[" .. url .. " Editor interaction utility]" end

function toolTimeline(args) local url = "https://tools.wmflabs.org/interaction-timeline?wiki=enwiki&user=" .. mw.uri.encode(args.master) .. "&user=" .. mw.uri.encode(args[1] or "") return "[" .. url .. " Interaction Timeline]" end

function toolCompare(args) local url = "https://tools.wmflabs.org/betacommand-dev/UserCompare/" .. mw.uri.encode(args.master) return "[" .. url .. " User compare report]" end

function p._main(frame, args) local socklist = mw.html.create('ul') if yesno(args.hidden) then socklist:attr('style', 'display:none;') end if args[1] then for sockNum, sock in ipairs(args) do			if args.master ~= sock or not yesno(args.remove_master or 'no') then socklist:node(listEntry(frame, args, sockNum, sock)) end end end if yesno(args.tools_link) then local tools = mw.html.create('li') tools :attr('class', 'plainlinks') :wikitext("Tools: ") :node(toolEIA(args)) :wikitext(" • ") :node(toolTimeline(args)) :wikitext(" • ") :node(toolCompare(args)) :wikitext(" Auto-generated every hour. ") socklist:node(tools) end return socklist end

return p