打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

模块:沙盒:修订间差异

来自 LNN的:not(博客)?
DGCK81LNN留言 | 贡献
无编辑摘要
LNNBot留言 | 贡献
导入1个版本:​从分支站同步更改
标签自动同步
 
(未显示1个用户的7个中间版本)
第1行: 第1行:
local p = {}
local p = {}
local bit32 = require( 'bit32' )
local libraryUtil = require("libraryUtil")
local bit32 = require("bit32")
local getArgs = require("Module:Arguments").getArgs


function p.hello(frame)
function p._sts(str)
return string.rep("Hello, world!\n\n", tonumber(frame.args[1] or 1))
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
end


function p.sts(frame)
function p.sts(frame)
return sts(frame.args[1])
local args = getArgs(frame)
local input = mw.text.killMarkers(frame.args[1])
return p._sts(input)
end
end


local function sts(str)
function p.args(frame)
local out = ""
return mw.text.nowiki(mw.text.jsonEncode(frame.args))
for codePoint in mw.ustring.gcodepoint(str) do
end
local shifter = -1
 
local temp = codePoint
function p.getargs(frame)
while bit32.band(temp, -2) ~= 0 do
return mw.text.nowiki(mw.text.jsonEncode(getArgs(frame)))
temp = bit32.rshift(temp, 1)
shifter = bit32.lshift(shifter, 1)
out = out .. mw.ustring.char(bit32.bxor(codePoint, bit32.bnot(shifter)))
end
end
return out
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