Module:Sock list
Documentation for this module may be created at Module:Sock list/doc
local p = {} local getArgs = require('Module:Arguments').getArgs local isIp = require('Module:IPAddress').isIp -- Use the isIp function 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 = (isIp({args = {sock}}) ~= "") -- Pass 'sock' as part of a table to 'isIp' 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 = "<s>" .. text .. "</s>" 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=" .. mw.uri.encode(args.master or "") for i, sock in ipairs(args) do if not args['strike' .. i] then url = url .. "&users=" .. mw.uri.encode(sock) end 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 or "") .. "&user=" .. mw.uri.encode(args[1] or "") return "[" .. url .. " Interaction Timeline]" end function toolSpiTools(args) local url = "https://spi-tools.toolforge.org/spi/?caseName=" .. mw.uri.encode(args.master or "") return "[" .. url .. " SPI Tools]" 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("<b>Tools</b>: ") :node(toolEIA(args)) :wikitext(" <b>·</b> ") :node(toolTimeline(args)) :wikitext(" <b>·</b> ") :node(toolSpiTools(args)) socklist:node(tools) end return socklist end return p