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

Admin​(留言 | 贡献)
两段式映射:把 显示名 与 _写法 也作为别名(等价旧映射表的键→显示名)
Admin​(留言 | 贡献)
两段式映射:马甲别名优先注册(避免与显示名/写法冲突)
第22行: 第22行:
if type(data) ~= 'table' or type(data['主名义']) ~= 'table' then return nil end
if type(data) ~= 'table' or type(data['主名义']) ~= 'table' then return nil end
local alias, collab, extra = {}, {}, {}
local alias, collab, extra = {}, {}, {}
for _, m in pairs(data['主名义']) do
for _, m in pairs(data['主名义']) do                     -- 第一趟: 显示名/写法
if type(m) == 'table' and m['显示名'] then
if type(m) == 'table' and m['显示名'] then
local dn = m['显示名']
local dn = m['显示名']
extra[parse.norm(dn)] = m
extra[parse.norm(dn)] = m
alias[parse.norm(dn)] = dn                     -- 显示名本身
alias[parse.norm(dn)] = dn
for _, a in ipairs(m['马甲'] or {}) do alias[parse.norm(a)] = dn end
for _, w in ipairs(m['_写法'] or {}) do alias[parse.norm(w)] = dn end
for _, w in ipairs(m['_写法'] or {}) do alias[parse.norm(w)] = dn end
end
end
for _, m in pairs(data['主名义']) do                    -- 第二趟: 马甲优先(后写覆盖)
if type(m) == 'table' and m['显示名'] then
for _, a in ipairs(m['马甲'] or {}) do alias[parse.norm(a)] = m['显示名'] end
end
end
end
end