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

Module:Photrans

贴贴♀百科,万娘皆可贴的百科全书!转载请标注来源页面的网页链接,并声明引自贴贴百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
  1. local p = {}
  2. local getArgs = require('module:arguments').getArgs
  3. function main(args)
  4. local rb = args[1]
  5. local rt = args[2]
  6. local rt2 = args[3]
  7. local newrb = ''
  8. local newrt = ''
  9. if rt then
  10. local lrb = mw.ustring.len(rb)
  11. local lrt = mw.ustring.len(rt)
  12. local diff = lrt * 0.75 - lrb
  13. local space = ''
  14. local important = rt2 and '!important' or ''
  15. if diff > 0 then
  16. space = tostring(math.floor(diff / (lrb + 1) * 1000) / 1000)..'em'
  17. newrb = '<span style="margin-left:'..space..important..';letter-spacing:'..space..important..'">'..rb..'</span>'
  18. newrt = rt
  19. else
  20. space = tostring(math.floor(-diff / (lrt + 1) / 0.75 * 1000) / 1000)..'em'
  21. newrb = rb
  22. newrt = '<span style="margin-left:'..space..';letter-spacing:'..space..'">'..rt..'</span>'
  23. end
  24. else
  25. newrb = rb
  26. newrt = '<span class="photrans-s">'..rb..'</span>'
  27. end
  28. return newrb, newrt, rt2
  29. end
  30. function p.one(frame)
  31. local args = getArgs(frame)
  32. local rb = args[1] or ''
  33. local rt = args[2] or '&nbsp;'
  34. return '<ruby><rb>'..rb..'</rb><rt'..(args[2] and '>' or ' class="photrans-s">')..
  35. (args.on and rt or '<span>'..rt..'</span>')..'</rt></ruby>'
  36. end
  37. function p.multi(frame)
  38. local args = getArgs(frame)
  39. local fullrb = ''
  40. local fullrt = ''
  41. local flag = false
  42. local fullrt2 = '<span class="photrans-off">'
  43. for k, v in ipairs(args) do
  44. local eachArg = mw.text.split(v, '_')
  45. if args.on then
  46. eachArg[3] = true
  47. end
  48. local newrb, newrt, rt2 = main(eachArg)
  49. fullrb = fullrb..newrb
  50. fullrt = fullrt..newrt
  51. flag = flag or rt2
  52. fullrt2 = fullrt2..(rt2 and newrt or '<span class="photrans-s">'..eachArg[1]..'</span>')
  53. end
  54. fullrt2 = fullrt2..'</span>'
  55. return '<ruby><rb>'..fullrb..'</rb><rt><span>'..fullrt..'</span>'..(flag and fullrt2 or '')..'</rt></ruby>'
  56. end
  57. return p