local p = {} local function errormsg (msg) return require('Module:Error').error{ [1] = '[[Module:Reply_to]]錯誤:' .. msg } end local function nouser (template) return errormsg( '使用[[' .. template .. ']]時出現錯誤:並無提供-{zh:使用者名稱;zh-tw:使用者名稱;zh-cn:用户名;}-。模板用法見於[[' .. template .. ']]。' ) end local function maxuser (template, count) return errormsg( '[[' .. template .. ']]最多支持' .. (count or '50') .. '个-{zh-hant:用戶;zh-tw:使用者;zh-hans:用户;}-。如果需要超过' .. (count or '50') .. '个,必须使用多个模板。模板用法見於[[' .. template .. ']]。' ) end function p._replyto(args) local ret = {} local error = '' local format = string.format local template = args['template'] or 'Template:Reply to' local max = tonumber(args['max']) or 50 if max > 50 then error = ('受於MediaWiki系統限制,最多只能同時ping50人。') max = 50 end local i = 1 while true do username = args[i] if (username ~= nil) then if username == '' then else ret[#ret + 1] = '[[User:' .. username .. '|' .. (args['label' .. i] or username) .. ']]' end if #ret >= max then error = maxuser(template,max) break end i = i +1 else break end end ret = mw.text.listToText(ret,(args['c'] or '、'),(args['c'] or '、')) if ret == '' then return nouser(template) end ret = (args['@'] or '@') .. '-{' .. ret .. '}-' .. (args['p'] or ':') return mw.text.tag('span', {['class']='template-ping'}, ret) .. error end function p.replyto(frame) local args = {} if frame.args.parent then args = frame:getParent().args else args = frame.args end args['template'] = frame.args['template'] return p._replyto(args) end function p.ping(frame) return p.replyto(frame) end function p._unping(args) local ret = {} local error = '' local format = string.format local i = 1 while true do username = args[i] if (username ~= nil) then if username == '' then else ret[#ret + 1] = '[[:cmn:User:' .. username .. '|' .. (args['label' .. i] or username) .. ']]' end if #ret >= 50 then error = maxuser('Template:Unping') break end i = i +1 else break end end ret = mw.text.listToText(ret,'、','、') if ret == '' then return nouser('Template:Unping') end ret = (args['@'] or '@') .. '-{' .. ret .. '}-' .. (args['p'] or ':') return mw.text.tag('span', {['class']='template-unping'}, ret) .. error end function p.unping(frame) local args = frame:getParent().args return p._unping(args) end function p._hidden_ping(args) local ret = {} local error = '' local format = string.format local i = 1 while true do username = args[i] if (username ~= nil) then if username == '' then else ret[#ret + 1] = '[[User:' .. username .. '|' .. (args['label' .. i] or username) .. ']]' end if #ret >= 50 then error = maxuser('Template:Noping') break end i = i +1 else break end end ret = mw.text.listToText(ret) if ret == '' then return nouser('Template:Noping') end ret = '<span style="display:none">' .. ret .. '</span>' .. error return ret end function p.hidden_ping(frame) local args = frame:getParent().args return p._hidden_ping(args) end return p