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

Module:Mjs

贴贴♀百科,万娘皆可贴的百科全书!转载请标注来源页面的网页链接,并声明引自贴贴百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
  1. alias = {
  2. ["0m"] = "5m*", ["0p"] = "5p*", ["0s"] = "5s*", ["0z"] = "5z*",
  3. Em = "3m*", Ep = "3p*", Es = "3s*",
  4. Zs = "2s", Rs = "3s",
  5. ton = "1z", azuma = "1z", dong = "1z",
  6. nan = "2z", minami = "2z",
  7. sha = "3z", shaa = "3z", nishi = "3z", xi = "3z",
  8. pe = "4z", pee = "4z", pei = "4z", hoku = "4z", bei = "4z",
  9. haku = "5z", shiro = "5z", bai = "5z", baiban = "5z", ["8z"] = "5z",
  10. hatsu = "6z", fa = "6z", ao = "6z", Bz = "6z",
  11. chung = "7z", zhong = "7z", hongzhong = "7z",
  12. ["9z"] = "#",
  13. haru = "1k", chun = "1k",
  14. natsu = "2k", xia = "2k",
  15. aki = "3k", qiu = "3k",
  16. fuyu = "4k", Dong = "4k",
  17. ume = "5k", mei = "5k",
  18. ran = "6k", lan = "6k",
  19. take = "7k", zhu = "7k",
  20. kiku = "8k", ju = "8k",
  21. ["9k"] = "#"
  22. }
  23. return {
  24. main = function(frame)
  25. local s = frame.args[1]
  26. local l = s:len()
  27. local rot = false -- rotate
  28. local rpl = false -- rotate plus
  29. local red = false
  30. local cyan = false
  31. if l == 1 then
  32. return "🀫"
  33. end
  34. local flag = true
  35. while flag do -- handle tags
  36. flag = false
  37. if s:sub(l, l) == "r" then
  38. s = s:sub(1, l - 1)
  39. rot = true
  40. flag = true
  41. l = l - 1
  42. end
  43. if s:sub(l, l) == "j" then
  44. s = s:sub(1, l - 1)
  45. rpl = true
  46. flag = true
  47. l = l - 1
  48. end
  49. if (l >= 6 and
  50. (s:sub(l - 3, l) == "_aka"
  51. or s:sub(l - 3, l) == "_red"))
  52. then
  53. s = s:sub(1, l - 4)
  54. red = true
  55. flag = true
  56. l = l - 4
  57. end
  58. if (l >= 6 and
  59. (s:sub(l - 2, l) == "_ao"
  60. or s:sub(l - 4, l) == "_cyan"))
  61. then
  62. s = s:sub(1, l - 4)
  63. cyan = true
  64. flag = true
  65. l = l - 4
  66. end
  67. if (l >= 5 and s:sub(l - 2, l) == "_gb") then -- do nothing here
  68. s = s:sub(1, l - 3)
  69. flag = true
  70. l = l - 3
  71. end
  72. end -- handle tags end
  73. if alias[s] then
  74. s = alias[s]
  75. end
  76. l = s:len()
  77. if l == 1 then
  78. return '<span class = "hai">&#127019;</span>'
  79. end
  80. if l == 3 and s:sub(l, l) == "*" then
  81. red = true
  82. s = s:sub(1, 2)
  83. l = 2
  84. end
  85. if l == 3 and s:sub(l, l) == "^" then
  86. cyan = true
  87. s = s:sub(1, 2)
  88. l = 2
  89. end
  90. local red_id = -1
  91. if rpl and l == 3 then
  92. if s:sub(1, 1) == "0" then
  93. s = "5" .. s:sub(3, 3)
  94. red_id = 1
  95. elseif s:sub(2, 2) == "0" then
  96. s = "5" .. s:sub(3, 3)
  97. red_id = 2
  98. elseif s:sub(1, 1) == "E" then
  99. s = "3" .. s:sub(3, 3)
  100. red_id = 1
  101. elseif s:sub(2, 2) == "E" then
  102. s = "3" .. s:sub(3, 3)
  103. red_id = 2
  104. end
  105. l = 2
  106. end
  107. if l ~= 2 then
  108. return '<strong class = "error">错误格式</strong>'
  109. end
  110. local suit = s:sub(l, l)
  111. local id = s:sub(1, l-1)
  112. local ret
  113. local real_id = tonumber(id)
  114. if not real_id then
  115. return '<strong class = "error">错误格式</strong>'
  116. end
  117. if suit == "m" then
  118. ret = ("&#%d;"):format(126982+real_id)
  119. elseif suit == "p" then
  120. ret = ("&#%d;"):format(127000+real_id)
  121. elseif suit == "s" then
  122. ret = ("&#%d;"):format(126991+real_id)
  123. elseif suit == "z" then
  124. if real_id > 4 then
  125. real_id = 12 - real_id -- 7 -> 5; 5 -> 7; 6 -> 6
  126. end
  127. ret = ("&#%d;"):format(126975+real_id)
  128. elseif suit == "k" then
  129. if real_id > 4 then
  130. real_id = real_id - 4
  131. else
  132. real_id = real_id + 4
  133. end
  134. ret = ("&#%d;"):format(127009+real_id)
  135. else
  136. return '<strong class = "error">错误格式</strong>'
  137. end
  138. if red then
  139. ret = '<span class = "aka" style="color:red" title = "赤宝牌">'..ret..'</span>'
  140. elseif cyan then
  141. ret = '<span class = "ao" style="color:cyan" title = "青宝牌">'..ret..'</span>'
  142. else
  143. ret = '<span class = "normal">'..ret..'</span>'
  144. end
  145. if rot then
  146. local obj = mw.html.create("span")
  147. obj:addClass("naki"):tag("span"):addClass("rotate"):wikitext(ret)
  148. ret = tostring(obj)
  149. elseif rpl then
  150. local obj = mw.html.create("span")
  151. obj:addClass("kakan")
  152. local ret1 = ret
  153. local ret2 = ret
  154. if red_id == 1 then
  155. ret1 = '<span class = "aka" style="color:red" title = "赤宝牌">'..ret..'</span>'
  156. elseif red_id == 2 then
  157. ret2 = '<span class = "aka" style="color:red" title = "赤宝牌">'..ret..'</span>'
  158. end
  159. obj:tag("span"):addClass("naki"):tag("span"):addClass("rotate"):wikitext(ret1)
  160. obj:tag("span"):addClass("naki"):tag("span"):addClass("rotate"):wikitext(ret2)
  161. ret = tostring(obj)
  162. end
  163. return ret
  164. end
  165. }