打开主菜单
首页
随机
登录
设置
关于Arcaea中文维基
免责声明
搜索
查看“Module:ChartConstant”的源代码
←
Module:ChartConstant
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
local mad = require 'Module:AnotherData' local p = {} -- ns待补充(ns也不需要这个) local function itData(datas, cc) cc = cc or 13 local step, format = unpack(cc > 11 and {1, '%d'} or {.1, '%.1f'}) cc = cc - step local id = format:format(cc) local data = datas[id] if not data then return nil end return cc, id, data end function p.main() local datas = {} local songCcs = mw.text.jsonDecode(mw.title.new('ChartConstant.json', 'Template'):getContent()) for _, song in ipairs(mad.listOf 'songs') do local id, titleBase, dateBase = song.id, song.title_localized.en, song.date local songCc = songCcs[id] or {} -- local query = mad.songQueryWrap(song) local link = query.linkTitle:match '([^%|]+)' for _, chart in ipairs {}, song.difficulties, 1 do local rc = chart.ratingClass + 1 local chartCc = songCc[rc] -- fk lua donot support continue. use single-loop & break for subst repeat if not chartCc or chartCc.old ~= false then break end local nCc = chartCc.constant if nCc < 8 then break end local title, date = (chart.title_localized or {}).en or titleBase, chart.date or dateBase local rowId, sCc, rowAttr if nCc >= 11 then rowId = ('%d'):format(nCc) sCc = ('%.1f'):format(nCc) rowAttr = {['高度'] = '154px'} else rowId = ('%.1f'):format(nCc) end local rowData = datas[rowId] if not rowData then rowData = {attr = rowAttr} datas[rowId] = rowData end table.insert(rowData, { data = {title, song.id, ({'PST', 'PRS', 'FTR', 'BYD', 'ETR'})[rc], link = link, CC = sCc}, sort = {nCc, rc, date} }) until (true) end end local frame = mw.getCurrentFrame() local text = mw.html.create 'div':addClass 'notaninfobox dstable' for _, rowId, rowData in itData, datas do text = text :tag 'div':addClass 'ds':wikitext(rowId):done() :tag 'div':addClass 'number' :wikitext(frame:expandTemplate {title = '组排列', args = rowData.attr}) table.sort(rowData, function(a, b) a, b = a.sort, b.sort if a[1] ~= b[1] then return a[1] > b[1] end if a[2] ~= b[2] then return a[2] > b[2] end return a[3] < b[3] end) for _, rowItem in ipairs(rowData) do text:wikitext(frame:expandTemplate {title = '组排单元', args = rowItem.data}) end text = text:wikitext(frame:expandTemplate {title = '组排列-end'}):done() end return tostring(text) end function p.detail() local datas = {} local songCcs = mw.text.jsonDecode(mw.title.new('ChartConstant.json', 'Template'):getContent()) for _, song in ipairs(mad.listOf 'songs') do local id = song.id local songCc = songCcs[id] or {} -- local query = mad.songQueryWrap(song) local data = {query.linkTitle} local sort = {0, song.date} table.insert(datas, {data = data, sort = sort}) for _, chart in ipairs(song.difficulties) do local rc = chart.ratingClass + 1 local chartCc = songCc[rc] repeat if not chartCc then break end local nCc = chartCc.constant if not chart.date then sort[1] = nCc end local sCc = ('%.1f'):format(nCc) data[rc + 1] = chartCc.old ~= false and tostring(mw.html.create 'span':addClass 'old-constant':wikitext(sCc)) or sCc until (true) end for i = 2, 6 do data[i] = data[i] or ' ' end end table.sort(datas, function(a, b) a, b = a.sort, b.sort if a[1] == b[1] then return a[2] < b[2] end return a[1] > b[1] end) local texts = {} local template = '|-\n|[[%s]]' .. ('||%s'):rep(5) for _, value in ipairs(datas) do table.insert(texts, template:format(unpack(value.data))) end return table.concat(texts, '\n') end return p
本页使用的模板:
Module:ChartConstant/doc
(
查看源代码
)
返回
Module:ChartConstant
。