Module:Oldpuabox:修订间差异
创建页面,内容为“local p = {} local getArgs = require('Module:Arguments').getArgs function p.str2codelist(strin) --转换字符串到unicode码位构成的数组,仅支持第一平面字符 local listout={} local strk=1 local listk=1 while strk <= #strin do if(math.modf(string.byte(strin,1)/16)==14)then listk=listk+1 strk=strk+3 listout[listk]=(string.byte(strin,1)-224)*4096+(string.byte(strin,2)-128)*64+(string.by…” |
无编辑摘要 标签:已被回退 |
||
第45行: | 第45行: | ||
end | end | ||
end | end | ||
return frame:preprocess( | return frame:preprocess(args[1]) --预处理包含的oldpua模板 | ||
end | end | ||
return p | return p |
2023年4月16日 (日) 16:15的版本
此模块的文档可以在Module:Oldpuabox/doc创建
local p = {}
local getArgs = require('Module:Arguments').getArgs
function p.str2codelist(strin) --转换字符串到unicode码位构成的数组,仅支持第一平面字符
local listout={}
local strk=1
local listk=1
while strk <= #strin do
if(math.modf(string.byte(strin,1)/16)==14)then
listk=listk+1
strk=strk+3
listout[listk]=(string.byte(strin,1)-224)*4096+(string.byte(strin,2)-128)*64+(string.byte(strin,3)-128)
elseif(math.modf(string.byte(strin,1)/32)==6)then
listk=listk+1
strk=strk+2
listout[listk]=(string.byte(strin,1)-192)*64+(string.byte(strin,2)-128)
else
listk=listk+1
strk=strk+1
listout[listk]=string.byte(strin,1)
end
end
return listout
end
function p.code2str(codein) --转换unicode码位到对应字符,仅支持第一平面字符
if(codein>=2048)then
return string.char(224+math.modf(codein/4096),128+math.modf((codein%4096)/64),128+codein%64)
elseif(codein>=128)then
return string.char(192+math.modf(codein/64),128+codein%64)
else
return string.char(codein)
end
end
function p.addsprite(frame) --转换字符中旧pua的部分为sprite图
local args = getArgs(frame)
local list = p.str2codelist(args[1])
local out = ""
for k,v in ipairs(list)do
if(v>=57344 and v<=60159)then --在sprite支持的范围
out=out.."{{Oldpua|"..p.code2str(v).."}"
else
out=out..p.code2str(v)
end
end
return frame:preprocess(args[1]) --预处理包含的oldpua模板
end
return p