模块:沙盒:修订间差异
来自 LNN的:not(博客)?
更多操作
小无编辑摘要 |
小 导入1个版本:从分支站同步更改 标签:自动同步 |
||
| (未显示1个用户的3个中间版本) | |||
| 第1行: | 第1行: | ||
local p = {} | local p = {} | ||
local bit32 = require( | local libraryUtil = require("libraryUtil") | ||
local | local bit32 = require("bit32") | ||
local getArgs = require("Module:Arguments").getArgs | |||
function p. | function p._sts(str) | ||
libraryUtil.checkType("_sts", 1, str, "string") | |||
end | local bytes = { str:byte(1, #str) } | ||
local zero = false | |||
for i, byte in ipairs(bytes) do | |||
local bits | |||
if byte >= 0xf8 then error("bad utf-8 string in 'sts'") | |||
elseif byte >= 0xf0 then bits = bit32.band(byte, 0x07) | |||
elseif byte >= 0xe0 then bits = bit32.band(byte, 0x0f) | |||
elseif byte >= 0xc0 then bits = bit32.band(byte, 0x1f) | |||
elseif byte >= 0x80 then | |||
if zero then bits = bit32.band(byte, 0x3f) | |||
else bits = 0x40 | |||
end | |||
else bits = byte | |||
end | |||
zero = bits == 0 | |||
bits = bit32.rshift(bits, 1) | |||
bits = bit32.bor(bits, bit32.rshift(bits, 1)) | |||
bits = bit32.bor(bits, bit32.rshift(bits, 2)) | |||
bits = bit32.bor(bits, bit32.rshift(bits, 4)) | |||
bytes[i] = bit32.bxor(byte, bits) | |||
end | end | ||
return | return string.char(unpack(bytes)) | ||
end | end | ||
function p. | function p.sts(frame) | ||
local args = getArgs(frame) | |||
local input = mw.text.killMarkers(frame.args[1]) | |||
return p._sts(input) | |||
end | end | ||
function p.args( frame ) | function p.args(frame) | ||
return mw.text.nowiki( mw.text.jsonEncode( frame.args ) ) | return mw.text.nowiki(mw.text.jsonEncode(frame.args)) | ||
end | end | ||
p | function p.getargs(frame) | ||
return | return mw.text.nowiki(mw.text.jsonEncode(getArgs(frame))) | ||
end | end | ||
return p | return p | ||
2024年11月26日 (二) 21:49的最新版本
脚本错误:Lua错误:无法创建进程:proc_open(/dev/null): Failed to open stream: Operation not permitted
local p = {}
local libraryUtil = require("libraryUtil")
local bit32 = require("bit32")
local getArgs = require("Module:Arguments").getArgs
function p._sts(str)
libraryUtil.checkType("_sts", 1, str, "string")
local bytes = { str:byte(1, #str) }
local zero = false
for i, byte in ipairs(bytes) do
local bits
if byte >= 0xf8 then error("bad utf-8 string in 'sts'")
elseif byte >= 0xf0 then bits = bit32.band(byte, 0x07)
elseif byte >= 0xe0 then bits = bit32.band(byte, 0x0f)
elseif byte >= 0xc0 then bits = bit32.band(byte, 0x1f)
elseif byte >= 0x80 then
if zero then bits = bit32.band(byte, 0x3f)
else bits = 0x40
end
else bits = byte
end
zero = bits == 0
bits = bit32.rshift(bits, 1)
bits = bit32.bor(bits, bit32.rshift(bits, 1))
bits = bit32.bor(bits, bit32.rshift(bits, 2))
bits = bit32.bor(bits, bit32.rshift(bits, 4))
bytes[i] = bit32.bxor(byte, bits)
end
return string.char(unpack(bytes))
end
function p.sts(frame)
local args = getArgs(frame)
local input = mw.text.killMarkers(frame.args[1])
return p._sts(input)
end
function p.args(frame)
return mw.text.nowiki(mw.text.jsonEncode(frame.args))
end
function p.getargs(frame)
return mw.text.nowiki(mw.text.jsonEncode(getArgs(frame)))
end
return p