Module:曲师列表:修订间差异
两段式映射:马甲别名优先注册(避免与显示名/写法冲突) |
新增「未确认名义」段(中文键改为字符串键,修正语法);曲师列表计入 special |
||
| 第33行: | 第33行: | ||
if type(m) == 'table' and m['显示名'] then | if type(m) == 'table' and m['显示名'] then | ||
for _, a in ipairs(m['马甲'] or {}) do alias[parse.norm(a)] = m['显示名'] end | for _, a in ipairs(m['马甲'] or {}) do alias[parse.norm(a)] = m['显示名'] end | ||
end | |||
end | |||
for _, u in pairs(data['未确认名义'] or {}) do -- 第三段: 主名义未确认的马甲 | |||
if type(u) == 'table' and u['名义'] then | |||
local dn = u['名义'] | |||
local e = { ['显示名'] = dn, ['马甲'] = {}, ['_未确认'] = true } | |||
extra[parse.norm(dn)] = e | |||
alias[parse.norm(dn)] = dn | |||
end | end | ||
end | end | ||
| 第129行: | 第137行: | ||
local data, err = validator.load(DATA_TITLE) | local data, err = validator.load(DATA_TITLE) | ||
if not data then return nil, err end | if not data then return nil, err end | ||
local all = {} | |||
for _, s in ipairs(data.songs or {}) do all[#all + 1] = s end | |||
for _, s in ipairs(data.special or {}) do all[#all + 1] = s end -- 站长要求: special(石墩子)也计入曲师列表 | |||
return all | |||
end | end | ||
| 第160行: | 第171行: | ||
or intros[key] or intros[norm(m['显示名'] or pt.base)] or '', | or intros[key] or intros[norm(m['显示名'] or pt.base)] or '', | ||
sort = m['排序键'] or '', | sort = m['排序键'] or '', | ||
unconfirmed = m['_未确认'] or false, | |||
unconfirmed = m['_未确认'] or false, | |||
songs = {}, | songs = {}, | ||
} | } | ||
| 第187行: | 第200行: | ||
-- 曲目数实时统计(替代此前映射表里无法维护的 _曲目数) | -- 曲目数实时统计(替代此前映射表里无法维护的 _曲目数) | ||
table.insert(out, '<div style="font-size:92%;color:#555">共 ' .. "'''" .. #a.songs .. "'''" .. ' 首曲目</div>') | table.insert(out, '<div style="font-size:92%;color:#555">共 ' .. "'''" .. #a.songs .. "'''" .. ' 首曲目</div>') | ||
if a.unconfirmed then | |||
table.insert(out, '<div style="font-size:92%;color:#b45309">主名义待确认</div>') | |||
end | |||
if a.intro ~= '' then | if a.intro ~= '' then | ||
table.insert(out, a.intro) | table.insert(out, a.intro) | ||