Module:Lyrics: Difference between revisions

1,455 bytes added ,  2 months ago
no hover for songs without translations
(Created page with "-- This module is taken from https://zh.moegirl.org.cn/%E6%A8%A1%E5%9D%97:Lyrics. See its history page for attribution. -- This module is licensed under CC BY-NC-SA 3.0, which is different from other content on this wiki. Please note that changes -- made to this page are not licensed under CC BY-SA 4.0. local p = {} local getArgs = require('Module:Arguments').getArgs local lang = require('Module:Lang') function p._lyrics(args, hookTrigger, customArgs) local original...")
 
(no hover for songs without translations)
 
(6 intermediate revisions by the same user not shown)
Line 1:
-- This module is takenadapted from https://zh.moegirl.org.cn/%E6%A8%A1%E5%9D%97Module:Lyrics and https://zh.moegirl.org.cn/Module:Lyrics/Roma. See itstheir history pagepages for attribution.
-- This module is licensed under CC BY-NC-SA 3.0, which is different from other content on this wiki. Please note that changes
-- made to this page are not licensed under CC BY-SA 4.0.
Line 36:
:css('width', args.width)
:cssText(args.containerstyle or '')
local hover = args.hover or (translated == '' and "false" or "true")
if hover == "true" then
hover = true
html:addClass("Lyrics-hover")
end
 
if ((args['hasRuby'] or '') ~= '') or (not args.colorsMode and (args.original or ''):find('<ruby')) then
Line 52 ⟶ 58:
if hookTrigger then
hookTrigger('preParse', orig, hastran and tran or false, customArgs)
end
-- special content ported from Module:Lyrics/Roma
local romaji_toggle = ""
if args.romaji then
local romaji = args.romaji
local furigana = {}
local iter = mw.ustring.gmatch(romaji..'\n', '([^\n]*)\n')
for val in iter do
table.insert(furigana, val)
end
local combined = {}
local romaji_name = args.name or "lyrics-romaji"
romaji_toggle = '<div style="float:right">[<span class="mw-customtoggle-' .. romaji_name ..'" style="color: rgb(6, 69, 173)">Toggle furigana</span>]</div>'
for i=1, #orig do
local furigana_line = furigana[i] or ""
-- the swear word is kept to honor the original author (User:实验性:无用论废人)
local fuck = '<ruby>' .. orig[i] .. '<rp>(</rp><rt style="font-size:0.75em"><span class="mw-collapsible mw-uncollapsed" id="mw-customcollapsible-' .. romaji_name .. '" style="">' .. furigana[i] .. '</span></rt><rp>)</rp></ruby>'
table.insert( combined , fuck )
end
-- replace original with the combined one
orig = combined
end
 
Line 57 ⟶ 85:
local len = math.max(#orig, #tran)
for i=1, len do
local line_original = orig[i] or ''
local line = mw.html.create('div'):addClass('Lyrics-line')
:tag('div')
:addClass('Lyrics-original')
:cssText(lstyle)
:node(lang.wrap(orig[i] or ''line_original, llang))
:done()
if hastran then
local line_translation = tran[i] or ''
line:tag('div')
:addClass('Lyrics-translated')
:cssText(rstyle)
:node(lang.wrap(tran[i] or ''line_translation, rlang))
:done()
if (hover and line_original == '' and line_translation == '') or string.find(line_translation, "#NoHover") then
line:addClass('Lyrics-line-nohover')
end
end
table.insert(lines, tostring(line))
Line 93 ⟶ 126:
local css = frame:extensionTag{ name = 'templatestyles', args = { src = 'Template:Lyrics/styles.css' } }
 
return romaji_toggle .. copyright .. css .. html
end