Module:Sandbox/ChaoticShadow/SongDataLine: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
(24 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
local p = {} |
local p = {} |
||
local args = {} |
local args = {} |
||
local root = mw.html.create('table'):addClass('wikitable') |
|||
function p.main(frame) |
function p.main(frame) |
||
args = getArgs(frame) |
args = getArgs(frame) |
||
return mw.text.jsonEncode(args) |
|||
languages = { |
|||
{ |
|||
name = "jp", |
|||
pattern = "^jp[0-9]+$", |
|||
lyrics = {} |
|||
}, |
|||
{ |
|||
name = "en", |
|||
pattern = "^en[0-9]+$", |
|||
lyrics = {} |
|||
} |
|||
} |
|||
for k,v in pairs(args) do |
|||
for _,lang in ipairs(languages) do |
|||
if string.match(k, lang.pattern) then |
|||
ind = tonumber(string.match(k, "[0-9]+")) |
|||
lang.lyrics[ind] = v |
|||
break |
|||
end |
|||
end |
|||
end |
|||
local maxLen = 0 |
|||
for _,lang in pairs(languages) do |
|||
maxLen = math.max(maxLen, #lang.lyrics) |
|||
end |
|||
local _row = root:tag('tr') |
|||
for _,lang in ipairs(languages) do |
|||
_row:tag('th'):css('width', string.format("%d\%%", 100 / #languages)):wikitext(lang.name) |
|||
end |
|||
for i=1,maxLen,1 do |
|||
local _row = root:tag('tr') |
|||
local nextContent = nil |
|||
for _,lang in ipairs(languages) do |
|||
local content = "temp" |
|||
_row:tag('td'):wikitext(content) |
|||
if lang.lyrics[i] ~= "" then |
|||
content = lang.lyrics[i] |
|||
end |
|||
mw.log(content) |
|||
_row:tag('td'):wikitext(content) |
|||
nextContent = lang.lyrics[i+1] or nextContent |
|||
end |
|||
if nextContent == nil then |
|||
break |
|||
end |
|||
end |
|||
return tostring(root) .. mw.dumpObject(args) .. mw.dumpObject(languages) |
|||
end |
end |
||
Latest revision as of 04:19, 9 August 2021
Documentation for this module may be created at Module:Sandbox/ChaoticShadow/SongDataLine/doc