Module:Ruby
跳到导航
跳到搜索
local module = {} local g_frame function get_arg ( name, plain ) if g_frame.args[name] and (mw.text.trim(g_frame.args[name]) ~= '' or plain) then return mw.text.trim(g_frame.args[name]) end end function module.ruby ( frame ) local parent = frame:getParent() if parent and (parent:getTitle() == "Template:Ruby" or parent:getTitle() == "Template:Ruby/Sandbox" or parent:getTitle() == "Template:沙盒") then frame = parent end g_frame = frame local args = { class = get_arg('class'), id = get_arg('id'), style = ( get_arg('style') or get_arg('css') ), rbclass = get_arg('rbclass'), rbid = get_arg('rbid'), rbsize = get_arg('rbsize'), rtclass = get_arg('rtclass'), rtid = get_arg('rtid'), rtsize = get_arg('rtsize'), rbtext = ( get_arg(1, true) or '{{{1}}}' ), rttext = ( get_arg(2, true) or '{{{2}}}' ), rblang = get_arg(3), } args.rtlang = get_arg(4) or args.rblang return module._ruby ( args, frame ) end function module._ruby ( args, frame ) local html = mw.html.create():tag('ruby') if args.class then html:addClass( args.class) end if args.id then html:attr('id', args.id) end if args.style then html:cssText(args.style) end local rb = html:tag('rb'):attr('data-id', 'template-ruby') if args.rbclass then rb:addClass(args.rbclass) end if args.rbid then rb:attr('id', args.rbid) end if args.rbsize then rb:css('font-size', args.rbsize) end if args.rblang then if frame then rb:wikitext( frame:expandTemplate{ title = 'lang', args = { args.rblang, args.rbtext } } ) else rb:tag('span'):attr('lang', args.rblang):attr('xml:lang', args.rblang):wikitext(args.rbtext) end else rb:wikitext(args.rbtext) end rb:tag('span'):addClass('template-ruby-hidden'):wikitext('('):done() local rt = html:tag('rt') if args.rtclass then rt:addClass(args.rtclass) end if args.rtid then rt:attr('id', args.rtid) end if args.rtsize ~= '' then rt:css('font-size', (args.rtsize or '0.75em') ) end if args.rtlang then if frame then rt:wikitext( frame:expandTemplate{ title = 'lang', args = { args.rtlang, args.rttext } } ) else rt:tag('span'):attr('lang', args.rtlang):attr('xml:lang', args.rtlang):wikitext(args.rttext) end else rt:wikitext(args.rttext) end html:tag('span'):addClass('template-ruby-hidden'):wikitext(')'):done() return tostring ( html ) end return module