Module:曲师列表:修订间差异

Admin​(留言 | 贡献)
JSON 流水线更新渲染模块
Admin​(留言 | 贡献)
JSON 流水线更新渲染模块
第7行: 第7行:
local DATA_TITLE = '模板:曲目列表.json'
local DATA_TITLE = '模板:曲目列表.json'
local MAP_TITLE = '模板:曲师映射.json'
local MAP_TITLE = '模板:曲师映射.json'
local INTRO_TITLE = '模板:曲师简介'  -- 手工简介数据页(可编辑 wikitext)


local DIFFS = { 'CASUAL', 'TOUGH', 'INSANE', 'PRO' }
local DIFFS = { 'CASUAL', 'TOUGH', 'INSANE', 'PRO' }
第73行: 第74行:
if not ok then return nil end
if not ok then return nil end
return data
return data
end
-- 解析简介数据页: 每个 == 名字 == 小节为该名字的介绍(wikitext 原样输出)
local function loadIntros()
local t = mw.title.new(INTRO_TITLE)
if not t or not t.exists then return {} end
local content = (t:getContent() or ''):gsub('<noinclude>.-</noinclude>', '')
local map, cur = {}, nil
for line in mw.text.gsplit(content, '\n') do
local h = line:match('^==%s*(.-)%s*==%s*$')
if h then
cur = norm(h)
map[cur] = ''
elseif cur then
map[cur] = map[cur] .. line .. '\n'
end
end
for k, v in pairs(map) do
v = mw.text.trim(v)
v = v:gsub('<!%-%-.-%-%->', '')  -- 去掉占位注释
map[k] = mw.text.trim(v)
end
return map
end
end


第89行: 第113行:
end
end
local map = loadJson(MAP_TITLE) or {}
local map = loadJson(MAP_TITLE) or {}
local intros = loadIntros()


-- 归集: key -> { display, intro, sort, songs = { {song=..., ann=...} } }
-- 归集: key -> { display, intro, sort, songs = { {song=..., ann=...} } }
第105行: 第130行:
artists[key] = {
artists[key] = {
display = m['显示名'] or pt.base,
display = m['显示名'] or pt.base,
intro = m['简介'] or '',
intro = (m['简介'] and m['简介'] ~= '') and m['简介']
or intros[key] or intros[norm(m['显示名'] or pt.base)] or '',
sort = m['排序键'] or '',
sort = m['排序键'] or '',
songs = {},
songs = {},