打开主菜单
首页
随机
登录
设置
关于Arcaea中文维基
免责声明
搜索
查看“Module:AnotherTool”的源代码
←
Module:AnotherTool
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local lang = mw.language.getContentLanguage() local getArgs = require 'Module:Arguments'.getArgs local p = {} local function purge(args) -- Make the URL local url do local title if args.page then title = mw.title.new(args.page) if not title then error(string.format( "'%s'不是有效的页面名称", args.page ), 2) end else title = mw.title.getCurrentTitle() end if args.jumpto then title.fragment = args.jumpto end url = title:fullUrl {action = 'purge'} -- &_={{CURRENTTIMESTAMP}} end -- Make the display local purgeText, purgeTitle = args[1] or '清除缓存', args[2] or '更新服务器所缓存的页面数据' local display if args.page then display = purgeText else display = tostring(mw.html.create 'span' :attr('title', purgeTitle) :wikitext(purgeText) ) end -- Output the HTML local root = mw.html.create 'span' root :addClass 'noprint' -- :addClass 'plainlinks' -- :addClass 'purgelink' :wikitext(('[%s %s]'):format(url, display)) return tostring(root) end local function formatMessage(secondsLeft, event, color) local chosenIntervals if secondsLeft >= 86400 then chosenIntervals = {'days', 'hours'} elseif secondsLeft >= 3600 then chosenIntervals = {'hours'} else chosenIntervals = {'minutes', 'seconds'} end local timeLeft = lang:formatDuration(secondsLeft, chosenIntervals) -- Color and bold the numbers, because it makes them look important. timeLeft = string.gsub(timeLeft, '(%d+)', '<span style="color: ' .. (color or '#66F') .. '; font-weight: bold;">%1</span>') return string.format('距离%s尚余%s', event, timeLeft) end local function countdown(args) if not (args.month and args.day) then return '<strong class="error">错误:必须指定 month 和 day</strong>' end local timeArgs = {year = args.year or os.date '*t'.year, month = args.month, day = args.day, hour = args.hour, min = args.minute, sec = args.second} for k, v in pairs(timeArgs) do if not tonumber(v) then error('参数' .. k .. '无法解析为数字:' .. v) end end local eventTime = os.time(timeArgs) local timeToStart = os.difftime(eventTime, os.time()) -- (future time - current time) local text if timeToStart > 0 then -- Event has not begun yet text = formatMessage(timeToStart, args.event or '这次事件', args.color) elseif args.duration then local timeToEnd if args['duration unit'] then -- Duration is in unit other than seconds, use formatDate to add timeToEnd = tonumber(lang:formatDate('U', '@' .. tostring(timeToStart) .. ' +' .. tostring(args.duration) .. ' ' .. args['duration unit'])) else timeToEnd = timeToStart + (tonumber(args.duration) or error('args.duration应该是秒数', 0)) end if timeToEnd > 0 then -- Event is in progress text = args.eventstart or formatMessage(timeToEnd, (args.event or '这次事件') .. '完结', args.color) else -- Event had a duration and has now ended text = args.eventend or ((args.event or '这次事件') .. '已完结') end else -- Event had no duration and has begun -- 已经开始? text = args.eventend or ((args.event or '这次事件') .. '已完结') end local refreshLink if args.purge then refreshLink = '<small>' .. purge '更新' .. '</small>' else refreshLink = '' end return text .. refreshLink end local function makeInvokeFunc(func, opt) return function(frame) local args = getArgs(frame, opt) return func(args) end end p.countdown = makeInvokeFunc(countdown) p.purge = makeInvokeFunc(purge, {parentOnly = true}) return p
本页使用的模板:
Module:AnotherTool/doc
(
查看源代码
)
返回
Module:AnotherTool
。