跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
社群首页
帮助
希顶相关网站
希顶社区官网
(原作)希顶翻译器
〇改希顶转写器
希顶模组服务器
搜索
搜索
创建账号
登录
个人工具
创建账号
登录
查看“Module:Links”的源代码
模块
讨论
English
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
←
Module:Links
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
local p = {} local getArgs = require('Module:Arguments').getArgs -- 将输入字符串转换为由 Unicode 码位构成的数组,仅支持第一平面字符 function p.str2codelist(strin) local listout = {} local strk = 1 local listk = 1 while strk <= #strin do -- 处理三字节 UTF-8 字符 if (math.modf(string.byte(strin, strk) / 16) == 14) then listout[listk] = (string.byte(strin, strk) - 224) * 4096 + (string.byte(strin, strk + 1) - 128) * 64 + (string.byte(strin, strk + 2) - 128) listk = listk + 1 strk = strk + 3 -- 处理二字节 UTF-8 字符 elseif (math.modf(string.byte(strin, strk) / 32) == 6) then listout[listk] = (string.byte(strin, strk) - 192) * 64 + (string.byte(strin, strk + 1) - 128) listk = listk + 1 strk = strk + 2 -- 单字节字符(ASCII 范围) else listout[listk] = string.byte(strin, strk) listk = listk + 1 strk = strk + 1 end end return listout end -- 将 Unicode 码位数组转换回 UTF-8 字符串 function p.codelist2str(unicodeCodes) local utf8Str = "" if #unicodeCodes > 0 then for _, code in ipairs(unicodeCodes) do -- 处理 ASCII 范围字符 if code <= 0x7F then utf8Str = utf8Str .. string.char(code) -- 处理二字节字符 elseif code <= 0x7FF then utf8Str = utf8Str .. string.char(0xC0 + math.floor(code / 64), 0x80 + (code % 64)) -- 处理三字节字符 else utf8Str = utf8Str .. string.char(0xE0 + math.floor(code / 4096), 0x80 + math.floor((code % 4096) / 64), 0x80 + (code % 64)) end end end return utf8Str end -- 生成复杂的链接表 function p.links(frame) local args = getArgs(frame) -- 计算 args 的长度 (由于某些神秘的原因不能用 #args) local count = 0 for _, v in ipairs(args) do count = count + 1 end local outstr = "" -- 遍历每个参数 for k, v in ipairs(args) do local strli = p.str2codelist(v) local flag = 0 local tag = "" local itag = "" -- 遍历字符转换后的 Unicode 码位 for k2, v2 in ipairs(strli) do if v2 == p.str2codelist("#")[1] then flag = 1 -- 识别分隔符 else -- 根据 flag 决定当前字符的标签存放位置 if flag == 0 then tag = tag .. p.codelist2str({v2}) else itag = itag .. p.codelist2str({v2}) end end end -- 组装输出字符串 if flag == 0 then outstr = outstr .. "[[" .. tag .. "]]" else outstr = outstr .. "[[" .. tag .. "|" .. itag .. "]]" end -- 添加分隔符 if k < count then outstr = outstr .. " • " end end return frame:preprocess(outstr) -- 预处理 wikitext 结果 end return p
该页面使用的模板:
Module:Links/doc
(
查看源代码
)
返回
Module:Links
。
开关有限宽度模式