LLWiki正在建设中,欢迎加入我们!
Module:Radio-list:修订间差异
跳转到导航
跳转到搜索
删除的内容 添加的内容
无编辑摘要 |
解决colspan和rowspan撞到一起的时候缩进错误的bug:What a Wonderful Radio!!#节目表第92行 |
||
(未显示2个用户的12个中间版本) | |||
第16行: | 第16行: | ||
end |
end |
||
function |
function rspan(str) |
||
return mw.ustring.match(str, "rowspan%s*=%s*[\"\']?(%d+)") or 1 |
return mw.ustring.match(str, "rowspan%s*=%s*[\"\']?(%d+)") or 1 |
||
end |
|||
function cspan(str) |
|||
return mw.ustring.match(str, "colspan%s*=%s*[\"\']?(%d+)") or 1 |
|||
end |
|||
function ktype(str) |
|||
local key = str:sub(1, 2) |
|||
if key == "cv" or key == "CV" then |
|||
return "read" |
|||
elseif key == "BV" or key == "bv" or key == "AV" or key == "av" then |
|||
return "video" |
|||
end |
|||
end |
end |
||
第34行: | 第47行: | ||
local id = args.start or 1 |
local id = args.start or 1 |
||
local rowspan = {} |
local rowspan = {} |
||
local colspan = 0 |
|||
local urlcol = tonumber(args.urlcol) |
local urlcol = tonumber(args.urlcol) |
||
for k,v in ipairs(args) do |
for k,v in ipairs(args) do |
||
第39行: | 第53行: | ||
if i == 1 then |
if i == 1 then |
||
local date = date(v) |
local date = date(v) |
||
result = result.."\n|-\n|"..(date[1] == 1 and id or "style=\"text-align:center\"|–").." |
result = result.."\n|-\n|"..(date[1] == 1 and id or "style=\"text-align:center\"|–").."\n|"..date[2] |
||
id = id + date[1] |
id = id + date[1] |
||
colspan = 0 |
|||
else |
else |
||
rowspan[i] = rowspan[i] or 0 |
rowspan[i] = rowspan[i] or 0 |
||
if rowspan[i] > 0 then |
if rowspan[i] > 0 then |
||
rowspan[i] = rowspan[i] - 1 |
rowspan[i] = rowspan[i] - 1 |
||
if colspan > 0 then |
|||
colspan = colspan - 1 |
|||
end |
|||
elseif colspan > 0 then |
|||
colspan = colspan - 1 |
|||
else |
else |
||
local td = cell(v) |
local td = cell(v) |
||
if td[1] then |
if td[1] then |
||
rowspan[i] = |
rowspan[i] = rspan(td[1]) - 1 |
||
colspan = cspan(td[1]) - 1 |
|||
end |
end |
||
if i == (ncvcols % ncols) then |
if i == (ncvcols % ncols) then |
||
result = result.."\n|"..(td[1] or "") |
|||
if td[2] then |
|||
result = result.." |" |
|||
for index,value in ipairs(mw.text.split(td[2], ";")) do |
|||
local video = string.match(value, "^[%l%u%d]+") |
|||
local link = string.match(value, "^[%l%u%d%p]+") |
|||
local label = mw.ustring.match(value, "【(.+)】") |
|||
result = result..(video and |
|||
"<div class=\"video-link\">[https://www.bilibili.com/video/"..link.." "..video.."]"..(label or "").."</div>" |
|||
or "") |
|||
end |
|||
else |
|||
result = result.." style=\"text-align:center\"|–" |
|||
end |
|||
elseif i == 0 then |
elseif i == 0 then |
||
result = result.." |
result = result.."\n|"..(td[1] and td[1].."|" or "")..td[2] |
||
elseif i == urlcol then |
elseif i == urlcol then |
||
result = result.." |
result = result.."\n|"..(td[1] or "").. |
||
(td[2] == "" and " | |
(td[2] == "" and " |" or " |<div class=\"video-link\">[https://www.bilibili.com/"..ktype(td[2]).."/"..td[2].." "..td[2].."]</div>") |
||
else |
else |
||
result = result.." |
result = result.."\n|"..(td[1] or "").. |
||
(td[2] == "" and " class=\"table-none\"| " or |
(td[2] == "" and " class=\"table-none\"| " or |
||
(" |"..frame:expandTemplate{title = "memberlink/cv", args = mw.text.split(td[2], "、")})) |
(" |"..frame:expandTemplate{title = "memberlink/cv", args = mw.text.split(td[2], "、")})) |
2024年1月10日 (三) 00:18的版本
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 rspan(str)
return mw.ustring.match(str, "rowspan%s*=%s*[\"\']?(%d+)") or 1
end
function cspan(str)
return mw.ustring.match(str, "colspan%s*=%s*[\"\']?(%d+)") or 1
end
function ktype(str)
local key = str:sub(1, 2)
if key == "cv" or key == "CV" then
return "read"
elseif key == "BV" or key == "bv" or key == "AV" or key == "av" then
return "video"
end
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 = {}
local colspan = 0
local urlcol = tonumber(args.urlcol)
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 "style=\"text-align:center\"|–").."\n|"..date[2]
id = id + date[1]
colspan = 0
else
rowspan[i] = rowspan[i] or 0
if rowspan[i] > 0 then
rowspan[i] = rowspan[i] - 1
if colspan > 0 then
colspan = colspan - 1
end
elseif colspan > 0 then
colspan = colspan - 1
else
local td = cell(v)
if td[1] then
rowspan[i] = rspan(td[1]) - 1
colspan = cspan(td[1]) - 1
end
if i == (ncvcols % ncols) then
result = result.."\n|"..(td[1] or "")
if td[2] then
result = result.." |"
for index,value in ipairs(mw.text.split(td[2], ";")) do
local video = string.match(value, "^[%l%u%d]+")
local link = string.match(value, "^[%l%u%d%p]+")
local label = mw.ustring.match(value, "【(.+)】")
result = result..(video and
"<div class=\"video-link\">[https://www.bilibili.com/video/"..link.." "..video.."]"..(label or "").."</div>"
or "")
end
else
result = result.." style=\"text-align:center\"|–"
end
elseif i == 0 then
result = result.."\n|"..(td[1] and td[1].."|" or "")..td[2]
elseif i == urlcol then
result = result.."\n|"..(td[1] or "")..
(td[2] == "" and " |" or " |<div class=\"video-link\">[https://www.bilibili.com/"..ktype(td[2]).."/"..td[2].." "..td[2].."]</div>")
else
result = result.."\n|"..(td[1] or "")..
(td[2] == "" and " class=\"table-none\"| " or
(" |"..frame:expandTemplate{title = "memberlink/cv", args = mw.text.split(td[2], "、")}))
end
end
end
end
return result.."\n|}"
end
return p