置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Module:Sandbox/D41D8CD98F/Lyrics

贴贴♀百科,万娘皆可贴的百科全书!转载请标注来源页面的网页链接,并声明引自贴贴百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
local p = {}

local getArgs = require('Module:Arguments').getArgs
local lang = require('Module:Lang')

function p._lyrics(args)
	local orig = mw.text.split(args.original or '', '\n')
	local tran = mw.text.split(args.translated or '', '\n')
	local llang = args.llang or 'ja'
	local rlang = args.rlang or 'zh'
	local lstyle = args.lstyle or ''
	local rstyle = args.rstyle or ''
	local containerstyle = args.containerstyle or ''

	if args.original:match('<ruby') then
		containerstyle = 'line-height:2.5;' .. containerstyle
	end

	local html = mw.html.create('div')
	html
		:addClass('Lyrics3')
		:cssText(containerstyle)

	for i=1,math.max(#orig, #tran) do
		if orig[i] == '' and tran[i] == '' then
			html:
				tag('div')
					:addClass('Lyrics3-line Lyrics3-empty-line')
					:tag('br')
		else
			html:
				tag('div')
					:addClass('Lyrics3-line')
					:tag('div')
						:addClass('Lyrics3-original')
						:cssText(lstyle)
						:tag('div')
							:node(lang.wrap(orig[i] or '', llang))
							:done()
						:done()
					:tag('div')
						:addClass('Lyrics3-translated')
						:cssText(rstyle)
						:tag('div')
							:node(lang.wrap(tran[i] or '', rlang))
							:done()
						:done()
		end
	end

	return tostring(html)
end

function p.lyrics(frame)
	local args = getArgs(frame, {parentOnly = true})
	return p._lyrics(args)
end

return p