Module:沙盒/盐棋/Sandbox:修订间差异

添加616字节 、​ 2024年2月17日 (星期六)
version support
(模板试验)
(version support)
第6行: 第6行:
local function opt(format, value, default)
local function opt(format, value, default)
return value and format:format(tostring(value)) or default
return value and format:format(tostring(value)) or default
end
local versions = {date = {}, name = {}}
local function verQuery(mDate)
local dDate = tonumber(lang:formatDate('Ynj', '@' .. mDate))
local dates = versions.date
local l, r = 1, #dates
while l <= r do
local index = math.floor((l + r) / 2)
if dDate == dates[index] then
return versions.name[index]
elseif dDate < dates[index] then
r = index - 1
else
l = index + 1
end
end
return '?'
end
end


第13行: 第31行:
local function main(plat, frame)
local function main(plat, frame)
local lSong = mad.listOf('songs', plat)
local lSong = mad.listOf('songs', plat)
-- pack index
-- duration
-- version
local mid = {}
local mid = {}
for _, song in ipairs(lSong) do
for _, song in ipairs(lSong) do
local id = song.id
local id = song.id
local function input(...) return frame.args[mw.text.listToText({id, ...}, '.', '.')] end
local function input(...) return frame.args[table.concat({id, ...}, '.')] end
if id ~= 'lasteternity' then
if id ~= 'lasteternity' then
local query = mad.songQueryWrap(song)
local query = mad.songQueryWrap(song)
第38行: 第53行:
end
end
table.insert(row, title)
table.insert(row, title)
table.insert(row, input '音乐家' or mw.ustring.gsub(song.artist, '[一-龠ぁ-ゔァ-ヴー々〆〤ヶ]+', function(v)
table.insert(row, input '音乐家' or mw.ustring.gsub(song.artist, '[一-龠ぁ-ゔァ-ヴー々〆〤ヶ]+', function(v) return langJa:format(v) end))
return langJa:format(v)
end))
table.insert(row, input '所属曲包' or packItem['name'])
table.insert(row, input '所属曲包' or packItem['name'])
local bpm = input 'BPM' or song.bpm_base
local bpm = input 'BPM' or song.bpm_base
第46行: 第59行:
table.insert(row, input '时长' or ' - ')
table.insert(row, input '时长' or ' - ')
if plat ~= 'ns' then
if plat ~= 'ns' then
table.insert(row, song.version .. '.')
local version = input '收录版本' or verQuery(song.date)
table.insert(row, song.version .. '.' .. version)
end
end
for idx, key in ipairs {'PST', 'PRS', 'FTR', 'BYD'} do
for idx, key in ipairs {'PST', 'PRS', 'FTR', 'BYD'} do
第73行: 第87行:
end
end


function p.mobile(frame) return main('mobile', frame:getParent()) end
function p.mobile(frame)
for record in mw.text.gsplit(frame.args.versions) do
local date, name = record:match '(%d+):(.*)'
table.insert(versions.date, tonumber(date))
table.insert(versions.name, name)
end
return main('mobile', frame:getParent())
end
function p.ns(frame) return main('ns', frame:getParent()) end
function p.ns(frame) return main('ns', frame:getParent()) end


return p
return p
1,124

个编辑