Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Module:Lyrics: Difference between revisions

From Sekaipedia
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 = {}


function p.main(frame)
local args = frame:getParent().args


function p.main(frame)
local root = mw.html.create('table'):addClass('wikitable')
local args = getArgs(frame)

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 = {}
}
}
for k,v in pairs(args) do
local id = args['id'] or '1'
local columnOrder = args['columnOrder']
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
local columns = stringToArray(',')(columnOrder)
for _,lang in pairs(languages) do
maxLen = math.max(maxLen, #lang.lyrics)
end
local _row = root:tag('tr')
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)
for _,column in ipairs(columns) do
root:tag('td')
: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) ..
local _row = root:tag('tr')
string.format('<table class="wikitable" id="lyrics-%s">', id) ..
tostring(row)
local nextContent = nil
end
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 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)
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
Cookies help us deliver our services. By using our services, you agree to our use of cookies.