LLWiki正在建设中,欢迎加入我们!
“模块:Radio-list”的版本间差异
跳转到导航
跳转到搜索
小 |
小 |
||
第1行: | 第1行: | ||
local getArgs = require('Module:Arguments').getArgs |
local getArgs = require('Module:Arguments').getArgs |
||
local p = {} |
local p = {} |
||
--[[ |
|||
function date( |
function date(str) |
||
local skip = 1 |
local skip = 1 |
||
if |
if str:sub(1, 1) == 's' then |
||
skip = 0 |
skip = 0 |
||
str = mw.ustring.gsub(str, "^%D+", "") |
|||
end |
end |
||
return {skip, mw.ustring.gsub( |
return {skip, mw.ustring.gsub(str, "([年月])0?(%d+)", "%1<span class=\"countdown-num\">%2</span>")} |
||
end |
end |
||
function cell( |
function cell(str) |
||
local property, value = mw.ustring.match(str, "([^|]*)|(.*)") |
|||
return {property, value or str} |
|||
end |
end |
||
function |
function span(str) |
||
return mw.ustring.match(str, "rowspan%s*=%s*[\"\']?(%d+)") or 1 |
|||
end |
end |
||
]]-- |
|||
function p.main(frame) |
function p.main(frame) |
||
local args = getArgs(frame, {removeBlanks = false}) |
local args = getArgs(frame, {removeBlanks = false}) |
||
local result = "{|class=\"wikitable radio-list"..(args.comment and " radio-with-comment" or "").."\"\n!#!!配信日期" |
|||
local ncols = 2 + (args.comment and 1 or 0) |
|||
local ncvcols = 2 |
|||
local cvcols = args.cvcols and mw.text.split(args.cvcols, "、") or {} |
|||
for k,v in ipairs(cvcols) do |
|||
⚫ | |||
local cvcols = mw.text.split(args.cvcols, "、") |
|||
ncvcols = ncvcols + 1 |
|||
for k,v in ipairs(cvcols) do |
|||
result = result.."!!"..v |
|||
⚫ | |||
⚫ | |||
⚫ | |||
end |
end |
||
result = result.."!!视频资料"..(args.comment and "!!備註" or "") |
result = result.."!!视频资料"..(args.comment and "!!備註" or "") |
||
local id = args.start or 1 |
local id = args.start or 1 |
||
local rowspan = {} |
|||
for k,v in ipairs(args) do |
for k,v in ipairs(args) do |
||
local i = k % ncols |
local i = k % ncols |
||
if i == 1 then |
if i == 1 then |
||
local date = date(v) |
|||
result = result.."\n|-\n|"..(date[1] == 1 and id or "<div style=\"text-align:center\">–</div>").."||"..date[2] |
result = result.."\n|-\n|"..(date[1] == 1 and id or "<div style=\"text-align:center\">–</div>").."||"..date[2] |
||
id = id + date[1] |
id = id + date[1] |
||
elseif (i > 1 and i < ncvcols) then |
elseif (i > 1 and i < ncvcols) then |
||
rowspan[i] = rowspan[i] or 0 |
|||
⚫ | |||
if rowspan[i] > 0 then |
|||
rowspan[i] = rowspan[i] - 1 |
|||
else |
|||
local td = cell(v) |
|||
if td[1] then |
|||
rowspan[i] = span(td[1]) - 1 |
|||
end |
|||
if td[1] or td[2] == "" then |
|||
⚫ | |||
(td[2] == "" and "class=\"table-none\"| " or ("|".. |
|||
frame:expandTemplate{title = "memberlink/cv", args = mw.text.split(v, "、")})) |
|||
else |
|||
⚫ | |||
end |
|||
⚫ | |||
elseif i == ncvcols then |
elseif i == ncvcols then |
||
local video = string.match(v, "[%l%u%d]+") |
local video = string.match(v, "[%l%u%d]+") |
||
result = result.."||"..(video and "[https://www.bilibili.com/video/"..video.." "..v.."]" or "–") |
result = result.."||"..(video and "[https://www.bilibili.com/video/"..video.." "..v.."]" or "–") |
||
elseif i == 0 then |
elseif i == 0 then |
||
rowspan[i] = rowspan[i] or 0 |
|||
if rowspan[i] > 0 then |
|||
rowspan[i] = rowspan[i] - 1 |
|||
else |
|||
local td = cell(v) |
|||
if td[1] then |
|||
rowspan[i] = span(td[1]) - 1 |
|||
end |
|||
result = result.."||"..(td[1] and td[1].."|" or "")..td[2] |
|||
end |
|||
end |
end |
||
end |
end |
||
return result.."\n|}" |
return result.."\n|}" |
||
end |
end |
||
2020年10月10日 (六) 07:26的版本
local getArgs = require('Module:Arguments').getArgs local p = {} function date(str) local skip = 1 if str:sub(1, 1) == 's' then skip = 0 str = mw.ustring.gsub(str, "^%D+", "") end return {skip, mw.ustring.gsub(str, "([年月])0?(%d+)", "%1<span class=\"countdown-num\">%2</span>")} end function cell(str) local property, value = mw.ustring.match(str, "([^|]*)|(.*)") return {property, value or str} end function span(str) return mw.ustring.match(str, "rowspan%s*=%s*[\"\']?(%d+)") or 1 end function p.main(frame) local args = getArgs(frame, {removeBlanks = false}) local result = "{|class=\"wikitable radio-list"..(args.comment and " radio-with-comment" or "").."\"\n!#!!配信日期" local ncols = 2 + (args.comment and 1 or 0) local ncvcols = 2 local cvcols = args.cvcols and mw.text.split(args.cvcols, "、") or {} for k,v in ipairs(cvcols) do ncols = ncols + 1 ncvcols = ncvcols + 1 result = result.."!!"..v end result = result.."!!视频资料"..(args.comment and "!!備註" or "") local id = args.start or 1 local rowspan = {} for k,v in ipairs(args) do local i = k % ncols if i == 1 then local date = date(v) result = result.."\n|-\n|"..(date[1] == 1 and id or "<div style=\"text-align:center\">–</div>").."||"..date[2] id = id + date[1] elseif (i > 1 and i < ncvcols) then rowspan[i] = rowspan[i] or 0 if rowspan[i] > 0 then rowspan[i] = rowspan[i] - 1 else local td = cell(v) if td[1] then rowspan[i] = span(td[1]) - 1 end if td[1] or td[2] == "" then result = result.."||"..(td[1] or "").. (td[2] == "" and "class=\"table-none\"| " or ("|".. frame:expandTemplate{title = "memberlink/cv", args = mw.text.split(v, "、")})) else result = result.."||"..frame:expandTemplate{title = "memberlink/cv", args = mw.text.split(v, "、")} end end elseif i == ncvcols then local video = string.match(v, "[%l%u%d]+") result = result.."||"..(video and "[https://www.bilibili.com/video/"..video.." "..v.."]" or "–") elseif i == 0 then rowspan[i] = rowspan[i] or 0 if rowspan[i] > 0 then rowspan[i] = rowspan[i] - 1 else local td = cell(v) if td[1] then rowspan[i] = span(td[1]) - 1 end result = result.."||"..(td[1] and td[1].."|" or "")..td[2] end end end return result.."\n|}" end return p