本网站正在建设中(~ ̄▽ ̄)~
- 你好~!欢迎来到中文歌声合成个人收集站-VCPedia.cn!
- 若发现页面信息有误或投稿至本站,请联系管理员。
Module:Lyrics
跳到导航
跳到搜索
- local p = {}
- local getArgs = require('Module:Arguments').getArgs
- local lang = require('Module:Lang')
- function p._lyrics(args, hookTrigger, customArgs)
- local original = args.original or ''
- local translated = args.translated or ''
- if hookTrigger then
- original, translated = hookTrigger('preSplit', original, translated, customArgs)
- end
- --mw.text.split的效率太低啦,我愿称之为shit
- local orig = {}
- local iter = mw.ustring.gmatch(original..'\n', '([^\n]*)\n')
- for val in iter do
- table.insert(orig, val)
- end
- local tran = {}
- local iter = mw.ustring.gmatch(translated..'\n', '([^\n]*)\n')
- for val in iter do
- table.insert(tran, val)
- end
- local llang = args.llang or 'ja'
- local rlang = args.rlang or 'zh'
- local lstyle = args.lstyle or ''
- local rstyle = args.rstyle or ''
- local html = mw.html.create('div')
- :addClass('Lyrics')
- :css('width', args.width)
- :cssText(args.containerstyle or '')
- if ((args['hasRuby'] or '') ~= '') or (not args.colorsMode and (args.original or ''):find('<ruby')) then
- html:addClass('Lyrics-has-ruby')
- else
- html:addClass('Lyrics-no-ruby')
- end
- local hastran = true
- if #tran == 1 and tran[1] == '' then
- hastran = false
- else
- html:addClass('Lyrics-has-translate')
- end
- if hookTrigger then
- hookTrigger('preParse', orig, hastran and tran or false, customArgs)
- end
- local lines = {}
- local len = math.max(#orig, #tran)
- for i=1, len do
- local line = mw.html.create('div'):addClass('Lyrics-line')
- :tag('div')
- :addClass('Lyrics-original')
- :cssText(lstyle)
- :node(lang.wrap(orig[i] or '', llang))
- :done()
- if hastran then
- line:tag('div')
- :addClass('Lyrics-translated')
- :cssText(rstyle)
- :node(lang.wrap(tran[i] or '', rlang))
- :done()
- end
- table.insert(lines, tostring(line))
- end
- if hookTrigger then
- hookTrigger('postParse', lines, customArgs)
- end
- html:node(table.concat(lines))
- -- Clear the floating
- html:tag('div'):cssText('clear:both')
- html = tostring(html)
- if hookTrigger then
- html = hookTrigger('preOutput', html, customArgs)
- end
- local copyright = ''
- local frame = mw.getCurrentFrame()
- local LDC = frame:callParserFunction{ name = '#var', args = { 'LDC', '0' } }
- if LDC ~= '1' and args.override ~= '1' then
- copyright = '<small>本段落中所使用的歌词,其著作权属于' .. (args.author or '原著作权人') .. ',仅以介绍为目的引用。</small>'
- elseif LDC == '1' and args.override == '1' then
- copyright = frame:expandTemplate{ title = 'ac', args = { '不必要使用override参数的音乐条目' } }
- end
- local css = frame:extensionTag{ name = 'templatestyles', args = { src = 'Template:LyricsKai/styles.css' } }
- return copyright .. css .. html
- end
- function p.lyrics(frame)
- local args = getArgs(frame, {wrappers='Template:LyricsKai'})
- return p._lyrics(args)
- end
- return p