Content added Content deleted
(created lyrics module) |
(new version, split into subtemplates) |
||
Line 1: | Line 1: | ||
local getArgs = require('Module:Arguments').getArgs |
|||
local stringToArray = require('Module:ProcessingFunctions').stringToArray |
|||
local VariablesLua = mw.ext.VariablesLua |
|||
local p = {} |
local p = {} |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
languages = { |
|||
⚫ | |||
name = "Japanese Lyrics", |
|||
pattern = "^japanese[0-9]+$", |
|||
lyrics = {} |
|||
⚫ | |||
{ |
|||
name = "Romaji Lyrics", |
|||
pattern = "^romaji[0-9]+$", |
|||
lyrics = {} |
|||
}, |
|||
{ |
|||
name = " English Translation", |
|||
pattern = "^english[0-9]+$", |
|||
lyrics = {} |
|||
} |
|||
⚫ | |||
local id = args['id'] or '1' |
|||
local columnOrder = args['columnOrder'] |
|||
⚫ | |||
if string.match(k, lang.pattern) then |
|||
ind = tonumber(string.match(k, "[0-9]+")) |
|||
lang.lyrics[ind] = v |
|||
break |
|||
⚫ | |||
⚫ | |||
end |
|||
local |
local columns = stringToArray(',')(columnOrder) |
||
⚫ | |||
maxLen = math.max(maxLen, #lang.lyrics) |
|||
end |
|||
local |
local lyricsOptions = mw.html.create('div') |
||
:addClass('lyrics-options') |
|||
for _,lang in ipairs(languages) do |
|||
:attr('data-id', id) |
|||
_row:tag('th'):css('width', string.format("%d\%%", 100 / #languages)):wikitext(lang.name) |
|||
⚫ | |||
local row = mw.html.create('tr'):addClass('lyrics-row') |
|||
local columns = stringToArray(',')(columnOrder) |
|||
⚫ | |||
⚫ | |||
:addClass('lyrics-' .. column) |
|||
:attr('width', math.floor(100 / #columns) .. '%') |
|||
:wikitext(args[column]) |
|||
end |
end |
||
VariablesLua.vardefine('lyrics_column_order', columnOrder) |
|||
for i=1,maxLen,1 do |
|||
return tostring(lyricsOptions) .. |
|||
⚫ | |||
string.format('<table class="wikitable" id="lyrics-%s">', id) .. |
|||
tostring(row) |
|||
local nextContent = nil |
|||
⚫ | |||
for _,lang in ipairs(languages) do |
|||
local content = "<br />" |
|||
function p.line(frame) |
|||
if lang.lyrics[i] and lang.lyrics[i] ~= "''" and lang.lyrics[i] ~= '""' then |
|||
local function formatArg(arg) |
|||
content = lang.lyrics[i] |
|||
if arg and arg ~= '' then |
|||
end |
|||
return table.concat(stringToArray('\n')(arg), '<br>') |
|||
else |
|||
_row:tag('td'):wikitext(content) |
|||
return '<br>' |
|||
nextContent = lang.lyrics[i+1] or nextContent |
|||
end |
|||
if nextContent == nil then |
|||
break |
|||
end |
end |
||
end |
end |
||
local args = getArgs(frame) |
|||
⚫ | |||
local columnOrder = VariablesLua.var('lyrics_column_order', '') |
|||
local columns = stringToArray(',')(columnOrder) |
|||
⚫ | |||
⚫ | |||
root:tag('td') |
|||
:addClass('lyrics-' .. column) |
|||
:wikitext(formatArg(args[column]) |
|||
⚫ | |||
⚫ | |||
return tostring(root) |
return tostring(root) |
||
end |
end |
Revision as of 05:20, 14 April 2023
Documentation for this module may be created at Module:Lyrics/doc
local getArgs = require('Module:Arguments').getArgs
local stringToArray = require('Module:ProcessingFunctions').stringToArray
local VariablesLua = mw.ext.VariablesLua
local p = {}
function p.main(frame)
local args = getArgs(frame)
local id = args['id'] or '1'
local columnOrder = args['columnOrder']
local columns = stringToArray(',')(columnOrder)
local lyricsOptions = mw.html.create('div')
:addClass('lyrics-options')
:attr('data-id', id)
local row = mw.html.create('tr'):addClass('lyrics-row')
local columns = stringToArray(',')(columnOrder)
for _,column in ipairs(columns) do
root:tag('td')
:addClass('lyrics-' .. column)
:attr('width', math.floor(100 / #columns) .. '%')
:wikitext(args[column])
end
VariablesLua.vardefine('lyrics_column_order', columnOrder)
return tostring(lyricsOptions) ..
string.format('<table class="wikitable" id="lyrics-%s">', id) ..
tostring(row)
end
function p.line(frame)
local function formatArg(arg)
if arg and arg ~= '' then
return table.concat(stringToArray('\n')(arg), '<br>')
else
return '<br>'
end
end
local args = getArgs(frame)
local root = mw.html.create('tr'):addClass('lyrics-row')
local columnOrder = VariablesLua.var('lyrics_column_order', '')
local columns = stringToArray(',')(columnOrder)
for _,column in ipairs(columns) do
root:tag('td')
:addClass('lyrics-' .. column)
:wikitext(formatArg(args[column])
)
end
return tostring(root)
end
return p