Module:Sock list/sandbox explained

local p = local getArgs = require('Module:Arguments').getArgslocal isIpOrRange = require('Module:IPAddress')._isIpOrRangelocal 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 if args['strike' .. sockNum] then text = "" .. text .. "" end local note = args['note' .. sockNum] if note then text = text .. " " .. note end li:wikitext(text) return liend

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("Tools: ") :node(toolEIA(args)) :wikitext(" • ") :node(toolTimeline(args)) :wikitext(" • ") :node(toolSpiTools(args)) socklist:node(tools) end return socklistend

return p