Module:曲师列表:修订间差异
备注按艺术家取参与;p.rank 支持 mode=署名|参与(参与=署名归属∪参与记录) |
输出加 __NOCONTENTCONVERT__/__NOTITLECONVERT__:署名与曲名保持 UTF-8 原字,不做繁简变体转换(无需给名字加包裹,无 DOM 开销) |
||
| (未显示同一用户的3个中间版本) | |||
| 第16行: | 第16行: | ||
local parse = require('模块:署名解析') | local parse = require('模块:署名解析') | ||
local norm = parse.norm | local norm = parse.norm | ||
-- ===== 工具 ===== | -- ===== 工具 ===== | ||
| 第153行: | 第104行: | ||
if not data then return '<span class="error">数据页错误</span>' end | if not data then return '<span class="error">数据页错误</span>' end | ||
local map = loadJson(MAP_TITLE) or {} | local map = loadJson(MAP_TITLE) or {} | ||
local lk = buildLookup(map) | local lk = parse.buildLookup(map) | ||
local roles = loadJson('模板:曲师参与.json') or {} | local roles = loadJson('模板:曲师参与.json') or {} | ||
local sets, display = {}, {} | local sets, display = {}, {} | ||
| 第162行: | 第113行: | ||
local raw = song['曲师'] | local raw = song['曲师'] | ||
if type(raw) == 'table' then raw = raw[1] end | if type(raw) == 'table' then raw = raw[1] end | ||
local parts = attribute(lk, raw) or parse.parts(raw) | local parts = parse.attribute(lk, raw) or parse.parts(raw) | ||
local seen = {} | local seen = {} | ||
for _, pt in ipairs(parts) do | for _, pt in ipairs(parts) do | ||
| 第218行: | 第169行: | ||
table.insert(out, '|}') | table.insert(out, '|}') | ||
if emitted == 0 then return '<span class="error">没有达到门槛(' .. minN .. ')的曲师</span>' end | if emitted == 0 then return '<span class="error">没有达到门槛(' .. minN .. ')的曲师</span>' end | ||
return frame:preprocess(table.concat(out, '\n')) | return frame:preprocess('__NOCONTENTCONVERT__\n__NOTITLECONVERT__\n' .. table.concat(out, '\n')) | ||
end | end | ||
| 第228行: | 第179行: | ||
local map = loadJson(MAP_TITLE) or {} | local map = loadJson(MAP_TITLE) or {} | ||
local roles = loadJson('模板:曲师参与.json') or {} -- 参与(作曲/作词/人声…):人工知识,并入备注 | local roles = loadJson('模板:曲师参与.json') or {} -- 参与(作曲/作词/人声…):人工知识,并入备注 | ||
local lk = buildLookup(map) | local lk = parse.buildLookup(map) | ||
local intros = loadIntros() | local intros = loadIntros() | ||
| 第236行: | 第187行: | ||
local raw = song['曲师'] | local raw = song['曲师'] | ||
if type(raw) == 'table' then raw = raw[1] end | if type(raw) == 'table' then raw = raw[1] end | ||
local parts = attribute(lk, raw) or parse.parts(raw) | local parts = parse.attribute(lk, raw) or parse.parts(raw) | ||
local seen = {} | local seen = {} | ||
for _, pt in ipairs(parts) do | for _, pt in ipairs(parts) do | ||
| 第319行: | 第270行: | ||
table.insert(out, '\n[[Category:曲师]]') | table.insert(out, '\n[[Category:曲师]]') | ||
return frame:preprocess(table.concat(out, '\n')) | return frame:preprocess('__NOCONTENTCONVERT__\n__NOTITLECONVERT__\n' .. table.concat(out, '\n')) | ||
end | end | ||
return p | return p | ||