Module:曲师列表:修订间差异
两段式映射:把 显示名 与 _写法 也作为别名(等价旧映射表的键→显示名) |
两段式映射:马甲别名优先注册(避免与显示名/写法冲突) |
||
| 第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 _, 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 | ||