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

Module:Ruby

猛汉♂百科,万男皆可猛的百科全书!转载请标注来源页面的网页链接,并声明引自猛汉百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
  1. local module = {}
  2. local g_frame
  3. function get_arg ( name, plain )
  4. if g_frame.args[name] and (mw.text.trim(g_frame.args[name]) ~= '' or plain) then
  5. return mw.text.trim(g_frame.args[name])
  6. end
  7. end
  8. function module.ruby ( frame )
  9. local parent = frame:getParent()
  10. if parent and (parent:getTitle() == "Template:Ruby" or parent:getTitle() == "Template:Ruby/Sandbox" or parent:getTitle() == "Template:沙盒") then
  11. frame = parent
  12. end
  13. g_frame = frame
  14. local args = {
  15. class = get_arg('class'),
  16. id = get_arg('id'),
  17. style = ( get_arg('style') or get_arg('css') ),
  18. rbclass = get_arg('rbclass'),
  19. rbid = get_arg('rbid'),
  20. rbsize = get_arg('rbsize'),
  21. rtclass = get_arg('rtclass'),
  22. rtid = get_arg('rtid'),
  23. rtsize = get_arg('rtsize'),
  24. rbtext = ( get_arg(1, true) or '{{{1}}}' ),
  25. rttext = ( get_arg(2, true) or '{{{2}}}' ),
  26. rblang = get_arg(3),
  27. }
  28. args.rtlang = get_arg(4) or args.rblang
  29. return module._ruby ( args, frame )
  30. end
  31. function module._ruby ( args, frame )
  32. local html = mw.html.create():tag('ruby')
  33. if args.class then html:addClass( args.class) end
  34. if args.id then html:attr('id', args.id) end
  35. if args.style then html:cssText(args.style) end
  36. local rb = html:tag('rb'):attr('data-id', 'template-ruby')
  37. if args.rbclass then rb:addClass(args.rbclass) end
  38. if args.rbid then rb:attr('id', args.rbid) end
  39. if args.rbsize then rb:css('font-size', args.rbsize) end
  40. if args.rblang then
  41. if frame then
  42. rb:wikitext( frame:expandTemplate{ title = 'lang', args = { args.rblang, args.rbtext } } )
  43. else
  44. rb:tag('span'):attr('lang', args.rblang):attr('xml:lang', args.rblang):wikitext(args.rbtext)
  45. end
  46. else
  47. rb:wikitext(args.rbtext)
  48. end
  49. rb:tag('span'):addClass('template-ruby-hidden'):wikitext('('):done()
  50. local rt = html:tag('rt')
  51. if args.rtclass then rt:addClass(args.rtclass) end
  52. if args.rtid then rt:attr('id', args.rtid) end
  53. if args.rtsize ~= '' then rt:css('font-size', (args.rtsize or '0.75em') ) end
  54. if args.rtlang then
  55. if frame then
  56. rt:wikitext( frame:expandTemplate{ title = 'lang', args = { args.rtlang, args.rttext } } )
  57. else
  58. rt:tag('span'):attr('lang', args.rtlang):attr('xml:lang', args.rtlang):wikitext(args.rttext)
  59. end
  60. else
  61. rt:wikitext(args.rttext)
  62. end
  63. html:tag('span'):addClass('template-ruby-hidden'):wikitext(')'):done()
  64. return tostring ( html )
  65. end
  66. return module